@@ -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 )
@@ -636,6 +735,7 @@ set(SWIFT_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/include")
636735set (SWIFT_RUNTIME_OUTPUT_INTDIR "${CMAKE_BINARY_DIR} /${CMAKE_CFG_INTDIR} /bin" )
637736set (SWIFT_LIBRARY_OUTPUT_INTDIR "${CMAKE_BINARY_DIR} /${CMAKE_CFG_INTDIR} /lib" )
638737if ("${SWIFT_NATIVE_SWIFT_TOOLS_PATH} " STREQUAL "" )
738+ # This is the normal case. We are not cross-compiling.
639739 set (SWIFT_NATIVE_SWIFT_TOOLS_PATH "${SWIFT_RUNTIME_OUTPUT_INTDIR} " )
640740 set (SWIFT_EXEC_FOR_SWIFT_MODULES "${CMAKE_Swift_COMPILER} " )
641741elseif (BOOTSTRAPPING_MODE MATCHES "BOOTSTRAPPING.*" )
@@ -650,6 +750,12 @@ elseif(BOOTSTRAPPING_MODE MATCHES "BOOTSTRAPPING.*")
650750 else ()
651751 set (BOOTSTRAPPING_MODE "HOSTTOOLS" )
652752 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} " )
653759endif ()
654760
655761if (BOOTSTRAPPING_MODE MATCHES "HOSTTOOLS|.*-WITH-HOSTLIBS" )
@@ -676,27 +782,6 @@ include_directories(BEFORE
676782 ${SWIFT_INCLUDE_DIR}
677783 )
678784
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-
700785# Configuration flags passed to all of our invocations of gyb. Try to
701786# avoid making up new variable names here if you can find a CMake
702787# variable that will do the job.
@@ -713,74 +798,6 @@ if(XCODE)
713798 swift_common_xcode_cxx_config()
714799endif ()
715800
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-
784801# Which default linker to use. Prefer LLVM_USE_LINKER if it set, otherwise use
785802# our own defaults. This should only be possible in a unified (not stand alone)
786803# build environment.
@@ -1042,11 +1059,12 @@ if(SWIFT_BUILD_STDLIB OR SWIFT_BUILD_SDK_OVERLAY)
10421059 message (STATUS " Leak Detection Checker Entrypoints: ${SWIFT_RUNTIME_ENABLE_LEAK_CHECKER} " )
10431060 message (STATUS "" )
10441061
1062+ message (STATUS "Threading Package: ${SWIFT_THREADING_PACKAGE} " )
10451063 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} " )
10501068 message (STATUS "" )
10511069else ()
10521070 message (STATUS "Not building Swift standard library, SDK overlays, and runtime" )
@@ -1120,6 +1138,9 @@ endif()
11201138if (SWIFT_BUILD_STDLIB)
11211139 add_subdirectory (stdlib)
11221140else ()
1141+ # Some of the things below depend on the threading library
1142+ add_subdirectory (stdlib/public /Threading)
1143+
11231144 if (SWIFT_BUILD_STDLIB_EXTRA_TOOLCHAIN_CONTENT)
11241145 add_subdirectory (stdlib/toolchain)
11251146 endif ()
0 commit comments