summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2018-12-07 13:25:31 (GMT)
committerKitware Robot <kwrobot@kitware.com>2018-12-07 13:25:39 (GMT)
commit5651bb08786a2a51f389c44f5904f5de777e987b (patch)
tree7541d3dead922504d1de531d8c4993038768f6bf /Modules
parenta956ab7f3ba4092ac6685eb0ec1e3185dbb54a43 (diff)
parente9a1ddc594de6e6251bf06d732775dae2cabe4c8 (diff)
downloadCMake-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.cmake16
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()