-
Notifications
You must be signed in to change notification settings - Fork 10.4k
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
[5.9] CMake: fix missing SWIFT_CONCURRENCY_GLOBAL_EXECUTOR
#65824
Conversation
`SWIFT_CONCURRENCY_GLOBAL_EXECUTOR` is defined in `stdlib/cmake/modules/StdlibOptions.cmake`, which is not included during the first pass of evaluation of the root `CMakeLists.txt`. It is available on subsequent evaluations after the value is stored in CMake cache. This led to subtle bugs, where `usr/lib/swift_static/linux/static-stdlib-args.lnk` didn't contain certain flags on clean toolchain builds, but did contain them in incremental builds. Not having these autolinking flags in toolchain builds leads to errors when statically linking executables on Linux.
@swift-ci test |
swiftlang/swift-integration-tests#78 @swift-ci build toolchain |
It is only used in the stdlib build, so really has no business being set in the root `CMakeLists.txt`.
@swift-ci test |
@swift-ci build toolchain |
1 similar comment
@swift-ci build toolchain |
swiftlang/swift-integration-tests#115 @swift-ci build toolchain |
@swift-ci test |
swiftlang/swift-integration-tests#115 @swift-ci build toolchain |
swiftlang/swift-integration-tests#115 @swift-ci build toolchain macOS |
Current |
swiftlang/swift-integration-tests#115 @swift-ci build toolchain macOS |
[5.8] CMake: fix missing `SWIFT_CONCURRENCY_GLOBAL_EXECUTOR` Explanation: Resolves issues with static linking on Linux Risk: Medium, affects Linux builds and top-level CMake declarations. Original PRs: #65795 and #64312 for `main`, #65824 and #64633 for `release/5.9` Reviewed by: @al45tair @drexin @etcwilde Resolves: some of the issues reported in #65097, also resolves #58380 Tests: Added in swiftlang/swift-integration-tests#118 `SWIFT_CONCURRENCY_GLOBAL_EXECUTOR` is defined in `stdlib/cmake/modules/StdlibOptions.cmake`, which is not included during the first pass of evaluation of the root `CMakeLists.txt`. It is available on subsequent evaluations after the value is stored in CMake cache. This led to subtle bugs, where `usr/lib/swift_static/linux/static-stdlib-args.lnk` didn't contain certain flags on clean toolchain builds, but did contain them in incremental builds. Not having these autolinking flags in toolchain builds leads to errors when statically linking executables on Linux. Additionally, since our trivial lit tests previously didn't link Dispatch statically, they didn't expose a bug where `%import-static-libdispatch` substitution had a missing value. To fix that I had to update `lit.cfg` and clean up some of the related path computations to infer a correct substitution value.
Explanation: Resolves issues with static linking on Linux
Risk: Medium, affects Linux builds and top-level CMake declarations.
Original PR: #65795.
Reviewed by: @al45tair @drexin @etcwilde
Resolves: some of the issues reported in #65097
Tests: Added in swiftlang/swift-integration-tests#115
SWIFT_CONCURRENCY_GLOBAL_EXECUTOR
is defined instdlib/cmake/modules/StdlibOptions.cmake
, which is not included during the first pass of evaluation of the rootCMakeLists.txt
. It is available on subsequent evaluations after the value is stored in CMake cache. This led to subtle bugs, whereusr/lib/swift_static/linux/static-stdlib-args.lnk
didn't contain certain flags on clean toolchain builds, but did contain them in incremental builds.Not having these autolinking flags in toolchain builds leads to errors when statically linking executables on Linux.
Additionally, since are trivial tests previously didn't link Dispatch statically, the didn't expose a bug where
%import-static-libdispatch
substitution had a missing value. To fix that I had to updatelit.cfg
and clean up some of the related path computations to infer a correct substitution value.Resolves some of the errors reported in #65097.