Skip to content

Commit e2b878b

Browse files
committed
Setup reasonable defaults
This patch makes it simpler to setup reasonable defaults for a given platform. The standard library has many knobs for configuration purposes. This is great for providing cache files to configure specific builds, but the build system should still generally work if someone runs a minimal CMake invocation against the build without futzing with various options.
1 parent 03ba118 commit e2b878b

File tree

2 files changed

+26
-17
lines changed

2 files changed

+26
-17
lines changed

Runtimes/Core/CMakeLists.txt

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -55,23 +55,22 @@ include(EmitSwiftInterface)
5555
include(PlatformInfo)
5656
include(gyb)
5757

58-
option(SwiftCore_ENABLE_LIBRARY_EVOLUTION "Generate ABI resilient runtime libraries" OFF)
58+
defaulted_option(SwiftCore_ENABLE_LIBRARY_EVOLUTION "Generate ABI resilient runtime libraries")
5959

60-
option(SwiftCore_ENABLE_CRASH_REPORTER_CLIENT "Enable Apple CrashReporter integration" OFF)
61-
option(SwiftCore_ENABLE_OBJC_INTEROP "Enable runtime ObjC interop" OFF)
62-
option(SwiftCore_ENABLE_TYPE_PRINTING "Enable printing type names" OFF)
63-
option(SwiftCore_ENABLE_VECTOR_TYPES "Enable vector support" OFF)
60+
defaulted_option(SwiftCore_ENABLE_CRASH_REPORTER_CLIENT "Enable Apple CrashReporter integration")
61+
defaulted_option(SwiftCore_ENABLE_OBJC_INTEROP "Enable runtime ObjC interop")
62+
defaulted_option(SwiftCore_ENABLE_TYPE_PRINTING "Enable printing type names")
63+
defaulted_option(SwiftCore_ENABLE_VECTOR_TYPES "Enable vector support")
64+
defaulted_option(SwiftCore_ENABLE_REFLECTION "Enable runtime support for mirrors and reflection support")
65+
defaulted_option(SwiftCore_ENABLE_COMMANDLINE_SUPPORT "Enable command line argument support")
6466

65-
option(SwiftCore_ENABLE_CLOBBER_FREED_OBJECTS "" ${SwiftCore_ENABLE_CLOBBER_FREED_OBJECTS_default})
66-
option(SwiftCore_ENABLE_RUNTIME_LEAK_CHECKER "" ${SwiftCore_ENABLE_RIUNTIME_LEAK_CHECKER_default})
67-
option(SwiftCore_ENABLE_REFLECTION "" OFF)
67+
defaulted_option(SwiftCore_ENABLE_BACKTRACING "Enable backtracing runtime support")
68+
set(SwiftCore_BACKTRACER_PATH ${SwiftCore_BACKTRACER_PATH_default} CACHE STRING "Set a fixed path to the Swift backtracer")
6869

69-
option(SwiftCore_ENABLE_COMMANDLINE_SUPPORT "Enable command line argument support" OFF)
70+
option(SwiftCore_ENABLE_CLOBBER_FREED_OBJECTS "" OFF)
71+
option(SwiftCore_ENABLE_RUNTIME_LEAK_CHECKER "" OFF)
7072

71-
option(SwiftCore_ENABLE_BACKTRACING "Enable backtracing runtime support" OFF)
72-
set(SwiftCore_BACKTRACER_PATH "" CACHE STRING "Set a fixed path to the Swift backtracer")
73-
74-
set(SwiftCore_OBJECT_FORMAT ${SwiftCore_OBJECT_FORMAT} CACHE STRING "Object format")
73+
set(SwiftCore_OBJECT_FORMAT "${SwiftCore_OBJECT_FORMAT_default}" CACHE STRING "Object format")
7574

7675
add_compile_definitions(
7776
$<$<COMPILE_LANGUAGE:C,CXX>:-DSWIFT_OBJC_INTEROP=$<BOOL:${SwiftCore_ENABLE_OBJC_INTEROP}>>

Runtimes/Core/cmake/modules/DefaultSettings.cmake

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,25 @@
44
# way that will work. The config files under `cmake/configs` are build
55
# configurations that are actually shipping.
66

7-
set(SwiftCore_ENABLE_CRASH_REPORTER_CLIENT_default OFF)
8-
set(SwiftCore_ENABLE_OBJC_INTEROP_default OFF)
7+
set(SwiftCore_ENABLE_BACKTRACING_default OFF) # TODO: enable this by default
8+
set(SwiftCore_ENABLE_COMMANDLINE_SUPPORT_default OFF) # TODO: enable this by default
9+
910
set(SwiftCore_ENABLE_TYPE_PRINTING_default ON)
10-
set(SwiftCore_ENABLE_CLOBBER_FREED_OBJECTS_default OFF)
11-
set(SwiftCore_ENABLE_BACKTRACING_default OFF)
11+
1212
set(SwiftCore_BACKTRACER_PATH_default "")
1313

14+
macro(defaulted_option variable helptext)
15+
if(NOT DEFINED ${variable}_default)
16+
set(${variable}_default OFF)
17+
endif()
18+
option(${variable} ${helptext} ${${variable}_default})
19+
endmacro()
20+
1421
if(APPLE)
22+
set(SwiftCore_ENABLE_LIBRARY_EVOLUTION_default ON)
1523
set(SwiftCore_ENABLE_CRASH_REPORTER_CLIENT_default ON)
24+
set(SwiftCore_ENABLE_OBJC_INTEROP_default ON)
25+
set(SwiftCore_ENABLE_REFLECTION_default ON)
1626
elseif(CMAKE_SYSTEM_NAME STREQUAL "WASM")
1727
set(SwiftCore_OBJECT_FORMAT_default "elf")
1828
elseif(LINUX)

0 commit comments

Comments
 (0)