1
1
cmake_minimum_required (VERSION 3.29)
2
2
3
+ if (POLICY CMP0157 AND CMAKE_Swift_COMPILER_USE_OLD_DRIVER)
4
+ cmake_policy (SET CMP0157 OLD)
5
+ endif ()
6
+
3
7
if ($ENV{BUILD_NUMBER} )
4
8
math (EXPR BUILD_NUMBER "$ENV{BUILD_NUMBER} % 65535" )
5
9
set (BUILD_NUMBER ".${BUILD_NUMBER} " )
6
10
endif ()
7
-
8
11
project (SwiftSynchronization
9
12
LANGUAGES Swift
10
13
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)
11
17
12
18
if (NOT PROJECT_IS_TOP_LEVEL)
13
19
message (SEND_ERROR "Swift Synchronization must build as a standalone project" )
@@ -17,23 +23,32 @@ set(CMAKE_POSITION_INDEPENDENT_CODE YES)
17
23
18
24
list (APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR} /../cmake/modules" )
19
25
20
- set (CMAKE_Swift_LANGUAGE_VERSION 5)
21
-
22
- include (GNUInstallDirs)
23
-
24
26
set (${PROJECT_NAME} _SWIFTC_SOURCE_DIR
25
27
"${PROJECT_SOURCE_DIR} /../../../"
26
28
CACHE FILEPATH "Path to the root source directory of the Swift compiler" )
27
29
30
+ # Hook point for vendor-specific extensions to the build system
31
+ # Allowed extension points:
32
+ # - DefaultSettings.cmake
33
+ # - Settings.cmake
28
34
set (${PROJECT_NAME} _VENDOR_MODULE_DIR "${CMAKE_SOURCE_DIR} /../cmake/modules/vendor"
29
35
CACHE FILEPATH "Location for private build system extension" )
30
36
31
- find_package (SwiftCore QUIET REQUIRED)
37
+ find_package (SwiftCore REQUIRED)
38
+
39
+ include (GNUInstallDirs)
32
40
33
- include (gyb)
34
- include (ResourceEmbedding)
35
41
include (AvailabilityMacros)
42
+ include (EmitSwiftInterface)
43
+ include (InstallSwiftInterface)
36
44
include (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 "" )
37
52
38
53
include ("${${PROJECT_NAME} _VENDOR_MODULE_DIR}/Settings.cmake" OPTIONAL )
39
54
@@ -43,20 +58,16 @@ option(${PROJECT_NAME}_ENABLE_LIBRARY_EVOLUTION "Generate ABI resilient runtime
43
58
option (${PROJECT_NAME} _ENABLE_PRESPECIALIZATION "Enable generic metadata prespecialization"
44
59
${SwiftCore_ENABLE_PRESPECIALIZATION} )
45
60
46
- include (CatalystSupport)
47
- include (EmitSwiftInterface)
48
- include (InstallSwiftInterface)
49
-
50
61
add_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>"
54
62
$<$<COMPILE_LANGUAGE:Swift>:-explicit-module-build >
63
+ $<$<COMPILE_LANGUAGE:Swift>:-nostdlibimport>
55
64
$<$<COMPILE_LANGUAGE:Swift>:-enable-builtin-module>
56
65
$<$<COMPILE_LANGUAGE:Swift>:-strict-memory-safety>
57
66
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature RawLayout>"
58
67
"$<$<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>" )
60
71
61
72
gyb_expand(Atomics/AtomicIntegers.swift.gyb Atomics/AtomicIntegers.swift)
62
73
gyb_expand(Atomics/AtomicStorage.swift.gyb Atomics/AtomicStorage.swift)
@@ -78,18 +89,14 @@ add_library(swiftSynchronization
78
89
$<$<PLATFORM_ID:Darwin>:Mutex/DarwinImpl.swift>
79
90
$<$<PLATFORM_ID:Linux>:Mutex/LinuxImpl.swift>
80
91
$<$<PLATFORM_ID:WASI>:Mutex/SpinLoopHint.swift>
81
- $<$<PLATFORM_ID:WINDOWS >:Mutex/WindowsImpl.swift>)
92
+ $<$<PLATFORM_ID:Windows >:Mutex/WindowsImpl.swift>)
82
93
83
94
set_target_properties (swiftSynchronization PROPERTIES
84
95
Swift_MODULE_NAME Synchronization)
85
96
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>)
93
100
94
101
install (TARGETS swiftSynchronization
95
102
EXPORT SwiftSynchronizationTargets
0 commit comments