diff options
author | Brad King <brad.king@kitware.com> | 2018-12-07 13:25:31 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2018-12-07 13:25:39 (GMT) |
commit | 5651bb08786a2a51f389c44f5904f5de777e987b (patch) | |
tree | 7541d3dead922504d1de531d8c4993038768f6bf /Modules | |
parent | a956ab7f3ba4092ac6685eb0ec1e3185dbb54a43 (diff) | |
parent | e9a1ddc594de6e6251bf06d732775dae2cabe4c8 (diff) | |
download | CMake-5651bb08786a2a51f389c44f5904f5de777e987b.zip CMake-5651bb08786a2a51f389c44f5904f5de777e987b.tar.gz CMake-5651bb08786a2a51f389c44f5904f5de777e987b.tar.bz2 |
Merge topic 'FindThreads-asan'
e9a1ddc594 FindThreads: Replace the pthread symbol checking in libc.
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2629
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/FindThreads.cmake | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/Modules/FindThreads.cmake b/Modules/FindThreads.cmake index dfb683f..691b1b7 100644 --- a/Modules/FindThreads.cmake +++ b/Modules/FindThreads.cmake @@ -131,9 +131,17 @@ else() # set(CMAKE_HAVE_THREADS_LIBRARY) if(NOT THREADS_HAVE_PTHREAD_ARG) - # Check if pthread functions are in normal C library - CHECK_SYMBOL_EXISTS(pthread_create pthread.h CMAKE_HAVE_LIBC_CREATE) - if(CMAKE_HAVE_LIBC_CREATE) + # Check if pthread functions are in normal C library. + # If the pthread functions already exist in C library, we could just use + # them instead of linking to the additional pthread library. We could + # try to check any pthread symbol name, but here is an exception. If we + # use clang asan build, we will find the pthread_create() symbol in the + # libc(libasan). However, it doesn't have the full pthread implementation. + # So, we can't assume that we have the pthread implementation in libc + # using the pthread_create() checking here. Then, we turn to check the + # pthread_kill() symbol instead. + CHECK_SYMBOL_EXISTS(pthread_kill pthread.h CMAKE_HAVE_LIBC_PTHREAD_KILL) + if(CMAKE_HAVE_LIBC_PTHREAD_KILL) set(CMAKE_THREAD_LIBS_INIT "") set(CMAKE_HAVE_THREADS_LIBRARY 1) set(Threads_FOUND TRUE) @@ -159,7 +167,7 @@ else() endif() endif() -if(CMAKE_THREAD_LIBS_INIT OR CMAKE_HAVE_LIBC_CREATE) +if(CMAKE_THREAD_LIBS_INIT OR CMAKE_HAVE_LIBC_PTHREAD_KILL) set(CMAKE_USE_PTHREADS_INIT 1) set(Threads_FOUND TRUE) endif() |