Skip to content

Commit 9a8748f

Browse files
committed
cmake: fix find_package(Threads REQUIRED) error after updating cmake policy
find_package(Threads REQUIRED) started failing in freebsd, openbsd and llvm builds after previous change increasing cmake policy version. Exact reason is not clear and setting cmake_policy(SET CMP0155 OLD) made it work again, but it makes sense for a separate threading library to not be required so this change makes it optional and seems to fix the builds. Maybe debug actual reason this started failing later. Error is: + cmake /home/runner/work/libmultiprocess/libmultiprocess -G Ninja -- The CXX compiler identification is Clang 16.0.6 -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Performing Test CMAKE_HAVE_LIBC_PTHREAD -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed -- Looking for pthread_create in pthreads -- Looking for pthread_create in pthreads - not found -- Looking for pthread_create in pthread -- Looking for pthread_create in pthread - not found -- Check if compiler accepts -pthread -- Check if compiler accepts -pthread - no CMake Error at /usr/local/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:233 (message): Could NOT find Threads (missing: Threads_FOUND) Call Stack (most recent call first): /usr/local/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:603 (_FPHSA_FAILURE_MESSAGE) /usr/local/share/cmake/Modules/FindThreads.cmake:226 (FIND_PACKAGE_HANDLE_STANDARD_ARGS) CMakeLists.txt:41 (find_package)
1 parent 6eafe4f commit 9a8748f

File tree

4 files changed

+14
-7
lines changed

4 files changed

+14
-7
lines changed

CMakeLists.txt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,14 @@ endif()
3838

3939
include("cmake/compat_find.cmake")
4040

41-
find_package(Threads REQUIRED)
41+
add_library(mpdeps INTERFACE)
42+
43+
find_package(Threads)
44+
45+
if(Threads_FOUND)
46+
target_link_libraries(mpdeps INTERFACE Threads::Threads)
47+
endif()
48+
4249
find_package(CapnProto 0.7 QUIET NO_MODULE)
4350
if(NOT CapnProto_FOUND)
4451
message(FATAL_ERROR
@@ -228,7 +235,7 @@ target_link_libraries(mpgen PRIVATE CapnProto::capnp)
228235
target_link_libraries(mpgen PRIVATE CapnProto::capnp-rpc)
229236
target_link_libraries(mpgen PRIVATE CapnProto::capnpc)
230237
target_link_libraries(mpgen PRIVATE CapnProto::kj)
231-
target_link_libraries(mpgen PRIVATE Threads::Threads)
238+
target_link_libraries(mpgen PRIVATE mpdeps)
232239
set_target_properties(mpgen PROPERTIES
233240
INSTALL_RPATH_USE_LINK_PATH TRUE)
234241
set_target_properties(mpgen PROPERTIES

cmake/pthread_checks.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ include(CMakePushCheckState)
99
include(CheckCXXSourceCompiles)
1010

1111
cmake_push_check_state()
12-
set(CMAKE_REQUIRED_LIBRARIES Threads::Threads)
12+
set(CMAKE_REQUIRED_LIBRARIES mpdeps)
1313
check_cxx_source_compiles("
1414
#include <pthread.h>
1515
int main(int argc, char** argv)

example/CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,20 @@ add_executable(mpcalculator
99
)
1010
target_capnp_sources(mpcalculator ${CMAKE_CURRENT_SOURCE_DIR} init.capnp calculator.capnp printer.capnp)
1111
target_include_directories(mpcalculator PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
12-
target_link_libraries(mpcalculator PRIVATE Threads::Threads)
12+
target_link_libraries(mpcalculator PRIVATE mpdeps)
1313

1414
add_executable(mpprinter
1515
printer.cpp
1616
)
1717
target_capnp_sources(mpprinter ${CMAKE_CURRENT_SOURCE_DIR} init.capnp calculator.capnp printer.capnp)
1818
target_include_directories(mpprinter PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
19-
target_link_libraries(mpprinter PRIVATE Threads::Threads)
19+
target_link_libraries(mpprinter PRIVATE mpdeps)
2020

2121
add_executable(mpexample
2222
example.cpp
2323
)
2424
target_capnp_sources(mpexample ${CMAKE_CURRENT_SOURCE_DIR} init.capnp calculator.capnp printer.capnp)
2525
target_include_directories(mpexample PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
26-
target_link_libraries(mpexample PRIVATE Threads::Threads)
26+
target_link_libraries(mpexample PRIVATE mpdeps)
2727

2828
add_custom_target(mpexamples DEPENDS mpexample mpcalculator mpprinter)

test/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ if(BUILD_TESTING AND TARGET CapnProto::kj-test)
3232
target_capnp_sources(mptest ${CMAKE_CURRENT_SOURCE_DIR} mp/test/foo.capnp)
3333
target_include_directories(mptest PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
3434
target_link_libraries(mptest PRIVATE CapnProto::kj-test)
35-
target_link_libraries(mptest PRIVATE Threads::Threads)
35+
target_link_libraries(mptest PRIVATE mpdeps)
3636

3737
add_dependencies(mptests mptest)
3838
add_test(NAME mptest COMMAND mptest)

0 commit comments

Comments
 (0)