Skip to content

Commit 32b2846

Browse files
[cmake] add Synchronization library to Supplemental build
Addresses rdar://150300769
1 parent a08a87b commit 32b2846

File tree

3 files changed

+123
-0
lines changed

3 files changed

+123
-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=${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: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
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+
49+
add_compile_options(
50+
"$<$<COMPILE_LANGUAGE:Swift>:-nostdlibimport>"
51+
"$<$<AND:$<BOOL:${${PROJECT_NAME}_ENABLE_LIBRARY_EVOLUTION}>,$<COMPILE_LANGUAGE:Swift>>:-enable-library-evolution>"
52+
"$<$<AND:$<BOOL:${${PROJECT_NAME}_ENABLE_PRESPECIALIZATION}>,$<COMPILE_LANGUAGE:Swift>>:SHELL:-Xfrontend -prespecialize-generic-metadata>"
53+
$<$<COMPILE_LANGUAGE:Swift>:-explicit-module-build>
54+
$<$<COMPILE_LANGUAGE:Swift>:-enable-builtin-module>
55+
$<$<COMPILE_LANGUAGE:Swift>:-strict-memory-safety>
56+
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature RawLayout>"
57+
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature StaticExclusiveOnly>"
58+
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature Extern>")
59+
60+
gyb_expand(Atomics/AtomicIntegers.swift.gyb Atomics/AtomicIntegers.swift)
61+
gyb_expand(Atomics/AtomicStorage.swift.gyb Atomics/AtomicStorage.swift)
62+
63+
add_library(swiftSynchronization
64+
Atomics/Atomic.swift
65+
Atomics/AtomicBool.swift
66+
Atomics/AtomicFloats.swift
67+
Atomics/AtomicLazyReference.swift
68+
Atomics/AtomicMemoryOrderings.swift
69+
Atomics/AtomicOptional.swift
70+
Atomics/AtomicPointers.swift
71+
Atomics/AtomicRepresentable.swift
72+
Atomics/WordPair.swift
73+
Atomics/AtomicStorage.swift
74+
Atomics/AtomicIntegers.swift
75+
Cell.swift
76+
Mutex/Mutex.swift
77+
$<$<PLATFORM_ID:Darwin>:Mutex/DarwinImpl.swift>
78+
$<$<PLATFORM_ID:Linux>:Mutex/LinuxImpl.swift>
79+
$<$<PLATFORM_ID:WASI>:Mutex/SpinLoopHint.swift>
80+
$<$<PLATFORM_ID:WINDOWS>:Mutex/WindowsImpl.swift>)
81+
82+
set_target_properties(swiftSynchronization PROPERTIES
83+
Swift_MODULE_NAME Synchronization)
84+
85+
target_link_libraries(swiftSynchronization
86+
PRIVATE
87+
swiftCore
88+
$<$<PLATFORM_ID:Darwin>:swiftDarwin>)
89+
90+
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 "")
91+
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 "")
92+
93+
install(TARGETS swiftSynchronization
94+
EXPORT SwiftSupplementalTargets
95+
COMPONENT ${PROJECT_NAME}_runtime
96+
ARCHIVE DESTINATION "${${PROJECT_NAME}_INSTALL_LIBDIR}"
97+
LIBRARY DESTINATION "${${PROJECT_NAME}_INSTALL_LIBDIR}"
98+
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
99+
emit_swift_interface(swiftSynchronization)
100+
install_swift_interface(swiftSynchronization)
101+
102+
# Configure plist creation for Darwin platforms.
103+
generate_plist("${CMAKE_PROJECT_NAME}" "${CMAKE_PROJECT_VERSION}" swiftSynchronization)
104+
embed_manifest(swiftSynchronization)
105+
106+
include("${${PROJECT_NAME}_VENDOR_MODULE_DIR}/swiftSynchronization.cmake" OPTIONAL)

0 commit comments

Comments
 (0)