1
1
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
2
7
3
8
if (POLICY CMP0157 AND CMAKE_Swift_COMPILER_USE_OLD_DRIVER )
4
9
cmake_policy (SET CMP0157 OLD )
@@ -19,23 +24,33 @@ endif()
19
24
set (CMAKE_Swift_LANGUAGE_VERSION 5 )
20
25
21
26
set (CMAKE_POSITION_INDEPENDENT_CODE YES )
27
+
22
28
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 )
25
31
set (CMAKE_CXX_STANDARD 17 CACHE STRING "C++ standard to conform to" )
26
32
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 )
28
36
29
37
list (APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR} /../cmake/modules" )
30
38
31
39
set (${PROJECT_NAME} _SWIFTC_SOURCE_DIR
32
40
"${PROJECT_SOURCE_DIR} /../../../"
33
41
CACHE FILEPATH "Path to the root source directory of the Swift compiler" )
34
42
43
+ # Hook point for vendor-specific extensions to the build system
44
+ # Allowed extension points:
45
+ # - DefaultSettings.cmake
46
+ # - Settings.cmake
35
47
set (${PROJECT_NAME} _VENDOR_MODULE_DIR "${CMAKE_SOURCE_DIR} /../cmake/modules/vendor"
36
48
CACHE FILEPATH "Location for private build system extension" )
37
49
38
50
find_package (SwiftCore REQUIRED )
51
+ find_package (SwiftOverlay REQUIRED )
52
+
53
+ include (GNUInstallDirs )
39
54
40
55
include (AvailabilityMacros )
41
56
include (EmitSwiftInterface )
@@ -46,7 +61,7 @@ include(CatalystSupport)
46
61
include (SwiftCallingConventions )
47
62
48
63
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 "" )
50
65
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 "" )
51
66
52
67
include ("${${PROJECT_NAME} _VENDOR_MODULE_DIR}/Settings.cmake" OPTIONAL )
@@ -57,47 +72,53 @@ option(${PROJECT_NAME}_ENABLE_LIBRARY_EVOLUTION "Generate ABI resilient runtime
57
72
option (${PROJECT_NAME} _ENABLE_PRESPECIALIZATION "Enable generic metadata prespecialization"
58
73
${SwiftCore_ENABLE_PRESPECIALIZATION} )
59
74
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 (
71
76
$< $< COMPILE_LANGUAGE:Swift> :-explicit-module-build>
72
77
$< $< COMPILE_LANGUAGE:Swift> :-nostdlibimport>
73
- $< $< COMPILE_LANGUAGE:Swift> :-parse-stdlib>
74
- $< $< COMPILE_LANGUAGE:Swift> :SHELL:-enable-experimental-feature AllowUnsafeAttribute>
75
78
$< $< 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>"
80
79
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature NoncopyableGenerics2>"
81
80
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature SuppressedAssociatedTypes>"
82
81
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature SE427NoInferenceOnExtension>"
83
82
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature NonescapableTypes>"
84
83
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature LifetimeDependence>"
84
+ "$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature InoutLifetimeDependence>"
85
85
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature LifetimeDependenceMutableAccessors>"
86
86
"$<$<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>"
88
90
"$<$<AND:$<BOOL:${${PROJECT_NAME} _ENABLE_LIBRARY_EVOLUTION}>,$<COMPILE_LANGUAGE:Swift>>:-enable-library-evolution>"
89
91
"$<$<AND:$<BOOL:${${PROJECT_NAME} _ENABLE_PRESPECIALIZATION}>,$<COMPILE_LANGUAGE:Swift>>:SHELL:-Xfrontend -prespecialize-generic-metadata>" )
90
92
91
- set_target_properties (swiftDistributed PROPERTIES
92
- Swift_MODULE_NAME Distributed
93
- LINKER_LANGUAGE CXX )
94
93
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 )
97
110
endif ()
98
111
99
112
target_compile_definitions (swiftDistributed PRIVATE
100
113
$< $< 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 ()
101
122
102
123
target_include_directories (swiftDistributed PRIVATE
103
124
# FIXME: Use of `swift/Runtime/...`, `swift/ABI/...`, and `swift/Demangling/...`
@@ -111,9 +132,9 @@ target_include_directories(swiftDistributed PRIVATE
111
132
target_link_libraries (swiftDistributed PRIVATE
112
133
swiftShims
113
134
swiftCore
114
- swift_Concurrency )
135
+ swift_Concurrency
136
+ builtin_float )
115
137
# swiftDarwin/Libc/Platform
116
- # builtin_float
117
138
118
139
install (TARGETS swiftDistributed
119
140
EXPORT SwiftDistributedTargets
0 commit comments