add_subdirectory(LLVMSupport) set(SWIFT_RUNTIME_CXX_FLAGS) set(SWIFT_RUNTIME_LINK_FLAGS) set(SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS) set(SWIFT_RUNTIME_SWIFT_LINK_FLAGS) if(SWIFT_RUNTIME_USE_SANITIZERS) # TODO: Refactor this if("Thread" IN_LIST SWIFT_RUNTIME_USE_SANITIZERS) list(APPEND SWIFT_RUNTIME_CXX_FLAGS "-fsanitize=thread") list(APPEND SWIFT_RUNTIME_LINK_FLAGS "-fsanitize=thread") list(APPEND SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS "-sanitize=thread") list(APPEND SWIFT_RUNTIME_SWIFT_LINK_FLAGS "-fsanitize=thread") endif() endif() list(APPEND SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS "-Xfrontend" "-verify-syntax-tree") if(SWIFT_STDLIB_SIL_DEBUGGING) list(APPEND SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS "-Xfrontend" "-gsil") endif() # Build the runtime with -Wall to catch, e.g., uninitialized variables # warnings. if(SWIFT_COMPILER_IS_MSVC_LIKE) list(APPEND SWIFT_RUNTIME_CXX_FLAGS "/W3") else() list(APPEND SWIFT_RUNTIME_CXX_FLAGS "-Wall") endif() set(SWIFT_RUNTIME_CORE_CXX_FLAGS "${SWIFT_RUNTIME_CXX_FLAGS}") set(SWIFT_RUNTIME_CORE_LINK_FLAGS "${SWIFT_RUNTIME_LINK_FLAGS}") if(CMAKE_SYSTEM_NAME STREQUAL "CYGWIN") list(APPEND SWIFT_RUNTIME_CORE_CXX_FLAGS "-mcmodel=large") elseif(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") list(APPEND SWIFT_RUNTIME_CORE_CXX_FLAGS "-xc++") endif() # C++ code in the runtime and standard library should generally avoid # introducing static constructors or destructors. check_cxx_compiler_flag("-Werror -Wglobal-constructors" CXX_SUPPORTS_GLOBAL_CONSTRUCTORS_WARNING) if(CXX_SUPPORTS_GLOBAL_CONSTRUCTORS_WARNING) list(APPEND SWIFT_RUNTIME_CORE_CXX_FLAGS "-Wglobal-constructors") endif() # C++ code in the runtime and standard library should generally avoid # introducing static constructors or destructors. check_cxx_compiler_flag("-Wexit-time-destructors" CXX_SUPPORTS_EXIT_TIME_DESTRUCTORS_WARNING) if(CXX_SUPPORTS_EXIT_TIME_DESTRUCTORS_WARNING) list(APPEND SWIFT_RUNTIME_CORE_CXX_FLAGS "-Wexit-time-destructors") endif() add_subdirectory(SwiftShims) # This static library is shared across swiftCore and swiftReflection if(SWIFT_BUILD_STDLIB OR SWIFT_BUILD_REMOTE_MIRROR) # TODO: due to the use of `add_swift_target_library` rather than `add_library` # we cannot use `target_sources` and thus must resort to list manipulations to # adjust the source list. set(swiftDemanglingSources "${SWIFT_SOURCE_DIR}/lib/Demangling/Context.cpp" "${SWIFT_SOURCE_DIR}/lib/Demangling/Demangler.cpp" "${SWIFT_SOURCE_DIR}/lib/Demangling/ManglingUtils.cpp" "${SWIFT_SOURCE_DIR}/lib/Demangling/NodePrinter.cpp" "${SWIFT_SOURCE_DIR}/lib/Demangling/OldDemangler.cpp" "${SWIFT_SOURCE_DIR}/lib/Demangling/OldRemangler.cpp" "${SWIFT_SOURCE_DIR}/lib/Demangling/Punycode.cpp" "${SWIFT_SOURCE_DIR}/lib/Demangling/Remangler.cpp") # When we're building with assertions, include the demangle node dumper to aid # in debugging. if(LLVM_ENABLE_ASSERTIONS) list(APPEND swiftDemanglingSources "${SWIFT_SOURCE_DIR}/lib/Demangling/NodeDumper.cpp") endif() add_swift_target_library(swiftDemangling OBJECT_LIBRARY ${swiftDemanglingSources} C_COMPILE_FLAGS -DswiftCore_EXPORTS INSTALL_IN_COMPONENT never_install) endif() if(SWIFT_BUILD_STDLIB) # These must be kept in dependency order so that any referenced targets # exist at the time we look for them in add_swift_*. add_subdirectory(runtime) add_subdirectory(stubs) add_subdirectory(core) add_subdirectory(SwiftOnoneSupport) if(SWIFT_ENABLE_EXPERIMENTAL_DIFFERENTIABLE_PROGRAMMING) add_subdirectory(Differentiation) endif() if(SWIFT_ENABLE_EXPERIMENTAL_CONCURRENCY) add_subdirectory(Concurrency) endif() endif() if(SWIFT_BUILD_STDLIB OR SWIFT_BUILD_REMOTE_MIRROR) add_subdirectory(Reflection) add_subdirectory(SwiftRemoteMirror) endif() if(SWIFT_BUILD_SDK_OVERLAY OR SWIFT_BUILD_TEST_SUPPORT_MODULES) add_subdirectory(Platform) endif() if(SWIFT_BUILD_SDK_OVERLAY) list_intersect("${SWIFT_APPLE_PLATFORMS}" "${SWIFT_SDKS}" building_darwin_sdks) if(building_darwin_sdks) add_subdirectory(Darwin) endif() if(WINDOWS IN_LIST SWIFT_SDKS) add_subdirectory(Windows) endif() endif()