@@ -13,6 +13,7 @@ function(_report_sdk prefix)
1313 message (STATUS "${SWIFT_SDK_${prefix} _NAME} SDK:" )
1414 message (STATUS " Object File Format: ${SWIFT_SDK_${prefix} _OBJECT_FORMAT}" )
1515 message (STATUS " Swift Standard Library Path: ${SWIFT_SDK_${prefix} _LIB_SUBDIR}" )
16+ message (STATUS " Threading Package: ${SWIFT_SDK_${prefix} _THREADING_PACKAGE}" )
1617
1718 if ("${prefix} " STREQUAL "WINDOWS" )
1819 message (STATUS " UCRT Version: ${UCRTVersion} " )
@@ -101,6 +102,34 @@ function(remove_sdk_unsupported_archs name os sdk_path architectures_var)
101102 set ("${architectures_var} " ${architectures} PARENT_SCOPE)
102103endfunction ()
103104
105+ # Work out which threading package to use by consulting SWIFT_THREADING_PACKAGE
106+ function (find_threading_package sdk default package_var)
107+ set (global_override)
108+ foreach (elt ${SWIFT_THREADING_PACKAGE} )
109+ string (REPLACE ":" ";" elt_list "${elt} " )
110+ list (LENGTH elt_list elt_list_len)
111+ if (elt_list_len EQUAL 1)
112+ list (GET elt_list 0 global_override)
113+ string (TOLOWER "${global_override} " global_override)
114+ else ()
115+ list (GET elt_list 0 elt_sdk)
116+ list (GET elt_list 1 elt_package)
117+ string (TOUPPER "${elt_sdk} " elt_sdk)
118+ string (TOLOWER "${elt_package} " elt_package)
119+
120+ if ("${elt_sdk} " STREQUAL "${sdk} " )
121+ set ("${package_var} " "${elt_package} " PARENT_SCOPE)
122+ return ()
123+ endif ()
124+ endif ()
125+ endforeach ()
126+ if (global_override)
127+ set ("${package_var} " "${global_override} " PARENT_SCOPE)
128+ else ()
129+ set ("${package_var} " "${default} " PARENT_SCOPE)
130+ endif ()
131+ endfunction ()
132+
104133# Configure an SDK
105134#
106135# Usage:
@@ -179,6 +208,7 @@ macro(configure_sdk_darwin
179208 set (SWIFT_SDK_${prefix} _STATIC_LIBRARY_SUFFIX ".a" )
180209 set (SWIFT_SDK_${prefix} _IMPORT_LIBRARY_PREFIX "" )
181210 set (SWIFT_SDK_${prefix} _IMPORT_LIBRARY_SUFFIX "" )
211+ find_threading_package(${prefix} "darwin" SWIFT_SDK_${prefix} _THREADING_PACKAGE)
182212
183213 set (SWIFT_SDK_${prefix} _ARCHITECTURES ${architectures} )
184214 if (SWIFT_DARWIN_SUPPORTED_ARCHS)
@@ -297,6 +327,15 @@ macro(configure_sdk_unix name architectures)
297327 -Xcc --gcc-toolchain=/usr
298328 CACHE STRING "Extra flags for compiling the C++ overlay" )
299329
330+ set (_default_threading_package "pthreads" )
331+ if ("${prefix} " STREQUAL "LINUX" )
332+ set (_default_threading_package "linux" )
333+ elseif ("${prefix} " STREQUAL "WASI" )
334+ set (_default_threading_package "none" )
335+ endif ()
336+ find_threading_package(${prefix} ${_default_threading_package}
337+ SWIFT_SDK_${prefix} _THREADING_PACKAGE)
338+
300339 foreach (arch ${architectures} )
301340 if ("${prefix} " STREQUAL "ANDROID" )
302341 swift_android_sysroot(android_sysroot)
@@ -423,6 +462,7 @@ macro(configure_sdk_windows name environment architectures)
423462 set (SWIFT_SDK_${prefix} _STATIC_LIBRARY_SUFFIX ".lib" )
424463 set (SWIFT_SDK_${prefix} _IMPORT_LIBRARY_PREFIX "" )
425464 set (SWIFT_SDK_${prefix} _IMPORT_LIBRARY_SUFFIX ".lib" )
465+ find_threading_package(${prefix} "win32" SWIFT_SDK_${prefix} _THREADING_PACKAGE)
426466
427467 foreach (arch ${architectures} )
428468 if (arch STREQUAL armv7)
@@ -489,5 +529,6 @@ function(configure_target_variant prefix name sdk build_config lib_subdir)
489529 set (SWIFT_VARIANT_${prefix} _STATIC_LIBRARY_SUFFIX ${SWIFT_SDK_${sdk} _STATIC_LIBRARY_SUFFIX})
490530 set (SWIFT_VARIANT_${prefix} _IMPORT_LIBRARY_PREFIX ${SWIFT_SDK_${sdk} _IMPORT_LIBRARY_PREFIX})
491531 set (SWIFT_VARIANT_${prefix} _IMPORT_LIBRARY_SUFFIX ${SWIFT_SDK_${sdk} _IMPORT_LIBRARY_SUFFIX})
532+ find_threading_package(${prefix} ${SWIFT_SDK_${sdk} _THREADING_PACKAGE} SWIFT_VARIANT_${prefix} _THREADING_PACKAGE)
492533endfunction ()
493534
0 commit comments