Skip to content

Commit e79760b

Browse files
authored
Merge pull request #81558 from compnerd/synchronise-synchronization
Runtimes: adjust the synchronization module build
2 parents c4b0e97 + 0b080ac commit e79760b

File tree

1 file changed

+31
-24
lines changed

1 file changed

+31
-24
lines changed

Runtimes/Supplemental/Synchronization/CMakeLists.txt

Lines changed: 31 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
cmake_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+
37
if($ENV{BUILD_NUMBER})
48
math(EXPR BUILD_NUMBER "$ENV{BUILD_NUMBER} % 65535")
59
set(BUILD_NUMBER ".${BUILD_NUMBER}")
610
endif()
7-
811
project(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

1218
if(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

1824
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../cmake/modules")
1925

20-
set(CMAKE_Swift_LANGUAGE_VERSION 5)
21-
22-
include(GNUInstallDirs)
23-
2426
set(${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
2834
set(${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)
3541
include(AvailabilityMacros)
42+
include(EmitSwiftInterface)
43+
include(InstallSwiftInterface)
3644
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 "")
3752

3853
include("${${PROJECT_NAME}_VENDOR_MODULE_DIR}/Settings.cmake" OPTIONAL)
3954

@@ -43,20 +58,16 @@ option(${PROJECT_NAME}_ENABLE_LIBRARY_EVOLUTION "Generate ABI resilient runtime
4358
option(${PROJECT_NAME}_ENABLE_PRESPECIALIZATION "Enable generic metadata prespecialization"
4459
${SwiftCore_ENABLE_PRESPECIALIZATION})
4560

46-
include(CatalystSupport)
47-
include(EmitSwiftInterface)
48-
include(InstallSwiftInterface)
49-
5061
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>"
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

6172
gyb_expand(Atomics/AtomicIntegers.swift.gyb Atomics/AtomicIntegers.swift)
6273
gyb_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

8394
set_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

94101
install(TARGETS swiftSynchronization
95102
EXPORT SwiftSynchronizationTargets

0 commit comments

Comments
 (0)