@@ -66,6 +66,95 @@ else()
66
66
any compiler host sources written in Swift" )
67
67
endif ()
68
68
69
+ # A convenience pattern to match Darwin platforms. Example:
70
+ # if(SWIFT_HOST_VARIANT MATCHES "${SWIFT_DARWIN_VARIANTS}")
71
+ # ...
72
+ # endif()
73
+ set (SWIFT_DARWIN_VARIANTS "^(macosx|iphoneos|iphonesimulator|appletvos|appletvsimulator|watchos|watchsimulator)" )
74
+ set (SWIFT_DARWIN_EMBEDDED_VARIANTS "^(iphoneos|iphonesimulator|appletvos|appletvsimulator|watchos|watchsimulator)" )
75
+
76
+ # A convenient list to match Darwin SDKs. Example:
77
+ # if("${SWIFT_HOST_VARIANT_SDK}" IN_LIST SWIFT_DARWIN_PLATFORMS)
78
+ # ...
79
+ # endif()
80
+ set (SWIFT_DARWIN_PLATFORMS "IOS" "IOS_SIMULATOR" "TVOS" "TVOS_SIMULATOR" "WATCHOS" "WATCHOS_SIMULATOR" "OSX" )
81
+
82
+ set (SWIFT_APPLE_PLATFORMS ${SWIFT_DARWIN_PLATFORMS} )
83
+ if (SWIFT_FREESTANDING_FLAVOR STREQUAL "apple" )
84
+ list (APPEND SWIFT_APPLE_PLATFORMS "FREESTANDING" )
85
+ if (SWIFT_FREESTANDING_IS_DARWIN )
86
+ list (APPEND SWIFT_DARWIN_PLATFORMS "FREESTANDING" )
87
+ endif ()
88
+ endif ()
89
+
90
+ # If SWIFT_HOST_VARIANT_SDK not given, try to detect from the CMAKE_SYSTEM_NAME.
91
+ if (SWIFT_HOST_VARIANT_SDK )
92
+ set (SWIFT_HOST_VARIANT_SDK_default "${SWIFT_HOST_VARIANT_SDK} " )
93
+ else ()
94
+ if ("${CMAKE_SYSTEM_NAME} " STREQUAL "Linux" )
95
+ set (SWIFT_HOST_VARIANT_SDK_default "LINUX" )
96
+ elseif ("${CMAKE_SYSTEM_NAME} " STREQUAL "FreeBSD" )
97
+ set (SWIFT_HOST_VARIANT_SDK_default "FREEBSD" )
98
+ elseif ("${CMAKE_SYSTEM_NAME} " STREQUAL "OpenBSD" )
99
+ set (SWIFT_HOST_VARIANT_SDK_default "OPENBSD" )
100
+ elseif ("${CMAKE_SYSTEM_NAME} " STREQUAL "CYGWIN" )
101
+ set (SWIFT_HOST_VARIANT_SDK_default "CYGWIN" )
102
+ elseif ("${CMAKE_SYSTEM_NAME} " STREQUAL "Windows" )
103
+ set (SWIFT_HOST_VARIANT_SDK_default "WINDOWS" )
104
+ elseif ("${CMAKE_SYSTEM_NAME} " STREQUAL "Haiku" )
105
+ set (SWIFT_HOST_VARIANT_SDK_default "HAIKU" )
106
+ elseif ("${CMAKE_SYSTEM_NAME} " STREQUAL "Android" )
107
+ set (SWIFT_HOST_VARIANT_SDK_default "ANDROID" )
108
+ elseif ("${CMAKE_SYSTEM_NAME} " STREQUAL "Darwin" )
109
+ set (SWIFT_HOST_VARIANT_SDK_default "OSX" )
110
+ else ()
111
+ message (FATAL_ERROR "Unable to detect SDK for host system: ${CMAKE_SYSTEM_NAME} " )
112
+ endif ()
113
+ endif ()
114
+
115
+ # If SWIFT_HOST_VARIANT_ARCH not given, try to detect from the CMAKE_SYSTEM_PROCESSOR.
116
+ if (SWIFT_HOST_VARIANT_ARCH )
117
+ set (SWIFT_HOST_VARIANT_ARCH_default "${SWIFT_HOST_VARIANT_ARCH} " )
118
+ else ()
119
+ if (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64" )
120
+ set (SWIFT_HOST_VARIANT_ARCH_default "x86_64" )
121
+ elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|ARM64|arm64" )
122
+ if (SWIFT_HOST_VARIANT_SDK_default STREQUAL OSX )
123
+ set (SWIFT_HOST_VARIANT_ARCH_default "arm64" )
124
+ else ()
125
+ set (SWIFT_HOST_VARIANT_ARCH_default "aarch64" )
126
+ endif ()
127
+ elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "ppc64" )
128
+ set (SWIFT_HOST_VARIANT_ARCH_default "powerpc64" )
129
+ elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "ppc" )
130
+ set (SWIFT_HOST_VARIANT_ARCH_default "powerpc" )
131
+ elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "ppc64le" )
132
+ set (SWIFT_HOST_VARIANT_ARCH_default "powerpc64le" )
133
+ elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "s390x" )
134
+ set (SWIFT_HOST_VARIANT_ARCH_default "s390x" )
135
+ elseif ("${CMAKE_SYSTEM_PROCESSOR} " MATCHES "armv5|armv5te" )
136
+ set (SWIFT_HOST_VARIANT_ARCH_default "armv5" )
137
+ # FIXME: Only matches v6l/v7l - by far the most common variants
138
+ elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "armv6l" )
139
+ set (SWIFT_HOST_VARIANT_ARCH_default "armv6" )
140
+ elseif ("${CMAKE_SYSTEM_PROCESSOR} " MATCHES "armv7l|armv7-a" )
141
+ set (SWIFT_HOST_VARIANT_ARCH_default "armv7" )
142
+ elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "IA64" )
143
+ set (SWIFT_HOST_VARIANT_ARCH_default "itanium" )
144
+ elseif ("${CMAKE_SYSTEM_PROCESSOR} " MATCHES "(x86|i686)" )
145
+ set (SWIFT_HOST_VARIANT_ARCH_default "i686" )
146
+ elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "wasm32" )
147
+ set (SWIFT_HOST_VARIANT_ARCH_default "wasm32" )
148
+ else ()
149
+ message (FATAL_ERROR "Unrecognized architecture on host system: ${CMAKE_SYSTEM_PROCESSOR} " )
150
+ endif ()
151
+ endif ()
152
+
153
+ set (SWIFT_HOST_VARIANT_SDK "${SWIFT_HOST_VARIANT_SDK_default} " CACHE STRING
154
+ "Deployment sdk for Swift host tools (the compiler)." )
155
+ set (SWIFT_HOST_VARIANT_ARCH "${SWIFT_HOST_VARIANT_ARCH_default} " CACHE STRING
156
+ "Deployment arch for Swift host tools (the compiler)." )
157
+
69
158
#
70
159
# User-configurable options that control the inclusion and default build
71
160
# behavior for components which may not strictly be necessary (tools, examples,
@@ -103,6 +192,16 @@ option(SWIFT_STDLIB_ENABLE_UNICODE_DATA
103
192
NOTE: Disabling this will cause many String methods to crash."
104
193
TRUE )
105
194
195
+ include (Threading )
196
+
197
+ threading_package_default ("${SWIFT_HOST_VARIANT_SDK} "
198
+ SWIFT_THREADING_PACKAGE_default )
199
+
200
+ set (SWIFT_THREADING_PACKAGE "${SWIFT_THREADING_PACKAGE_default} "
201
+ CACHE STRING
202
+ "The threading package to use. Must be one of 'none', 'pthreads',
203
+ 'darwin', 'linux', 'win32', 'c11'." )
204
+
106
205
option (SWIFT_BUILD_DYNAMIC_SDK_OVERLAY
107
206
"Build dynamic variants of the Swift SDK overlay"
108
207
TRUE )
@@ -636,6 +735,7 @@ set(SWIFT_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/include")
636
735
set (SWIFT_RUNTIME_OUTPUT_INTDIR "${CMAKE_BINARY_DIR} /${CMAKE_CFG_INTDIR} /bin" )
637
736
set (SWIFT_LIBRARY_OUTPUT_INTDIR "${CMAKE_BINARY_DIR} /${CMAKE_CFG_INTDIR} /lib" )
638
737
if ("${SWIFT_NATIVE_SWIFT_TOOLS_PATH} " STREQUAL "" )
738
+ # This is the normal case. We are not cross-compiling.
639
739
set (SWIFT_NATIVE_SWIFT_TOOLS_PATH "${SWIFT_RUNTIME_OUTPUT_INTDIR} " )
640
740
set (SWIFT_EXEC_FOR_SWIFT_MODULES "${CMAKE_Swift_COMPILER} " )
641
741
elseif (BOOTSTRAPPING_MODE MATCHES "BOOTSTRAPPING.*" )
@@ -650,6 +750,12 @@ elseif(BOOTSTRAPPING_MODE MATCHES "BOOTSTRAPPING.*")
650
750
else ()
651
751
set (BOOTSTRAPPING_MODE "HOSTTOOLS" )
652
752
endif ()
753
+ elseif (BOOTSTRAPPING_MODE STREQUAL "HOSTTOOLS" )
754
+ # We are building using a pre-installed host toolchain but not bootstrapping
755
+ # the Swift modules. This happens when building using 'build-tooling-libs'
756
+ # where we haven't built a new Swift compiler. Use the Swift compiler from the
757
+ # pre-installed host toolchain to build the Swift modules.
758
+ set (SWIFT_EXEC_FOR_SWIFT_MODULES "${CMAKE_Swift_COMPILER} " )
653
759
endif ()
654
760
655
761
if (BOOTSTRAPPING_MODE MATCHES "HOSTTOOLS|.*-WITH-HOSTLIBS" )
@@ -676,27 +782,6 @@ include_directories(BEFORE
676
782
${SWIFT_INCLUDE_DIR}
677
783
)
678
784
679
- # A convenience pattern to match Darwin platforms. Example:
680
- # if(SWIFT_HOST_VARIANT MATCHES "${SWIFT_DARWIN_VARIANTS}")
681
- # ...
682
- # endif()
683
- set (SWIFT_DARWIN_VARIANTS "^(macosx|iphoneos|iphonesimulator|appletvos|appletvsimulator|watchos|watchsimulator)" )
684
- set (SWIFT_DARWIN_EMBEDDED_VARIANTS "^(iphoneos|iphonesimulator|appletvos|appletvsimulator|watchos|watchsimulator)" )
685
-
686
- # A convenient list to match Darwin SDKs. Example:
687
- # if("${SWIFT_HOST_VARIANT_SDK}" IN_LIST SWIFT_DARWIN_PLATFORMS)
688
- # ...
689
- # endif()
690
- set (SWIFT_DARWIN_PLATFORMS "IOS" "IOS_SIMULATOR" "TVOS" "TVOS_SIMULATOR" "WATCHOS" "WATCHOS_SIMULATOR" "OSX" )
691
-
692
- set (SWIFT_APPLE_PLATFORMS ${SWIFT_DARWIN_PLATFORMS} )
693
- if (SWIFT_FREESTANDING_FLAVOR STREQUAL "apple" )
694
- list (APPEND SWIFT_APPLE_PLATFORMS "FREESTANDING" )
695
- if (SWIFT_FREESTANDING_IS_DARWIN )
696
- list (APPEND SWIFT_DARWIN_PLATFORMS "FREESTANDING" )
697
- endif ()
698
- endif ()
699
-
700
785
# Configuration flags passed to all of our invocations of gyb. Try to
701
786
# avoid making up new variable names here if you can find a CMake
702
787
# variable that will do the job.
@@ -713,74 +798,6 @@ if(XCODE)
713
798
swift_common_xcode_cxx_config ()
714
799
endif ()
715
800
716
- # If SWIFT_HOST_VARIANT_SDK not given, try to detect from the CMAKE_SYSTEM_NAME.
717
- if (SWIFT_HOST_VARIANT_SDK )
718
- set (SWIFT_HOST_VARIANT_SDK_default "${SWIFT_HOST_VARIANT_SDK} " )
719
- else ()
720
- if ("${CMAKE_SYSTEM_NAME} " STREQUAL "Linux" )
721
- set (SWIFT_HOST_VARIANT_SDK_default "LINUX" )
722
- elseif ("${CMAKE_SYSTEM_NAME} " STREQUAL "FreeBSD" )
723
- set (SWIFT_HOST_VARIANT_SDK_default "FREEBSD" )
724
- elseif ("${CMAKE_SYSTEM_NAME} " STREQUAL "OpenBSD" )
725
- set (SWIFT_HOST_VARIANT_SDK_default "OPENBSD" )
726
- elseif ("${CMAKE_SYSTEM_NAME} " STREQUAL "CYGWIN" )
727
- set (SWIFT_HOST_VARIANT_SDK_default "CYGWIN" )
728
- elseif ("${CMAKE_SYSTEM_NAME} " STREQUAL "Windows" )
729
- set (SWIFT_HOST_VARIANT_SDK_default "WINDOWS" )
730
- elseif ("${CMAKE_SYSTEM_NAME} " STREQUAL "Haiku" )
731
- set (SWIFT_HOST_VARIANT_SDK_default "HAIKU" )
732
- elseif ("${CMAKE_SYSTEM_NAME} " STREQUAL "Android" )
733
- set (SWIFT_HOST_VARIANT_SDK_default "ANDROID" )
734
- elseif ("${CMAKE_SYSTEM_NAME} " STREQUAL "Darwin" )
735
- set (SWIFT_HOST_VARIANT_SDK_default "OSX" )
736
- else ()
737
- message (FATAL_ERROR "Unable to detect SDK for host system: ${CMAKE_SYSTEM_NAME} " )
738
- endif ()
739
- endif ()
740
-
741
- # If SWIFT_HOST_VARIANT_ARCH not given, try to detect from the CMAKE_SYSTEM_PROCESSOR.
742
- if (SWIFT_HOST_VARIANT_ARCH )
743
- set (SWIFT_HOST_VARIANT_ARCH_default "${SWIFT_HOST_VARIANT_ARCH} " )
744
- else ()
745
- if (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64" )
746
- set (SWIFT_HOST_VARIANT_ARCH_default "x86_64" )
747
- elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|ARM64|arm64" )
748
- if (SWIFT_HOST_VARIANT_SDK_default STREQUAL OSX )
749
- set (SWIFT_HOST_VARIANT_ARCH_default "arm64" )
750
- else ()
751
- set (SWIFT_HOST_VARIANT_ARCH_default "aarch64" )
752
- endif ()
753
- elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "ppc64" )
754
- set (SWIFT_HOST_VARIANT_ARCH_default "powerpc64" )
755
- elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "ppc" )
756
- set (SWIFT_HOST_VARIANT_ARCH_default "powerpc" )
757
- elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "ppc64le" )
758
- set (SWIFT_HOST_VARIANT_ARCH_default "powerpc64le" )
759
- elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "s390x" )
760
- set (SWIFT_HOST_VARIANT_ARCH_default "s390x" )
761
- elseif ("${CMAKE_SYSTEM_PROCESSOR} " MATCHES "armv5|armv5te" )
762
- set (SWIFT_HOST_VARIANT_ARCH_default "armv5" )
763
- # FIXME: Only matches v6l/v7l - by far the most common variants
764
- elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "armv6l" )
765
- set (SWIFT_HOST_VARIANT_ARCH_default "armv6" )
766
- elseif ("${CMAKE_SYSTEM_PROCESSOR} " MATCHES "armv7l|armv7-a" )
767
- set (SWIFT_HOST_VARIANT_ARCH_default "armv7" )
768
- elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "IA64" )
769
- set (SWIFT_HOST_VARIANT_ARCH_default "itanium" )
770
- elseif ("${CMAKE_SYSTEM_PROCESSOR} " MATCHES "(x86|i686)" )
771
- set (SWIFT_HOST_VARIANT_ARCH_default "i686" )
772
- elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "wasm32" )
773
- set (SWIFT_HOST_VARIANT_ARCH_default "wasm32" )
774
- else ()
775
- message (FATAL_ERROR "Unrecognized architecture on host system: ${CMAKE_SYSTEM_PROCESSOR} " )
776
- endif ()
777
- endif ()
778
-
779
- set (SWIFT_HOST_VARIANT_SDK "${SWIFT_HOST_VARIANT_SDK_default} " CACHE STRING
780
- "Deployment sdk for Swift host tools (the compiler)." )
781
- set (SWIFT_HOST_VARIANT_ARCH "${SWIFT_HOST_VARIANT_ARCH_default} " CACHE STRING
782
- "Deployment arch for Swift host tools (the compiler)." )
783
-
784
801
# Which default linker to use. Prefer LLVM_USE_LINKER if it set, otherwise use
785
802
# our own defaults. This should only be possible in a unified (not stand alone)
786
803
# build environment.
@@ -1042,11 +1059,12 @@ if(SWIFT_BUILD_STDLIB OR SWIFT_BUILD_SDK_OVERLAY)
1042
1059
message (STATUS " Leak Detection Checker Entrypoints: ${SWIFT_RUNTIME_ENABLE_LEAK_CHECKER} " )
1043
1060
message (STATUS "" )
1044
1061
1062
+ message (STATUS "Threading Package: ${SWIFT_THREADING_PACKAGE} " )
1045
1063
message (STATUS "Differentiable Programming Support: ${SWIFT_ENABLE_EXPERIMENTAL_DIFFERENTIABLE_PROGRAMMING} " )
1046
- message (STATUS "Concurrency Support: ${SWIFT_ENABLE_EXPERIMENTAL_CONCURRENCY} " )
1047
- message (STATUS "Distributed Support: ${SWIFT_ENABLE_EXPERIMENTAL_DISTRIBUTED} " )
1048
- message (STATUS "String Processing Support: ${SWIFT_ENABLE_EXPERIMENTAL_STRING_PROCESSING} " )
1049
- message (STATUS "Unicode Support: ${SWIFT_STDLIB_ENABLE_UNICODE_DATA} " )
1064
+ message (STATUS "Concurrency Support: ${SWIFT_ENABLE_EXPERIMENTAL_CONCURRENCY} " )
1065
+ message (STATUS "Distributed Support: ${SWIFT_ENABLE_EXPERIMENTAL_DISTRIBUTED} " )
1066
+ message (STATUS "String Processing Support: ${SWIFT_ENABLE_EXPERIMENTAL_STRING_PROCESSING} " )
1067
+ message (STATUS "Unicode Support: ${SWIFT_STDLIB_ENABLE_UNICODE_DATA} " )
1050
1068
message (STATUS "" )
1051
1069
else ()
1052
1070
message (STATUS "Not building Swift standard library, SDK overlays, and runtime" )
@@ -1120,6 +1138,9 @@ endif()
1120
1138
if (SWIFT_BUILD_STDLIB )
1121
1139
add_subdirectory (stdlib )
1122
1140
else ()
1141
+ # Some of the things below depend on the threading library
1142
+ add_subdirectory (stdlib/public/Threading )
1143
+
1123
1144
if (SWIFT_BUILD_STDLIB_EXTRA_TOOLCHAIN_CONTENT )
1124
1145
add_subdirectory (stdlib/toolchain )
1125
1146
endif ()
0 commit comments