Skip to content

Commit 50e3070

Browse files
[cmake] add Synchronization library to Supplemental build (swiftlang#81310)
Addresses rdar://150300769 Add Synchronization library to new build system Land swiftlang#81215 first
1 parent f4a2e46 commit 50e3070

File tree

3 files changed

+124
-0
lines changed

3 files changed

+124
-0
lines changed

Runtimes/Resync.cmake

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,9 @@ endforeach()
9696
message(STATUS "plist[${StdlibSources}/Info.plist.in] -> Core/Info.plist.in")
9797
copy_files("" "Core" FILES "Info.plist.in")
9898

99+
message(STATUS "plist[${StdlibSources}/Info.plist.in] -> Supplemental/Synchronization/Info.plist.in")
100+
copy_files("" "Supplemental/Synchronization" FILES "Info.plist.in")
101+
99102
# Platform Overlays
100103

101104
# Copy magic linker symbols
@@ -153,6 +156,8 @@ copy_files(public/Platform Overlay/Windows/CRT
153156
# libraries, and test support libraries.
154157

155158
# Supplemental Libraries
159+
copy_library_sources("Synchronization" "public" "Supplemental")
160+
156161

157162
# Copy StringProcessing, RegexParser, RegexBuilder
158163
if(NOT DEFINED StringProcessing_ROOT_DIR)

Runtimes/Supplemental/CMakeLists.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ endif()
2222

2323
set(COMMON_OPTIONS
2424
-DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS}
25+
-DSwift_SDKROOT=${Swift_SDKROOT}
2526
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
2627
-DCMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR}
2728
-DCMAKE_INSTALL_NAME_DIR=${CMAKE_INSTALL_NAME_DIR}
@@ -47,3 +48,14 @@ if(SwiftRuntime_ENABLE_stringprocessing)
4748
CMAKE_ARGS
4849
${COMMON_OPTIONS})
4950
endif()
51+
52+
# Synchronization
53+
if(SwiftRuntime_ENABLE_synchronization)
54+
ExternalProject_Add(Synchronization
55+
PREFIX "Synchronization"
56+
SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/Synchronization"
57+
INSTALL_DIR "${CMAKE_INSTALL_PREFIX}"
58+
INSTALL_COMMAND ""
59+
CMAKE_ARGS
60+
${COMMON_OPTIONS})
61+
endif()
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
cmake_minimum_required(VERSION 3.29)
2+
3+
if($ENV{BUILD_NUMBER})
4+
math(EXPR BUILD_NUMBER "$ENV{BUILD_NUMBER} % 65535")
5+
set(BUILD_NUMBER ".${BUILD_NUMBER}")
6+
endif()
7+
8+
project(SwiftSynchronization
9+
LANGUAGES Swift
10+
VERSION 6.1.0${BUILD_NUMBER})
11+
12+
if(NOT PROJECT_IS_TOP_LEVEL)
13+
message(SEND_ERROR "Swift Synchronization must build as a standalone project")
14+
endif()
15+
16+
set(CMAKE_POSITION_INDEPENDENT_CODE YES)
17+
18+
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../cmake/modules")
19+
20+
set(CMAKE_Swift_LANGUAGE_VERSION 5)
21+
22+
include(GNUInstallDirs)
23+
24+
set(${PROJECT_NAME}_SWIFTC_SOURCE_DIR
25+
"${PROJECT_SOURCE_DIR}/../../../"
26+
CACHE FILEPATH "Path to the root source directory of the Swift compiler")
27+
28+
set(${PROJECT_NAME}_VENDOR_MODULE_DIR "${CMAKE_SOURCE_DIR}/../cmake/modules/vendor"
29+
CACHE FILEPATH "Location for private build system extension")
30+
31+
find_package(SwiftCore QUIET REQUIRED)
32+
33+
include(gyb)
34+
include(ResourceEmbedding)
35+
include(AvailabilityMacros)
36+
include(PlatformInfo)
37+
38+
include("${${PROJECT_NAME}_VENDOR_MODULE_DIR}/Settings.cmake" OPTIONAL)
39+
40+
option(${PROJECT_NAME}_ENABLE_LIBRARY_EVOLUTION "Generate ABI resilient runtime libraries"
41+
${SwiftCore_ENABLE_LIBRARY_EVOLUTION})
42+
43+
option(${PROJECT_NAME}_ENABLE_PRESPECIALIZATION "Enable generic metadata prespecialization"
44+
${SwiftCore_ENABLE_PRESPECIALIZATION})
45+
46+
include(CatalystSupport)
47+
include(EmitSwiftInterface)
48+
include(InstallSwiftInterface)
49+
50+
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+
$<$<COMPILE_LANGUAGE:Swift>:-explicit-module-build>
55+
$<$<COMPILE_LANGUAGE:Swift>:-enable-builtin-module>
56+
$<$<COMPILE_LANGUAGE:Swift>:-strict-memory-safety>
57+
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature RawLayout>"
58+
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature StaticExclusiveOnly>"
59+
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature Extern>")
60+
61+
gyb_expand(Atomics/AtomicIntegers.swift.gyb Atomics/AtomicIntegers.swift)
62+
gyb_expand(Atomics/AtomicStorage.swift.gyb Atomics/AtomicStorage.swift)
63+
64+
add_library(swiftSynchronization
65+
Atomics/Atomic.swift
66+
Atomics/AtomicBool.swift
67+
Atomics/AtomicFloats.swift
68+
Atomics/AtomicLazyReference.swift
69+
Atomics/AtomicMemoryOrderings.swift
70+
Atomics/AtomicOptional.swift
71+
Atomics/AtomicPointers.swift
72+
Atomics/AtomicRepresentable.swift
73+
Atomics/WordPair.swift
74+
Atomics/AtomicStorage.swift
75+
Atomics/AtomicIntegers.swift
76+
Cell.swift
77+
Mutex/Mutex.swift
78+
$<$<PLATFORM_ID:Darwin>:Mutex/DarwinImpl.swift>
79+
$<$<PLATFORM_ID:Linux>:Mutex/LinuxImpl.swift>
80+
$<$<PLATFORM_ID:WASI>:Mutex/SpinLoopHint.swift>
81+
$<$<PLATFORM_ID:WINDOWS>:Mutex/WindowsImpl.swift>)
82+
83+
set_target_properties(swiftSynchronization PROPERTIES
84+
Swift_MODULE_NAME Synchronization)
85+
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 "")
93+
94+
install(TARGETS swiftSynchronization
95+
EXPORT SwiftSynchronizationTargets
96+
COMPONENT ${PROJECT_NAME}_runtime
97+
ARCHIVE DESTINATION "${${PROJECT_NAME}_INSTALL_LIBDIR}"
98+
LIBRARY DESTINATION "${${PROJECT_NAME}_INSTALL_LIBDIR}"
99+
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
100+
emit_swift_interface(swiftSynchronization)
101+
install_swift_interface(swiftSynchronization)
102+
103+
# Configure plist creation for Darwin platforms.
104+
generate_plist("${CMAKE_PROJECT_NAME}" "${CMAKE_PROJECT_VERSION}" swiftSynchronization)
105+
embed_manifest(swiftSynchronization)
106+
107+
include("${${PROJECT_NAME}_VENDOR_MODULE_DIR}/swiftSynchronization.cmake" OPTIONAL)

0 commit comments

Comments
 (0)