diff --git a/CMakeLists.txt b/CMakeLists.txt index 4669b0211..3e293a9e8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -43,6 +43,7 @@ find_package(Avro) find_package(GSSAPI) find_package(SQLite) find_package(ASAN) +find_package(TSAN) # Build PCRE2 so we always know the version # Read BuildPCRE2 for details about how to add pcre2 as a dependency to a target @@ -159,6 +160,9 @@ endif() if (WITH_ASAN AND ASAN_FOUND) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address") +elseif (WITH_TSAN AND TSAN_FOUND) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=thread") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=thread") endif() set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${DEBUG_FLAGS} -DSS_DEBUG -DLOG_ASSERT") diff --git a/cmake/FindASAN.cmake b/cmake/FindASAN.cmake index b870b8681..6499e3aa0 100644 --- a/cmake/FindASAN.cmake +++ b/cmake/FindASAN.cmake @@ -7,8 +7,8 @@ find_library(ASAN_LIBRARIES NAMES libasan.so.0 libasan.so.1 libasan.so.2 libasan.so.3 libasan.so.4) if (ASAN_LIBRARIES) - message(STATUS "Found AdressSanitizer libraries: ${ASAN_LIBRARIES}") + message(STATUS "Found AddressSanitizer libraries: ${ASAN_LIBRARIES}") set(ASAN_FOUND TRUE CACHE INTERNAL "") else() - message(STATUS "Could not find AdressSanitizer") + message(STATUS "Could not find AddressSanitizer") endif() diff --git a/cmake/FindTSAN.cmake b/cmake/FindTSAN.cmake new file mode 100644 index 000000000..f9be015e4 --- /dev/null +++ b/cmake/FindTSAN.cmake @@ -0,0 +1,14 @@ +# Find ThreadSanitizer libraries +# +# The following variables are set: +# TSAN_FOUND - If ThreadSanitizer was found +# TSAN_LIBRARIES - Path to the libasan library + +find_library(TSAN_LIBRARIES NAMES libtsan.so.0 libtsan.so.1 libtsan.so.2 libtsan.so.3 libtsan.so.4) + +if (TSAN_LIBRARIES) + message(STATUS "Found ThreadSanitizer libraries: ${TSAN_LIBRARIES}") + set(TSAN_FOUND TRUE CACHE INTERNAL "") +else() + message(STATUS "Could not find AdressSanitizer") +endif()