Skip to content

Commit a2b11cf

Browse files
authored
Merge pull request #83157 from compnerd/distributed-work
Runtimes: reworking Distributed build to work on Windows
2 parents a779e49 + 8328b14 commit a2b11cf

File tree

1 file changed

+50
-29
lines changed

1 file changed

+50
-29
lines changed

Runtimes/Supplemental/Distributed/CMakeLists.txt

Lines changed: 50 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
cmake_minimum_required(VERSION 3.29)
2+
# TODO before requiring CMake 4.1 or later
3+
# and/or enforcing CMP0195, please check/update
4+
# the implementation of `emit_swift_interface`
5+
# in `EmitSwiftInterface.cmake`
6+
# to ensure it keeps laying down nested swiftmodule folders
27

38
if(POLICY CMP0157 AND CMAKE_Swift_COMPILER_USE_OLD_DRIVER)
49
cmake_policy(SET CMP0157 OLD)
@@ -19,23 +24,33 @@ endif()
1924
set(CMAKE_Swift_LANGUAGE_VERSION 5)
2025

2126
set(CMAKE_POSITION_INDEPENDENT_CODE YES)
27+
2228
set(CMAKE_C_VISIBILITY_PRESET "hidden")
23-
set(CMAKE_CXX_VISIBILITY_PRESET "hidden")
24-
set(CMAKE_VISIBILITY_INLINES_HIDDEN YES)
29+
30+
set(CMAKE_CXX_EXTENSIONS NO)
2531
set(CMAKE_CXX_STANDARD 17 CACHE STRING "C++ standard to conform to")
2632
set(CMAKE_CXX_STANDARD_REQUIRED YES)
27-
set(CMAKE_CXX_EXTENSIONS NO)
33+
set(CMAKE_CXX_VISIBILITY_PRESET "hidden")
34+
35+
set(CMAKE_VISIBILITY_INLINES_HIDDEN YES)
2836

2937
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../cmake/modules")
3038

3139
set(${PROJECT_NAME}_SWIFTC_SOURCE_DIR
3240
"${PROJECT_SOURCE_DIR}/../../../"
3341
CACHE FILEPATH "Path to the root source directory of the Swift compiler")
3442

43+
# Hook point for vendor-specific extensions to the build system
44+
# Allowed extension points:
45+
# - DefaultSettings.cmake
46+
# - Settings.cmake
3547
set(${PROJECT_NAME}_VENDOR_MODULE_DIR "${CMAKE_SOURCE_DIR}/../cmake/modules/vendor"
3648
CACHE FILEPATH "Location for private build system extension")
3749

3850
find_package(SwiftCore REQUIRED)
51+
find_package(SwiftOverlay REQUIRED)
52+
53+
include(GNUInstallDirs)
3954

4055
include(AvailabilityMacros)
4156
include(EmitSwiftInterface)
@@ -46,7 +61,7 @@ include(CatalystSupport)
4661
include(SwiftCallingConventions)
4762

4863
option(${PROJECT_NAME}_INSTALL_NESTED_SUBDIR "Install libraries under a platform and architecture subdirectory" ON)
49-
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}/${Supplemental_ARCH_SUBDIR}>" CACHE STRING "")
64+
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 "")
5065
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 "")
5166

5267
include("${${PROJECT_NAME}_VENDOR_MODULE_DIR}/Settings.cmake" OPTIONAL)
@@ -57,47 +72,53 @@ option(${PROJECT_NAME}_ENABLE_LIBRARY_EVOLUTION "Generate ABI resilient runtime
5772
option(${PROJECT_NAME}_ENABLE_PRESPECIALIZATION "Enable generic metadata prespecialization"
5873
${SwiftCore_ENABLE_PRESPECIALIZATION})
5974

60-
add_library(swiftDistributed
61-
DistributedActor.cpp
62-
DistributedActor.swift
63-
DistributedActorSystem.swift
64-
DistributedAssertions.swift
65-
DistributedDefaultExecutor.swift
66-
DistributedMacros.swift
67-
DistributedMetadata.swift
68-
LocalTestingDistributedActorSystem.swift)
69-
70-
target_compile_options(swiftDistributed PRIVATE
75+
add_compile_options(
7176
$<$<COMPILE_LANGUAGE:Swift>:-explicit-module-build>
7277
$<$<COMPILE_LANGUAGE:Swift>:-nostdlibimport>
73-
$<$<COMPILE_LANGUAGE:Swift>:-parse-stdlib>
74-
$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature AllowUnsafeAttribute>
7578
$<$<COMPILE_LANGUAGE:Swift>:-strict-memory-safety>
76-
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-library-level api>"
77-
$<$<COMPILE_LANGUAGE:Swift>:-enforce-exclusivity=unchecked>
78-
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-Xfrontend -target-min-inlining-version -Xfrontend min>"
79-
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-Xfrontend -enable-lexical-lifetimes=false>"
8079
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature NoncopyableGenerics2>"
8180
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature SuppressedAssociatedTypes>"
8281
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature SE427NoInferenceOnExtension>"
8382
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature NonescapableTypes>"
8483
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature LifetimeDependence>"
84+
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature InoutLifetimeDependence>"
8585
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature LifetimeDependenceMutableAccessors>"
8686
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-upcoming-feature MemberImportVisibility>"
87-
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature InoutLifetimeDependence>"
87+
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-Xfrontend -enforce-exclusivity=unchecked>"
88+
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-Xfrontend -target-min-inlining-version -Xfrontend min>"
89+
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-Xfrontend -enable-lexical-lifetimes=false>"
8890
"$<$<AND:$<BOOL:${${PROJECT_NAME}_ENABLE_LIBRARY_EVOLUTION}>,$<COMPILE_LANGUAGE:Swift>>:-enable-library-evolution>"
8991
"$<$<AND:$<BOOL:${${PROJECT_NAME}_ENABLE_PRESPECIALIZATION}>,$<COMPILE_LANGUAGE:Swift>>:SHELL:-Xfrontend -prespecialize-generic-metadata>")
9092

91-
set_target_properties(swiftDistributed PROPERTIES
92-
Swift_MODULE_NAME Distributed
93-
LINKER_LANGUAGE CXX)
9493

95-
if(APPLE AND BUILD_SHARED_LIBS)
96-
target_link_options(swiftDistributed PRIVATE "SHELL:-Xlinker -headerpad_max_install_names")
94+
add_library(swiftDistributed
95+
DistributedActor.cpp
96+
DistributedActor.swift
97+
DistributedActorSystem.swift
98+
DistributedAssertions.swift
99+
DistributedDefaultExecutor.swift
100+
DistributedMacros.swift
101+
DistributedMetadata.swift
102+
LocalTestingDistributedActorSystem.swift)
103+
104+
set_target_properties(swiftDistributed PROPERTIES
105+
Swift_MODULE_NAME Distributed)
106+
cmake_policy(GET CMP0157 Policy157Enabled)
107+
if(Policy157Enabled STREQUAL NEW)
108+
set_target_properties(swiftDistributed PROPERTIES
109+
LINKER_LANGUAGE CXX)
97110
endif()
98111

99112
target_compile_definitions(swiftDistributed PRIVATE
100113
$<$<COMPILE_LANGUAGE:C,CXX>:-DSWIFT_TARGET_LIBRARY_NAME=swiftDistributed>)
114+
target_compile_options(swiftDistributed PRIVATE
115+
$<$<COMPILE_LANGUAGE:Swift>:-parse-stdlib>
116+
$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature AllowUnsafeAttribute>)
117+
118+
if(APPLE AND BUILD_SHARED_LIBS)
119+
target_link_options(swiftDistributed PRIVATE
120+
"SHELL:-Xlinker -headerpad_max_install_names")
121+
endif()
101122

102123
target_include_directories(swiftDistributed PRIVATE
103124
# FIXME: Use of `swift/Runtime/...`, `swift/ABI/...`, and `swift/Demangling/...`
@@ -111,9 +132,9 @@ target_include_directories(swiftDistributed PRIVATE
111132
target_link_libraries(swiftDistributed PRIVATE
112133
swiftShims
113134
swiftCore
114-
swift_Concurrency)
135+
swift_Concurrency
136+
builtin_float)
115137
# swiftDarwin/Libc/Platform
116-
# builtin_float
117138

118139
install(TARGETS swiftDistributed
119140
EXPORT SwiftDistributedTargets

0 commit comments

Comments
 (0)