diff options
author | Brad King <brad.king@kitware.com> | 2022-02-28 17:53:15 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2022-02-28 17:53:15 (GMT) |
commit | c6da90bd39f3e03ba6a2a4cfac0d179e04e0b236 (patch) | |
tree | da6a441aef76b03f1a52a96cfdfe5a1fe3f3656e /Modules/FindThreads.cmake | |
parent | 6fe5df13c274441a1e1a1b10e558ef46db60bf4b (diff) | |
download | CMake-c6da90bd39f3e03ba6a2a4cfac0d179e04e0b236.zip CMake-c6da90bd39f3e03ba6a2a4cfac0d179e04e0b236.tar.gz CMake-c6da90bd39f3e03ba6a2a4cfac0d179e04e0b236.tar.bz2 |
FindThreads: Revert "Honor THREADS_PREFER_PTHREAD_FLAG when ... in libc"
Revert commit 5efb6fb516 (FindThreads: Honor THREADS_PREFER_PTHREAD_FLAG
when pthread is found in libc, 2021-11-03, v3.21.5~4^2). The check for
the `-pthread` flag can pass on compilers like XL, that interprets it as
`-p -t hread` and returns zero. Prior to that commit, we did not use
the check in the `CMAKE_HAVE_LIBC_PTHREAD` code path. Now we do, it
succeeds, and we incorrectly add the `-pthread` flag for XL.
This change was backported to the 3.21 and 3.22 release series long
after they initially came out. Since there may be more cases where we
now add `-pthread` incorrectly, it is simplest to revert the change in
all release series pending further investigation.
Fixes: #23270
Diffstat (limited to 'Modules/FindThreads.cmake')
-rw-r--r-- | Modules/FindThreads.cmake | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/Modules/FindThreads.cmake b/Modules/FindThreads.cmake index ffd3352..c6a3451 100644 --- a/Modules/FindThreads.cmake +++ b/Modules/FindThreads.cmake @@ -164,21 +164,18 @@ if(CMAKE_HAVE_PTHREAD_H) elseif(CMAKE_CXX_COMPILER_LOADED) CHECK_CXX_SOURCE_COMPILES("${PTHREAD_C_CXX_TEST_SOURCE}" CMAKE_HAVE_LIBC_PTHREAD) endif() - - # Check for -pthread first if enabled. This is the recommended - # way, but not backwards compatible as one must also pass -pthread - # as compiler flag then. - if(THREADS_PREFER_PTHREAD_FLAG) - _check_pthreads_flag() - endif() - - if(Threads_FOUND) - # do nothing, we are done - elseif(CMAKE_HAVE_LIBC_PTHREAD) + if(CMAKE_HAVE_LIBC_PTHREAD) set(CMAKE_THREAD_LIBS_INIT "") set(CMAKE_HAVE_THREADS_LIBRARY 1) set(Threads_FOUND TRUE) else() + # Check for -pthread first if enabled. This is the recommended + # way, but not backwards compatible as one must also pass -pthread + # as compiler flag then. + if (THREADS_PREFER_PTHREAD_FLAG) + _check_pthreads_flag() + endif () + if(CMAKE_SYSTEM MATCHES "GHS-MULTI") _check_threads_lib(posix pthread_create CMAKE_HAVE_PTHREADS_CREATE) endif() |