@@ -66,6 +66,95 @@ else()
6666 any compiler host sources written in Swift" )
6767endif ()
6868
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+
69158#
70159# User-configurable options that control the inclusion and default build
71160# behavior for components which may not strictly be necessary (tools, examples,
@@ -103,6 +192,16 @@ option(SWIFT_STDLIB_ENABLE_UNICODE_DATA
103192 NOTE: Disabling this will cause many String methods to crash."
104193 TRUE )
105194
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+
106205option (SWIFT_BUILD_DYNAMIC_SDK_OVERLAY
107206 "Build dynamic variants of the Swift SDK overlay"
108207 TRUE )
@@ -671,27 +770,6 @@ include_directories(BEFORE
671770 ${SWIFT_INCLUDE_DIR}
672771 )
673772
674- # A convenience pattern to match Darwin platforms. Example:
675- # if(SWIFT_HOST_VARIANT MATCHES "${SWIFT_DARWIN_VARIANTS}")
676- # ...
677- # endif()
678- set (SWIFT_DARWIN_VARIANTS "^(macosx|iphoneos|iphonesimulator|appletvos|appletvsimulator|watchos|watchsimulator)" )
679- set (SWIFT_DARWIN_EMBEDDED_VARIANTS "^(iphoneos|iphonesimulator|appletvos|appletvsimulator|watchos|watchsimulator)" )
680-
681- # A convenient list to match Darwin SDKs. Example:
682- # if("${SWIFT_HOST_VARIANT_SDK}" IN_LIST SWIFT_DARWIN_PLATFORMS)
683- # ...
684- # endif()
685- set (SWIFT_DARWIN_PLATFORMS "IOS" "IOS_SIMULATOR" "TVOS" "TVOS_SIMULATOR" "WATCHOS" "WATCHOS_SIMULATOR" "OSX" )
686-
687- set (SWIFT_APPLE_PLATFORMS ${SWIFT_DARWIN_PLATFORMS} )
688- if (SWIFT_FREESTANDING_FLAVOR STREQUAL "apple" )
689- list (APPEND SWIFT_APPLE_PLATFORMS "FREESTANDING" )
690- if (SWIFT_FREESTANDING_IS_DARWIN)
691- list (APPEND SWIFT_DARWIN_PLATFORMS "FREESTANDING" )
692- endif ()
693- endif ()
694-
695773# Configuration flags passed to all of our invocations of gyb. Try to
696774# avoid making up new variable names here if you can find a CMake
697775# variable that will do the job.
@@ -708,74 +786,6 @@ if(XCODE)
708786 swift_common_xcode_cxx_config()
709787endif ()
710788
711- # If SWIFT_HOST_VARIANT_SDK not given, try to detect from the CMAKE_SYSTEM_NAME.
712- if (SWIFT_HOST_VARIANT_SDK)
713- set (SWIFT_HOST_VARIANT_SDK_default "${SWIFT_HOST_VARIANT_SDK} " )
714- else ()
715- if ("${CMAKE_SYSTEM_NAME} " STREQUAL "Linux" )
716- set (SWIFT_HOST_VARIANT_SDK_default "LINUX" )
717- elseif ("${CMAKE_SYSTEM_NAME} " STREQUAL "FreeBSD" )
718- set (SWIFT_HOST_VARIANT_SDK_default "FREEBSD" )
719- elseif ("${CMAKE_SYSTEM_NAME} " STREQUAL "OpenBSD" )
720- set (SWIFT_HOST_VARIANT_SDK_default "OPENBSD" )
721- elseif ("${CMAKE_SYSTEM_NAME} " STREQUAL "CYGWIN" )
722- set (SWIFT_HOST_VARIANT_SDK_default "CYGWIN" )
723- elseif ("${CMAKE_SYSTEM_NAME} " STREQUAL "Windows" )
724- set (SWIFT_HOST_VARIANT_SDK_default "WINDOWS" )
725- elseif ("${CMAKE_SYSTEM_NAME} " STREQUAL "Haiku" )
726- set (SWIFT_HOST_VARIANT_SDK_default "HAIKU" )
727- elseif ("${CMAKE_SYSTEM_NAME} " STREQUAL "Android" )
728- set (SWIFT_HOST_VARIANT_SDK_default "ANDROID" )
729- elseif ("${CMAKE_SYSTEM_NAME} " STREQUAL "Darwin" )
730- set (SWIFT_HOST_VARIANT_SDK_default "OSX" )
731- else ()
732- message (FATAL_ERROR "Unable to detect SDK for host system: ${CMAKE_SYSTEM_NAME} " )
733- endif ()
734- endif ()
735-
736- # If SWIFT_HOST_VARIANT_ARCH not given, try to detect from the CMAKE_SYSTEM_PROCESSOR.
737- if (SWIFT_HOST_VARIANT_ARCH)
738- set (SWIFT_HOST_VARIANT_ARCH_default "${SWIFT_HOST_VARIANT_ARCH} " )
739- else ()
740- if (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64" )
741- set (SWIFT_HOST_VARIANT_ARCH_default "x86_64" )
742- elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|ARM64|arm64" )
743- if (SWIFT_HOST_VARIANT_SDK_default STREQUAL OSX)
744- set (SWIFT_HOST_VARIANT_ARCH_default "arm64" )
745- else ()
746- set (SWIFT_HOST_VARIANT_ARCH_default "aarch64" )
747- endif ()
748- elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "ppc64" )
749- set (SWIFT_HOST_VARIANT_ARCH_default "powerpc64" )
750- elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "ppc" )
751- set (SWIFT_HOST_VARIANT_ARCH_default "powerpc" )
752- elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "ppc64le" )
753- set (SWIFT_HOST_VARIANT_ARCH_default "powerpc64le" )
754- elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "s390x" )
755- set (SWIFT_HOST_VARIANT_ARCH_default "s390x" )
756- elseif ("${CMAKE_SYSTEM_PROCESSOR} " MATCHES "armv5|armv5te" )
757- set (SWIFT_HOST_VARIANT_ARCH_default "armv5" )
758- # FIXME: Only matches v6l/v7l - by far the most common variants
759- elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "armv6l" )
760- set (SWIFT_HOST_VARIANT_ARCH_default "armv6" )
761- elseif ("${CMAKE_SYSTEM_PROCESSOR} " MATCHES "armv7l|armv7-a" )
762- set (SWIFT_HOST_VARIANT_ARCH_default "armv7" )
763- elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "IA64" )
764- set (SWIFT_HOST_VARIANT_ARCH_default "itanium" )
765- elseif ("${CMAKE_SYSTEM_PROCESSOR} " MATCHES "(x86|i686)" )
766- set (SWIFT_HOST_VARIANT_ARCH_default "i686" )
767- elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "wasm32" )
768- set (SWIFT_HOST_VARIANT_ARCH_default "wasm32" )
769- else ()
770- message (FATAL_ERROR "Unrecognized architecture on host system: ${CMAKE_SYSTEM_PROCESSOR} " )
771- endif ()
772- endif ()
773-
774- set (SWIFT_HOST_VARIANT_SDK "${SWIFT_HOST_VARIANT_SDK_default} " CACHE STRING
775- "Deployment sdk for Swift host tools (the compiler)." )
776- set (SWIFT_HOST_VARIANT_ARCH "${SWIFT_HOST_VARIANT_ARCH_default} " CACHE STRING
777- "Deployment arch for Swift host tools (the compiler)." )
778-
779789# Which default linker to use. Prefer LLVM_USE_LINKER if it set, otherwise use
780790# our own defaults. This should only be possible in a unified (not stand alone)
781791# build environment.
@@ -1037,11 +1047,12 @@ if(SWIFT_BUILD_STDLIB OR SWIFT_BUILD_SDK_OVERLAY)
10371047 message (STATUS " Leak Detection Checker Entrypoints: ${SWIFT_RUNTIME_ENABLE_LEAK_CHECKER} " )
10381048 message (STATUS "" )
10391049
1050+ message (STATUS "Threading Package: ${SWIFT_THREADING_PACKAGE} " )
10401051 message (STATUS "Differentiable Programming Support: ${SWIFT_ENABLE_EXPERIMENTAL_DIFFERENTIABLE_PROGRAMMING} " )
1041- message (STATUS "Concurrency Support: ${SWIFT_ENABLE_EXPERIMENTAL_CONCURRENCY} " )
1042- message (STATUS "Distributed Support: ${SWIFT_ENABLE_EXPERIMENTAL_DISTRIBUTED} " )
1043- message (STATUS "String Processing Support: ${SWIFT_ENABLE_EXPERIMENTAL_STRING_PROCESSING} " )
1044- message (STATUS "Unicode Support: ${SWIFT_STDLIB_ENABLE_UNICODE_DATA} " )
1052+ message (STATUS "Concurrency Support: ${SWIFT_ENABLE_EXPERIMENTAL_CONCURRENCY} " )
1053+ message (STATUS "Distributed Support: ${SWIFT_ENABLE_EXPERIMENTAL_DISTRIBUTED} " )
1054+ message (STATUS "String Processing Support: ${SWIFT_ENABLE_EXPERIMENTAL_STRING_PROCESSING} " )
1055+ message (STATUS "Unicode Support: ${SWIFT_STDLIB_ENABLE_UNICODE_DATA} " )
10451056 message (STATUS "" )
10461057else ()
10471058 message (STATUS "Not building Swift standard library, SDK overlays, and runtime" )
@@ -1115,6 +1126,9 @@ endif()
11151126if (SWIFT_BUILD_STDLIB)
11161127 add_subdirectory (stdlib)
11171128else ()
1129+ # Some of the things below depend on the threading library
1130+ add_subdirectory (stdlib/public /Threading)
1131+
11181132 if (SWIFT_BUILD_STDLIB_EXTRA_TOOLCHAIN_CONTENT)
11191133 add_subdirectory (stdlib/toolchain)
11201134 endif ()
0 commit comments