From 2a68b7b12e5e0f64b4a1c0f5b1d7e8b725aba0c9 Mon Sep 17 00:00:00 2001 From: Raphael Riebl Date: Tue, 23 Jan 2018 21:22:50 +0100 Subject: [PATCH] cmake: add pthread dependency explicitly when linking to a Boost library Change-Id: I36695dfcaf58bef5e6b9738432f9a1e695f68d70 --- CMakeLists.txt | 5 +++++ cmake/GoogleTestTargets.cmake | 9 ++++++--- cmake/VanetzaConfig.cmake.in | 5 +++++ cmake/VanetzaExportsConfig.cmake.in | 1 + vanetza/common/CMakeLists.txt | 4 ++++ 5 files changed, 21 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3307af772..fc00c2fc1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,11 @@ set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) +# Look up threading library (usually pthread) +set(CMAKE_THREAD_PREFER_PTHREAD TRUE) +set(THREADS_PREFER_PTHREAD_FLAG TRUE) +find_package(Threads MODULE) + # Build configuration option(BUILD_USING_CONAN "Build with conan package manager" OFF) if(BUILD_USING_CONAN) diff --git a/cmake/GoogleTestTargets.cmake b/cmake/GoogleTestTargets.cmake index fccfe334c..fb9a5390a 100644 --- a/cmake/GoogleTestTargets.cmake +++ b/cmake/GoogleTestTargets.cmake @@ -40,9 +40,12 @@ target_link_libraries(${GTest_MAIN_LIBRARY} PUBLIC ${GTest_LIBRARY}) add_dependencies(${GTest_MAIN_LIBRARY} extract_gtest) # Look for threading library and configure GTest accordingly -set(CMAKE_THREAD_PREFER_PTHREAD True) -set(THREADS_PREFER_PTHREAD_FLAG True) -find_package(Threads QUIET) +if(NOT DEFINED CMAKE_USE_PTHREADS_INIT) + set(CMAKE_THREAD_PREFER_PTHREAD TRUE) + set(THREADS_PREFER_PTHREAD_FLAG TRUE) + find_package(Threads MODULE) +endif() + if(CMAKE_USE_PTHREADS_INIT) message(STATUS "Build GTest with pthread support") target_compile_definitions(${GTest_LIBRARY} PUBLIC "GTEST_HAS_PTHREAD=1") diff --git a/cmake/VanetzaConfig.cmake.in b/cmake/VanetzaConfig.cmake.in index d2004f306..a98fda10f 100644 --- a/cmake/VanetzaConfig.cmake.in +++ b/cmake/VanetzaConfig.cmake.in @@ -8,6 +8,7 @@ include(MacroFindDependencyComponents) find_dependency_components(Boost VERSION @Boost_MAJOR_VERSION@.@Boost_MINOR_VERSION@ COMPONENTS @Boost_COMPONENTS@) find_dependency(GeographicLib @GeographicLib_VERSION_STRING@) +find_dependency(Threads) if(@CryptoPP_FOUND@) find_dependency(CryptoPP @CryptoPP_VERSION_STRING@) @@ -25,6 +26,10 @@ if(@OPENSSL_FOUND@) find_dependency(OpenSSL ${OPENSSL_VERSION_WITHOUT_PATCH}) endif() +if(@THREADS_FOUND@) + find_dependency(Threads) +endif() + # Restore previous module path list(REMOVE_AT CMAKE_MODULE_PATH -1) diff --git a/cmake/VanetzaExportsConfig.cmake.in b/cmake/VanetzaExportsConfig.cmake.in index 98d52f955..31915305b 100644 --- a/cmake/VanetzaExportsConfig.cmake.in +++ b/cmake/VanetzaExportsConfig.cmake.in @@ -8,6 +8,7 @@ find_dependency_components(Boost VERSION @Boost_MAJOR_VERSION@.@Boost_MINOR_VERS include(CompatBoostTargets) find_dependency(GeographicLib @GeographicLib_VERSION_STRING@) +find_dependency(Threads) if(@CryptoPP_FOUND@) find_dependency(CryptoPP @CryptoPP_VERSION_STRING@) diff --git a/vanetza/common/CMakeLists.txt b/vanetza/common/CMakeLists.txt index 40f81c079..b41e23fed 100644 --- a/vanetza/common/CMakeLists.txt +++ b/vanetza/common/CMakeLists.txt @@ -12,5 +12,9 @@ target_link_libraries(common PUBLIC Boost::date_time INTERFACE Boost::serialization) +if(TARGET Threads::Threads) + target_link_libraries(common INTERFACE Threads::Threads) +endif() + add_test_subdirectory(tests)