summaryrefslogtreecommitdiffstats
path: root/Modules/FindThreads.cmake
Commit message (Collapse)AuthorAgeFilesLines
* Merge topic 'FindThreads-revert-libc-pthread-flag' into release-3.23Brad King2022-03-011-11/+8
|\ | | | | | | | | | | | | | | c6da90bd39 FindThreads: Revert "Honor THREADS_PREFER_PTHREAD_FLAG when ... in libc" Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: buildbot <buildbot@kitware.com> Merge-request: !7025
| * FindThreads: Revert "Honor THREADS_PREFER_PTHREAD_FLAG when ... in libc"Brad King2022-02-281-11/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| * FindThreads: Honor THREADS_PREFER_PTHREAD_FLAG when pthread is found in libcMattias Ellert2022-01-261-8/+11
| | | | | | | | | | | | | | | | The `-pthread` flag tells the compiler/linker to link to additional libraries needed for thread support (e.g. libatomic on riscv64). The flag therefore should be used if requested using `THREADS_PREFER_PTHREAD_FLAG` also when the pthread functions are found in libc.
* | FindThreads: Honor THREADS_PREFER_PTHREAD_FLAG when pthread is found in libcMattias Ellert2021-11-101-8/+11
| | | | | | | | | | | | | | | | The `-pthread` flag tells the compiler/linker to link to additional libraries needed for thread support (e.g. libatomic on riscv64). The flag therefore should be used if requested using `THREADS_PREFER_PTHREAD_FLAG` also when the pthread functions are found in libc.
* | Fix typo in commentMattias Ellert2021-09-061-1/+1
|/ | | | | The comment lists -lpthread twice, when "-lpthreads, -lpthread" is meant. Also the grammar (did not found) is incorrect.
* MSYS: Add support for running under MSYS runtime environmentOrgad Shaneh2021-04-261-1/+1
| | | | Detect MSYS as CYGWIN, with the required adaptations.
* FindThreads: Reduce amount of false positive error loggingRobert Maynard2021-04-061-4/+10
| | | | | | | | | | | When a CMake based project fails, users start looking at CMakeError.log and think that the FindThread output is the problem, but it is a false positive. Now FindThreads only logs to `CMakeError.log` when it fails to find a suitable flag, reducing the amount of false positives in `CMakeError.log`. Fixes #16540, Fixes #19344
* Help: Add `.. versionadded` directives to module docsNikita Nemkin2020-12-021-0/+4
| | | | Issue: #19715
* FindThreads: Add missing static keyword in pthread test codePavel Otchertsov2020-09-181-1/+1
| | | | | | | When CMAKE_C_FLAGS contains '-Werror -Wmissing-prototypes' the pthread test code check fails with error: "src.c:3:7: error: no previous prototype for 'test_func' [-Werror=missing-prototypes]". Adding 'static' keyword to 'test_func' fixes it.
* Find{Threads,MPI}: Add support for CUDA with ClangTobias Ribizel2020-05-251-2/+2
| | | | | | Currently CMake passes `-Xcompiler -pthread` flags to CUDA compilers irrespective of the actual CUDA compiler ID. This makes sure the additional `-Xcompiler` flag is only used with nvcc.
* FindThreads: Improve documentationRolf Eike Beer2020-03-161-16/+29
| | | | Issue: #19823
* FindThreads: Add pthread_cancel to program to test for pthreads in libcCristian Morales Vega2019-12-111-0/+1
| | | | | | | | | When using ThreadSanitizer our existing CMAKE_HAVE_LIBC_PTHREAD test program links using symbols from the tsan library. Among the symbols not provided by that library, `pthread_cancel()` seems to be the less risky symbol to add to the check. Fixes: #19981
* Merge topic 'FindThreads-lib-flag'Brad King2019-12-051-4/+4
|\ | | | | | | | | | | | | f7ffefea7c FindThreads: Restore hard-coded '-l' flag on library name Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !4112
| * FindThreads: Restore hard-coded '-l' flag on library nameBrad King2019-12-041-4/+4
| | | | | | | | | | | | | | | | Revert commit de5f123d3a (FindThreads: Do not hard-code '-l' flag on library name, 2019-09-23, v3.16.0-rc1~71^2). Some clients depend on the value of `CMAKE_THREAD_LIBS_INIT` to contain a valid flag. Fixes: #20061, #20065
* | Refactor: Use added message types in various modulesAlex Turbov2019-11-021-3/+3
|/ | | | Co-Authored-By: Craig Scott <craig.scott@crascit.com>
* FindThreads: Do not hard-code '-l' flag on library nameAlan W. Irwin2019-09-231-4/+4
| | | | | | | | | | | | When not using the `-pthread` flag we instead return a library to link by name. Previously we hard-coded the `-l` flag before the library name. When used with `target_link_libraries`, the hard-coded `-l` flag is preserved rather than transformed into the link option preferred by the toolchain in use. Drop the explicit `-l` part to let CMake's generators produce the proper way to link the threads library for the current toolchain. Fixes: #19747
* Merge topic 'FindThreads-doc-c++'Brad King2019-05-281-3/+0
|\ | | | | | | | | | | | | a38b63c1bb FindThreads: Drop incorrect docs about usage with C++ Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3391
| * FindThreads: Drop incorrect docs about usage with C++Brad King2019-05-281-3/+0
| | | | | | | | | | | | | | | | Drop the sentence added by commit 5a5a1d90f0 (Help: FindThreads not needed with modern C++., 2019-01-09, v3.14.0-rc1~186^2) about not needing the module with modern C++. The module is often still needed. Fixes: #19297
* | FindThreads: Fix pthread library check in GHS Multi GeneratorNaren Manimohan2019-03-211-0/+3
| |
* | FindThreads: Use complete program to test for pthreads in libcJerryShih2019-03-061-6/+35
|/ | | | | | | | | | | | | | | Our check for just `pthread_create` is not sufficient because there are cases where that symbol may be found in libc but not all of pthreads. We first tried to address this in commit e9a1ddc594 (FindThreads: Replace the pthread symbol checking in libc., 2018-11-18, v3.14.0-rc1~292^2) by switching to `pthread_kill`, but that had to be reverted by commit 18320230ec (FindThreads: Revert libc symbol check to pthread_create, 2019-02-27, v3.14.0-rc3~6^2) because there are other cases where `pthread_kill` is in libc but the rest of pthreads is not. Update our check to try a complete program using pthreads as an actual application might. Fixes: #18994
* FindThreads: Revert libc symbol check to pthread_createBrad King2019-02-271-13/+3
| | | | | | | | | | | | | Since commit e9a1ddc594 (FindThreads: Replace the pthread symbol checking in libc., 2018-11-18, v3.14.0-rc1~292^2) we check libc for `pthread_kill` instead of `pthread_create`. However, on FreeBSD `pthread_kill` is in libc but not `pthread_create`. Discussion in the original merge request for the above commit also considered `pthread_key_create`, `pthread_self`, and `pthread_attr_init`. Every symbol seems to have some reason it is not an appropriate choice. Revert to the pre-3.14 behavior of using `pthread_create` pending further investigation.
* FindThreads: Fix libc check to use proper header for pthread_killBrad King2019-02-261-2/+4
| | | | | | | | | | | In commit e9a1ddc594 (FindThreads: Replace the pthread symbol checking in libc., 2018-11-18, v3.14.0-rc1~292^2) we switched to checking for `pthread_kill` in libc but did not update the symbol check's header file to match. Add `signal.h` to get `pthread_kill`. Keep `pthread.h` anyway since the purpose of the check is to verify that the pthread API works. Fixes: #18984
* Help: FindThreads not needed with modern C++.Joachim Wuttke (o)2019-01-091-1/+4
|
* FindThreads: Drop IRIX-specific options and resultsBrad King2018-12-071-61/+43
| | | | | | | | | We do not need to support IRIX anymore, so drop relevant parts. In particular, the `CMAKE_THREAD_PREFER_PTHREAD` is frequently confused with `THREADS_PREFER_PTHREAD_FLAG`. Also remove references to the IRIX-specific options and results from other modules and tests.
* FindThreads: Replace the pthread symbol checking in libc.JerryShih2018-12-031-4/+12
| | | | | | | With asan build, we will have the pthread_create() symbol in libc. However, libasan doesn't have full pthread implementation. We can't assume that we have the pthread implementation in libc using pthread_create() symbol. Replace the pthread_create() with pthread_kill() as a quick fix.
* Merge topic 'cuda-thread-flags'Brad King2018-10-251-1/+3
|\ | | | | | | | | | | | | | | | | | | | | 2cc050b53b CUDA: Add test for device linking when host linking uses threads 83c13ca44f FindThreads: Pass -pthread to CUDA compiler through -Xcompiler cf92fd9ae9 Merge branch 'cuda-filter-device-link-items' into cuda-thread-flags e768d96c74 CUDA: Filter out host link flags during device linking Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: Kelly (KT) Thompson <kgt@lanl.gov> Merge-request: !2512
| * FindThreads: Pass -pthread to CUDA compiler through -XcompilerRolf Eike Beer2018-10-241-1/+3
| | | | | | | | Fixes: #18008
* | Help: Convert remaining modules to block-style commentsKitware Robot2018-10-221-38/+39
|/
* FindThreads: Drop try_run to improve cross-compiling supportSteffen Dettmer2017-08-301-11/+4
| | | | | | | | | | | Use `try_compile` instead of `try_run`. It is not clear why `try_run` was ever needed, and it does not work during cross-compiling. Update the check's source file to remove code associated with actually running things. Also remove the ancient `__CLASSIC_C__` code path and use a simple `int main(void)` as in `Modules/CheckIncludeFile.c.in`. Fixes: #16920
* Simplify CMake per-source license noticesBrad King2016-09-271-14/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | Per-source copyright/license notice headers that spell out copyright holder names and years are hard to maintain and often out-of-date or plain wrong. Precise contributor information is already maintained automatically by the version control tool. Ultimately it is the receiver of a file who is responsible for determining its licensing status, and per-source notices are merely a convenience. Therefore it is simpler and more accurate for each source to have a generic notice of the license name and references to more detailed information on copyright holders and full license terms. Our `Copyright.txt` file now contains a list of Contributors whose names appeared source-level copyright notices. It also references version control history for more precise information. Therefore we no longer need to spell out the list of Contributors in each source file notice. Replace CMake per-source copyright/license notice headers with a short description of the license and links to `Copyright.txt` and online information available from "https://cmake.org/licensing". The online URL also handles cases of modules being copied out of our source into other projects, so we can drop our notices about replacing links with full license text. Run the `Utilities/Scripts/filter-notices.bash` script to perform the majority of the replacements mechanically. Manually fix up shebang lines and trailing newlines in a few files. Manually update the notices in a few files that the script does not handle.
* Fix spelling typos in comments and documentation (#16037)Felix Geyer2016-03-291-1/+1
| | | | | The Debian package checker tool (lintian) detected several typos in CMake.
* FindThreads: make the call to try_run() work also if only C++ is enabledRolf Eike Beer2015-09-251-1/+8
| | | | This isn't enough to make the whole module work with only C++ enabled.
* FindThreads: replace CheckIncludeFiles by CheckIncludeFileRolf Eike Beer2015-09-251-3/+15
| | | | | | While at it, also add a branch using CheckIncludeFileCXX. Also give a better error message if no supported language is enabled. C++ support isn't working yet, but it has never worked.
* FindThreads: introduce THREADS_PREFER_PTHREAD_FLAG (#14767)Rolf Eike Beer2014-10-081-0/+18
|
* FindThreads: introduce an imported target to link toTimo Rothenpieler2014-10-081-0/+18
| | | | | | This not only holds the library, but can also hold compiler flags needed, e.g. the -pthread flag preferred by gcc on some platforms. There was no clean way to get that compiler flag from the module until now.
* FindThreads: move checking of the -pthread compiler flag into a macroRolf Eike Beer2014-10-061-36/+42
| | | | | | This allows a following commit to introduce a switch to prefer that check over searching for the explicit library names without breaking backward compatibility.
* Merge topic 'FindThreads-macro'Brad King2014-10-061-23/+17
|\ | | | | | | | | 94a061d3 FindThreads: use a macro for the repetitive thread library checks
| * FindThreads: use a macro for the repetitive thread library checksRolf Eike Beer2014-10-031-23/+17
| |
* | FindThreads: search test source relative to moduleTimo Rothenpieler2014-10-021-1/+1
|/ | | | This is a simpler way to reference the location of FindThreads.cmake.
* Use CMAKE_SYSTEM_NAME instead of CMAKE_SYSTEM where sufficientRolf Eike Beer2014-04-141-3/+3
|
* Remove .* expressions from beginning and end of MATCHES regexsRolf Eike Beer2014-04-141-2/+2
| | | | | | | | | All these expressions work the same: "foo" ".*foo.*" "^.*foo.*$" This assumes that the "Intel*" expressions were meant to be "Intel.*".
* Find*: Make find_package(.. QUIET) affect Check* modules.Clinton Stimpson2014-03-301-0/+3
| | | | | | | | | | Fixes issues #14812 and #14813 where find_package(OpenMP QUIET) and find_package(Qt4 QUIET) would still print out messages when calling check*() functions. Also a partial fix for #14445 where building CMake (without cmake-gui) when Qt5 is installed and Qt4 is not installed and warnings come out of FindQt4.cmake.
* FindThreads: simplify checking for SunOSRolf Eike Beer2014-03-251-1/+1
|
* FindThreads: avoid useless checks if a thread library is already foundRolf Eike Beer2014-03-251-16/+15
|
* FindThreads: replace MATCHES with STREQUALRolf Eike Beer2014-03-251-1/+1
|
* Convert builtin help to reStructuredText source filesKitware Robot2013-10-151-7/+19
| | | | | | | | Run the convert-help.bash script to convert documentation: ./convert-help.bash "/path/to/CMake-build/bin" Then remove it.
* replace string(... MATCHES "^const$) with string(... STREQUAL "const")Rolf Eike Beer2013-06-021-1/+1
|
* Remove CMake-language block-end command argumentsKitware Robot2012-08-131-8/+8
| | | | | | | | | | | | | | | | | Ancient versions of CMake required else(), endif(), and similar block termination commands to have arguments matching the command starting the block. This is no longer the preferred style. Run the following shell code: for c in else endif endforeach endfunction endmacro endwhile; do echo 's/\b'"$c"'\(\s*\)(.\+)/'"$c"'\1()/' done >convert.sed && git ls-files -z -- bootstrap '*.cmake' '*.cmake.in' '*CMakeLists.txt' | egrep -z -v '^(Utilities/cm|Source/kwsys/)' | egrep -z -v 'Tests/CMakeTests/While-Endwhile-' | xargs -0 sed -i -f convert.sed && rm convert.sed
* Convert CMake-language commands to lower caseKitware Robot2012-08-131-94/+94
| | | | | | | | | | | | | | | | | Ancient CMake versions required upper-case commands. Later command names became case-insensitive. Now the preferred style is lower-case. Run the following shell code: cmake --help-command-list | grep -v "cmake version" | while read c; do echo 's/\b'"$(echo $c | tr '[:lower:]' '[:upper:]')"'\(\s*\)(/'"$c"'\1(/g' done >convert.sed && git ls-files -z -- bootstrap '*.cmake' '*.cmake.in' '*CMakeLists.txt' | egrep -z -v '^(Utilities/cm|Source/kwsys/)' | xargs -0 sed -i -f convert.sed && rm convert.sed
* Remove trailing whitespace from most CMake and C/C++ codeKitware Robot2012-08-131-4/+4
| | | | | | | | | | | | | | | | | Our Git commit hooks disallow modification or addition of lines with trailing whitespace. Wipe out all remnants of trailing whitespace everywhere except third-party code. Run the following shell code: git ls-files -z -- \ bootstrap doxygen.config '*.readme' \ '*.c' '*.cmake' '*.cpp' '*.cxx' \ '*.el' '*.f' '*.f90' '*.h' '*.in' '*.in.l' '*.java' \ '*.mm' '*.pike' '*.py' '*.txt' '*.vim' | egrep -z -v '^(Utilities/cm|Source/(kwsys|CursesDialog/form)/)' | egrep -z -v '^(Modules/CPack\..*\.in)' | xargs -0 sed -i 's/ \+$//'