From: Matthieu Volat Date: Tue, 23 May 2017 17:15:16 +0000 (+0200) Subject: Use FindThreads to check for pthreading X-Git-Tag: v3.16~247 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/7ad8b918b33a4dcfbcff84a443ad0cb34d6ebe97 Use FindThreads to check for pthreading It will prefer using threading as library if possible, and fallback on -pthread only if necessary, which some compilers/systems do not support anymore. --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 06d2f1c03e..cde287ef96 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -60,6 +60,9 @@ if(APPLE AND (CMAKE_C_COMPILER_VERSION VERSION_LESS "4.6")) set(HAVE_UCONTEXT_H 0) endif() +### Check threading support +set(CMAKE_THREAD_PREFER_PTHREAD TRUE) +find_package(Threads) ### Setup Options include(${CMAKE_HOME_DIRECTORY}/tools/cmake/Option.cmake) @@ -274,7 +277,6 @@ endif() # Checks for header libraries functions. CHECK_LIBRARY_EXISTS(rt clock_gettime "" HAVE_POSIX_GETTIME) -CHECK_LIBRARY_EXISTS(pthread pthread_create "" HAVE_PTHREAD) if(NOT APPLE) # OS X El Capitan deprecates this function CHECK_LIBRARY_EXISTS(pthread sem_init "" HAVE_SEM_INIT_LIB) endif() @@ -460,7 +462,7 @@ endif() ### Initialize of CONTEXT THREADS set(HAVE_THREAD_CONTEXTS 0) -if(HAVE_PTHREAD) +if(CMAKE_USE_PTHREADS_INIT) ### Test that we have a way to create semaphores if(HAVE_SEM_OPEN_LIB) diff --git a/tools/cmake/MakeLib.cmake b/tools/cmake/MakeLib.cmake index 1378bd485c..d116926c75 100644 --- a/tools/cmake/MakeLib.cmake +++ b/tools/cmake/MakeLib.cmake @@ -34,9 +34,8 @@ if (HAVE_BOOST_CONTEXTS) set(SIMGRID_DEP "${SIMGRID_DEP} ${Boost_CONTEXT_LIBRARY}") endif() -if(HAVE_PTHREAD AND ${HAVE_THREAD_CONTEXTS} AND NOT APPLE) - # Clang on recent Mac OS X is not happy about -pthread. - SET(SIMGRID_DEP "${SIMGRID_DEP} -pthread") +if(CMAKE_USE_PTHREADS_INIT AND ${HAVE_THREAD_CONTEXTS}) + set(SIMGRID_DEP "${SIMGRID_DEP} ${CMAKE_THREAD_LIBS_INIT}") endif() if(SIMGRID_HAVE_LUA)