Skip to content

Commit 80b04a1

Browse files
committed
Configure CMake to use pthreads correctly for better portability.
1 parent bc7599e commit 80b04a1

File tree

4 files changed

+23
-8
lines changed

4 files changed

+23
-8
lines changed

‎CMakeLists.txt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,9 +140,15 @@ endif()
140140
# user can override CXX; make sure tests link and load properly regardless of LD_LIBRARY_PATH
141141
if(CMAKE_COMPILER_IS_GNUCXX)
142142
# previously used: set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc")
143-
set(CMAKE_EXE_LINKER_FLAGS "-pthread -static-libstdc++")
143+
set(CMAKE_EXE_LINKER_FLAGS "-static-libstdc++")
144144
endif()
145145

146+
# from https://stackoverflow.com/questions/5395309/how-do-i-force-cmake-to-include-pthread-option-during-compilation
147+
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
148+
# This flag seems to only be for older versions of CMake, such as https://cmake.org/cmake/help/v3.2/module/FindThreads.html
149+
set(THREADS_PREFER_PTHREAD_FLAG TRUE)
150+
find_package(Threads REQUIRED)
151+
146152
enable_testing()
147153

148154
include_directories(include)

‎src/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ endif()
5757

5858
set(TLSH_SRCS tlsh.cpp tlsh_impl.cpp tlsh_util.cpp input_desc.cpp shared_file_functions.cpp)
5959
add_library(tlsh_static STATIC ${TLSH_SRCS})
60+
target_link_libraries(tlsh_static PRIVATE Threads::Threads)
6061
set_target_properties(tlsh_static PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib)
6162
set_target_properties(tlsh_static PROPERTIES OUTPUT_NAME tlsh${BUILD_POSTFIX})
6263

@@ -71,6 +72,7 @@ endif()
7172

7273
if(TLSH_SHARED_LIBRARY EQUAL 1)
7374
add_library(tlsh_shared SHARED ${TLSH_SRCS})
75+
target_link_libraries(tlsh_shared PRIVATE Threads::Threads)
7476
set_target_properties(tlsh_shared PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib)
7577
set_target_properties(tlsh_shared PROPERTIES OUTPUT_NAME tlsh${BUILD_POSTFIX})
7678
set_target_properties(tlsh_shared PROPERTIES VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}"

‎test/CMakeLists.txt

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,36 +52,42 @@
5252
# OF THE POSSIBILITY OF SUCH DAMAGE.
5353

5454
add_executable(simple_unittest simple_unittest.cpp)
55-
target_link_libraries(simple_unittest tlsh_static)
55+
target_link_libraries(simple_unittest PRIVATE tlsh_static)
56+
target_link_libraries(simple_unittest PRIVATE Threads::Threads)
5657
set_target_properties(simple_unittest PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
5758
set_target_properties(simple_unittest PROPERTIES OUTPUT_NAME simple_unittest${BUILD_POSTFIX})
5859

5960
add_executable(tlsh_unittest tlsh_unittest.cpp)
60-
target_link_libraries(tlsh_unittest tlsh_static)
61+
target_link_libraries(tlsh_unittest PRIVATE tlsh_static)
62+
target_link_libraries(tlsh_unittest PRIVATE Threads::Threads)
6163
set_target_properties(tlsh_unittest PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
6264
set_target_properties(tlsh_unittest PROPERTIES OUTPUT_NAME tlsh_unittest${BUILD_POSTFIX})
6365
set_target_properties(tlsh_unittest PROPERTIES SKIP_BUILD_RPATH TRUE)
6466

6567
add_executable(timing_unittest timing_unittest.cpp)
66-
target_link_libraries(timing_unittest tlsh_static)
68+
target_link_libraries(timing_unittest PRIVATE tlsh_static)
69+
target_link_libraries(timing_unittest PRIVATE Threads::Threads)
6770
set_target_properties(timing_unittest PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
6871
set_target_properties(timing_unittest PROPERTIES OUTPUT_NAME timing_unittest${BUILD_POSTFIX})
6972
set_target_properties(timing_unittest PROPERTIES SKIP_BUILD_RPATH TRUE)
7073

7174
add_executable(order_bug order_bug.cpp)
72-
target_link_libraries(order_bug tlsh_static)
75+
target_link_libraries(order_bug PRIVATE tlsh_static)
76+
target_link_libraries(order_bug PRIVATE Threads::Threads)
7377
set_target_properties(order_bug PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
7478
set_target_properties(order_bug PROPERTIES OUTPUT_NAME order_bug${BUILD_POSTFIX})
7579
set_target_properties(order_bug PROPERTIES SKIP_BUILD_RPATH TRUE)
7680

7781
add_executable(tlsh_pattern tlsh_pattern.cpp)
78-
target_link_libraries(tlsh_pattern tlsh_static)
82+
target_link_libraries(tlsh_pattern PRIVATE tlsh_static)
83+
target_link_libraries(tlsh_pattern PRIVATE Threads::Threads)
7984
set_target_properties(tlsh_pattern PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
8085
set_target_properties(tlsh_pattern PROPERTIES OUTPUT_NAME tlsh_pattern${BUILD_POSTFIX})
8186
set_target_properties(tlsh_pattern PROPERTIES SKIP_BUILD_RPATH TRUE)
8287

8388
add_executable(tlsh_parts tlsh_parts.cpp)
84-
target_link_libraries(tlsh_parts tlsh_static)
89+
target_link_libraries(tlsh_parts PRIVATE tlsh_static)
90+
target_link_libraries(tlsh_parts PRIVATE Threads::Threads)
8591
set_target_properties(tlsh_parts PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
8692
set_target_properties(tlsh_parts PROPERTIES OUTPUT_NAME tlsh_parts${BUILD_POSTFIX})
8793
set_target_properties(tlsh_parts PROPERTIES SKIP_BUILD_RPATH TRUE)

‎utils/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@
5353

5454

5555
add_executable(rand_tags rand_tags.cpp)
56-
target_link_libraries(rand_tags tlsh_static)
56+
target_link_libraries(rand_tags PRIVATE tlsh_static)
57+
target_link_libraries(rand_tags PRIVATE Threads::Threads)
5758
set_target_properties(rand_tags PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
5859
set_target_properties(rand_tags PROPERTIES OUTPUT_NAME rand_tags${BUILD_POSTFIX})
5960

0 commit comments

Comments
 (0)