diff --git a/CMakeLists.txt b/CMakeLists.txt index 2b0150e8f4cc0..a3a4d15c54fd2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -192,16 +192,6 @@ option(SWIFT_STDLIB_ENABLE_UNICODE_DATA NOTE: Disabling this will cause many String methods to crash." TRUE) -include(Threading) - -threading_package_default("${SWIFT_HOST_VARIANT_SDK}" - SWIFT_THREADING_PACKAGE_default) - -set(SWIFT_THREADING_PACKAGE "${SWIFT_THREADING_PACKAGE_default}" - CACHE STRING - "The threading package to use. Must be one of 'none', 'pthreads', - 'darwin', 'linux', 'win32', 'c11'.") - option(SWIFT_BUILD_DYNAMIC_SDK_OVERLAY "Build dynamic variants of the Swift SDK overlay" TRUE) @@ -1054,7 +1044,6 @@ if(SWIFT_BUILD_STDLIB OR SWIFT_BUILD_SDK_OVERLAY) message(STATUS " Leak Detection Checker Entrypoints: ${SWIFT_RUNTIME_ENABLE_LEAK_CHECKER}") message(STATUS "") - message(STATUS "Threading Package: ${SWIFT_THREADING_PACKAGE}") message(STATUS "Differentiable Programming Support: ${SWIFT_ENABLE_EXPERIMENTAL_DIFFERENTIABLE_PROGRAMMING}") message(STATUS "Concurrency Support: ${SWIFT_ENABLE_EXPERIMENTAL_CONCURRENCY}") message(STATUS "Distributed Support: ${SWIFT_ENABLE_EXPERIMENTAL_DISTRIBUTED}") diff --git a/cmake/modules/Threading.cmake b/cmake/modules/Threading.cmake index f439ed0ba90b0..979f2e1ca0d1f 100644 --- a/cmake/modules/Threading.cmake +++ b/cmake/modules/Threading.cmake @@ -1,5 +1,7 @@ # Get the default threading package for the platform function(threading_package_default sdk out_var) + precondition(SWIFT_DARWIN_PLATFORMS) + if(sdk IN_LIST SWIFT_DARWIN_PLATFORMS) set("${out_var}" "darwin" PARENT_SCOPE) elseif(sdk STREQUAL "LINUX") @@ -13,16 +15,30 @@ function(threading_package_default sdk out_var) endif() endfunction() +# Get the selected threading package +function(threading_package_or_default sdk out_var) + if("${SWIFT_SDK_${sdk}_THREADING_PACKAGE}") + set(package "${SWIFT_SDK_${sdk}_THREADING_PACKAGE}") + else() + set(package "${SWIFT_THREADING_PACKAGE}") + endif() + if(package STREQUAL "") + threading_package_default("${sdk}" package) + endif() + set("${out_var}" "${package}" PARENT_SCOPE) +endfunction() + # Given the threading package, find the name for the preprocessor # define that we need to make. Also deals with the default platform # setting. function(threading_package_name sdk out_var) - precondition(SWIFT_HOST_VARIANT_SDK) - precondition(SWIFT_DARWIN_PLATFORMS) - - string(TOUPPER "${SWIFT_THREADING_PACKAGE}" package) + if("${SWIFT_SDK_${sdk}_THREADING_PACKAGE}") + string(TOUPPER "${SWIFT_SDK_${sdk}_THREADING_PACKAGE}" package) + else() + string(TOUPPER "${SWIFT_THREADING_PACKAGE}" package) + endif() if(package STREQUAL "") - threading_package_default(package) + threading_package_default("${sdk}" package) string(TOUPPER "${package}" package) endif() set("${out_var}" "${package}" PARENT_SCOPE) diff --git a/stdlib/cmake/modules/StdlibOptions.cmake b/stdlib/cmake/modules/StdlibOptions.cmake index 04e5e6c842e84..a54ad8df2af7b 100644 --- a/stdlib/cmake/modules/StdlibOptions.cmake +++ b/stdlib/cmake/modules/StdlibOptions.cmake @@ -191,16 +191,6 @@ else() set(SWIFT_CONCURRENCY_GLOBAL_EXECUTOR_default "dispatch") endif() -include(Threading) - -threading_package_default("${SWIFT_HOST_VARIANT_SDK}" - SWIFT_THREADING_PACKAGE_default) - -set(SWIFT_THREADING_PACKAGE "${SWIFT_THREADING_PACKAGE_default}" - CACHE STRING - "The threading package to use. Must be one of 'none', 'pthreads', - 'darwin', 'linux', 'win32', 'c11'.") - set(SWIFT_CONCURRENCY_GLOBAL_EXECUTOR "${SWIFT_CONCURRENCY_GLOBAL_EXECUTOR_default}" CACHE STRING "Build the concurrency library to use the given global executor (options: dispatch, singlethreaded, hooked)") diff --git a/stdlib/cmake/modules/SwiftSource.cmake b/stdlib/cmake/modules/SwiftSource.cmake index c5c6366bcb5ec..63136a90e8bf8 100644 --- a/stdlib/cmake/modules/SwiftSource.cmake +++ b/stdlib/cmake/modules/SwiftSource.cmake @@ -483,7 +483,8 @@ function(_compile_swift_files list(APPEND swift_flags "-Xfrontend" "-library-level" "-Xfrontend" "api") endif() - if(SWIFT_THREADING_PACKAGE STREQUAL "none") + threading_package_or_default("${SWIFTFILE_SDK}" _threading_package) + if(_threading_package STREQUAL "none") list(APPEND swift_flags "-Xfrontend" "-assume-single-threaded") endif() diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 30883669dcc20..cbc507fbb93b6 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -398,9 +398,9 @@ foreach(SDK ${SWIFT_SDKS}) if("${SWIFT_SDK_${SDK}_THREADING_PACKAGE}") list(APPEND LIT_ARGS "--param" "threading=${SWIFT_SDK_${SDK}_THREADING_PACKAGE}") else() - threading_package_default("${SDK}" SWIFT_THREADING_PACKAGE) + threading_package_or_default("${SDK}" _threading_package) list(APPEND LIT_ARGS "--param" - "threading=${SWIFT_THREADING_PACKAGE}") + "threading=${_threading_package}") endif() foreach(test_subset ${TEST_SUBSETS}) diff --git a/test/lit.site.cfg.in b/test/lit.site.cfg.in index 1299d45c51534..a2218bbccba11 100644 --- a/test/lit.site.cfg.in +++ b/test/lit.site.cfg.in @@ -99,11 +99,6 @@ if "@SWIFT_OPTIMIZED@" == "TRUE": if "@SWIFT_STDLIB_SINGLE_THREADED_CONCURRENCY@" == "TRUE": config.available_features.add("single_threaded_concurrency") -if "@SWIFT_THREADING_PACKAGE@" != "none": - # This is not called "threading" because we might want that later - config.available_features.add("thread_safe_runtime") - config.available_features.add("threading_@SWIFT_THREADING_PACKAGE@") - if "@SWIFT_ENABLE_REFLECTION@" == "TRUE": config.available_features.add("reflection")