Skip to content

Commit 403f409

Browse files
committed
build: rely on CMake to drive thread linkage
This allows better control over POSIX or HP pthreads vs Solaris or Windows threads. It also simplifies the configuration a little bit.
1 parent adab37d commit 403f409

File tree

2 files changed

+8
-10
lines changed

2 files changed

+8
-10
lines changed

CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/modules)
2121
include(CheckFileOffsetBits)
2222
include(CTest)
2323
include(FindAsan)
24+
if(CMARK_THREADING)
25+
set(THREADS_PREFER_PTHREAD_FLAG YES)
26+
include(FindThreads)
27+
endif()
2428
include(GNUInstallDirs)
2529

2630
if(NOT MSVC OR CMAKE_HOST_SYSTEM_NAME STREQUAL Windows)

src/CMakeLists.txt

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ if (CMARK_SHARED)
5858
target_include_directories(${LIBRARY} PUBLIC
5959
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src/include>
6060
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/extensions/include>)
61+
target_link_libraries(${LIBRARY} PRIVATE
62+
$<$<BOOL:${THREADS_FOUND}>:Threads::Threads>)
6163

6264
# Include minor version and patch level in soname for now.
6365
set_target_properties(${LIBRARY} PROPERTIES
@@ -81,6 +83,8 @@ if (CMARK_STATIC)
8183
target_include_directories(${LIBRARY} PUBLIC
8284
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src/include>
8385
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/extensions/include>)
86+
target_link_libraries(${STATICLIBRARY} PRIVATE
87+
$<$<BOOL:${Threads_FOUND}>:Threads::Threads>)
8488

8589
set_target_properties(${STATICLIBRARY} PROPERTIES
8690
POSITION_INDEPENDENT_CODE ON)
@@ -145,16 +149,6 @@ if(CMARK_SHARED OR CMARK_STATIC)
145149

146150
set(CMARK_TARGETS_FILE ${CMAKE_CURRENT_BINARY_DIR}/cmarkTargets.cmake)
147151
export(TARGETS ${CMARK_INSTALL} FILE ${CMARK_TARGETS_FILE})
148-
149-
if(CMARK_THREADING AND NOT APPLE AND NOT MSVC AND NOT ANDROID)
150-
if(CMARK_SHARED)
151-
target_link_libraries(${LIBRARY} pthread)
152-
endif(CMARK_SHARED)
153-
154-
if(CMARK_STATIC)
155-
target_link_libraries(${STATICLIBRARY} pthread)
156-
endif(CMARK_STATIC)
157-
endif()
158152
endif()
159153

160154
CONFIGURE_FILE(

0 commit comments

Comments
 (0)