Skip to content

[Threading] Fix threading package defaults. #59589

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 0 additions & 11 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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}")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please replace this info output elsewhere on a per-SDK basis, say in _report_sdk() if possible.

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}")
Expand Down
26 changes: 21 additions & 5 deletions cmake/modules/Threading.cmake
Original file line number Diff line number Diff line change
@@ -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")
Expand All @@ -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)
Expand Down
10 changes: 0 additions & 10 deletions stdlib/cmake/modules/StdlibOptions.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -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)")
Expand Down
3 changes: 2 additions & 1 deletion stdlib/cmake/modules/SwiftSource.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -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()

Expand Down
4 changes: 2 additions & 2 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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})
Expand Down
5 changes: 0 additions & 5 deletions test/lit.site.cfg.in
Original file line number Diff line number Diff line change
Expand Up @@ -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")

Expand Down