11cmake_minimum_required (VERSION 3.29)
22
3+ if (POLICY CMP0157 AND CMAKE_Swift_COMPILER_USE_OLD_DRIVER)
4+ cmake_policy (SET CMP0157 OLD)
5+ endif ()
6+
37if ($ENV{BUILD_NUMBER} )
48 math (EXPR BUILD_NUMBER "$ENV{BUILD_NUMBER} % 65535" )
59 set (BUILD_NUMBER ".${BUILD_NUMBER} " )
610endif ()
7-
811project (SwiftSynchronization
912 LANGUAGES Swift
1013 VERSION 6.1.0${BUILD_NUMBER} )
14+ # FIXME(compnerd) this is a workaround for `GNUInstallDirs` which cannot be used
15+ # with a pure Swift project.
16+ enable_language (C)
1117
1218if (NOT PROJECT_IS_TOP_LEVEL)
1319 message (SEND_ERROR "Swift Synchronization must build as a standalone project" )
@@ -17,23 +23,32 @@ set(CMAKE_POSITION_INDEPENDENT_CODE YES)
1723
1824list (APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR} /../cmake/modules" )
1925
20- set (CMAKE_Swift_LANGUAGE_VERSION 5)
21-
22- include (GNUInstallDirs)
23-
2426set (${PROJECT_NAME} _SWIFTC_SOURCE_DIR
2527 "${PROJECT_SOURCE_DIR} /../../../"
2628 CACHE FILEPATH "Path to the root source directory of the Swift compiler" )
2729
30+ # Hook point for vendor-specific extensions to the build system
31+ # Allowed extension points:
32+ # - DefaultSettings.cmake
33+ # - Settings.cmake
2834set (${PROJECT_NAME} _VENDOR_MODULE_DIR "${CMAKE_SOURCE_DIR} /../cmake/modules/vendor"
2935 CACHE FILEPATH "Location for private build system extension" )
3036
31- find_package (SwiftCore QUIET REQUIRED)
37+ find_package (SwiftCore REQUIRED)
38+
39+ include (GNUInstallDirs)
3240
33- include (gyb)
34- include (ResourceEmbedding)
3541include (AvailabilityMacros)
42+ include (EmitSwiftInterface)
43+ include (InstallSwiftInterface)
3644include (PlatformInfo)
45+ include (gyb)
46+ include (ResourceEmbedding)
47+ include (CatalystSupport)
48+
49+ option (${PROJECT_NAME} _INSTALL_NESTED_SUBDIR "Install libraries under a platform and architecture subdirectory" ON )
50+ set (${PROJECT_NAME} _INSTALL_LIBDIR "${CMAKE_INSTALL_LIBDIR} /swift$<$<NOT:$<BOOL:${BUILD_SHARED_LIBS} >>:_static>$<$<BOOL:${${PROJECT_NAME} _INSTALL_NESTED_SUBDIR}>:/${${PROJECT_NAME} _PLATFORM_SUBDIR}/${${PROJECT_NAME} _ARCH_SUBDIR}>" CACHE STRING "" )
51+ set (${PROJECT_NAME} _INSTALL_SWIFTMODULEDIR "${CMAKE_INSTALL_LIBDIR} /swift$<$<NOT:$<BOOL:${BUILD_SHARED_LIBS} >>:_static>$<$<BOOL:${${PROJECT_NAME} _INSTALL_NESTED_SUBDIR}>:/${${PROJECT_NAME} _PLATFORM_SUBDIR}>" CACHE STRING "" )
3752
3853include ("${${PROJECT_NAME} _VENDOR_MODULE_DIR}/Settings.cmake" OPTIONAL )
3954
@@ -43,20 +58,16 @@ option(${PROJECT_NAME}_ENABLE_LIBRARY_EVOLUTION "Generate ABI resilient runtime
4358option (${PROJECT_NAME} _ENABLE_PRESPECIALIZATION "Enable generic metadata prespecialization"
4459 ${SwiftCore_ENABLE_PRESPECIALIZATION} )
4560
46- include (CatalystSupport)
47- include (EmitSwiftInterface)
48- include (InstallSwiftInterface)
49-
5061add_compile_options (
51- "$<$<COMPILE_LANGUAGE:Swift>:-nostdlibimport>"
52- "$<$<AND:$<BOOL:${${PROJECT_NAME} _ENABLE_LIBRARY_EVOLUTION}>,$<COMPILE_LANGUAGE:Swift>>:-enable-library-evolution>"
53- "$<$<AND:$<BOOL:${${PROJECT_NAME} _ENABLE_PRESPECIALIZATION}>,$<COMPILE_LANGUAGE:Swift>>:SHELL:-Xfrontend -prespecialize-generic-metadata>"
5462 $<$<COMPILE_LANGUAGE:Swift>:-explicit-module-build >
63+ $<$<COMPILE_LANGUAGE:Swift>:-nostdlibimport>
5564 $<$<COMPILE_LANGUAGE:Swift>:-enable-builtin-module>
5665 $<$<COMPILE_LANGUAGE:Swift>:-strict-memory-safety>
5766 "$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature RawLayout>"
5867 "$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature StaticExclusiveOnly>"
59- "$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature Extern>" )
68+ "$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature Extern>"
69+ "$<$<AND:$<BOOL:${${PROJECT_NAME} _ENABLE_LIBRARY_EVOLUTION}>,$<COMPILE_LANGUAGE:Swift>>:-enable-library-evolution>"
70+ "$<$<AND:$<BOOL:${${PROJECT_NAME} _ENABLE_PRESPECIALIZATION}>,$<COMPILE_LANGUAGE:Swift>>:SHELL:-Xfrontend -prespecialize-generic-metadata>" )
6071
6172gyb_expand(Atomics/AtomicIntegers.swift.gyb Atomics/AtomicIntegers.swift)
6273gyb_expand(Atomics/AtomicStorage.swift.gyb Atomics/AtomicStorage.swift)
@@ -78,18 +89,14 @@ add_library(swiftSynchronization
7889 $<$<PLATFORM_ID:Darwin>:Mutex/DarwinImpl.swift>
7990 $<$<PLATFORM_ID:Linux>:Mutex/LinuxImpl.swift>
8091 $<$<PLATFORM_ID:WASI>:Mutex/SpinLoopHint.swift>
81- $<$<PLATFORM_ID:WINDOWS >:Mutex/WindowsImpl.swift>)
92+ $<$<PLATFORM_ID:Windows >:Mutex/WindowsImpl.swift>)
8293
8394set_target_properties (swiftSynchronization PROPERTIES
8495 Swift_MODULE_NAME Synchronization)
8596
86- target_link_libraries (swiftSynchronization
87- PRIVATE
88- swiftCore
89- $<$<PLATFORM_ID:Darwin>:swiftDarwin>)
90-
91- set (${PROJECT_NAME} _INSTALL_LIBDIR "${CMAKE_INSTALL_LIBDIR} /swift$<$<NOT:$<BOOL:${BUILD_SHARED_LIBS} >>:_static>$<$<BOOL:${Supplemental_INSTALL_NESTED_SUBDIR} >:/${Supplemental_PLATFORM_SUBDIR} /${Supplemental_ARCH_SUBDIR} >" CACHE STRING "" )
92- set (${PROJECT_NAME} _INSTALL_SWIFTMODULEDIR "${CMAKE_INSTALL_LIBDIR} /swift$<$<NOT:$<BOOL:${BUILD_SHARED_LIBS} >>:_static>$<$<BOOL:${Supplemental_INSTALL_NESTED_SUBDIR} >:/${Supplemental_PLATFORM_SUBDIR} >" CACHE STRING "" )
97+ target_link_libraries (swiftSynchronization PRIVATE
98+ swiftCore
99+ $<$<PLATFORM_ID:Darwin>:swiftDarwin>)
93100
94101install (TARGETS swiftSynchronization
95102 EXPORT SwiftSynchronizationTargets
0 commit comments