@@ -24,6 +24,7 @@ option(BUILD_SHARED_LIBS "Build shared libraries" ON)
2424option (WITH_TENSOR_PARALLEL "Compile with NCCL and MPI backend" OFF )
2525option (WITH_FLASH_ATTN "Compile with Flash Attention 2" OFF )
2626option (ENABLE_ADDRESS_SANITIZER "ASAN" OFF )
27+ option (ENABLE_THREAD_SANITIZER "TSAN" OFF )
2728
2829MESSAGE (STATUS "Compiler Id: ${CMAKE_CXX_COMPILER_ID} " )
2930MESSAGE (STATUS "Compiler Version: ${CMAKE_CXX_COMPILER_VERSION} " )
@@ -481,13 +482,20 @@ if (WITH_RUY)
481482 list (APPEND LIBRARIES ruy)
482483endif ()
483484
485+ # sanitizers
484486IF (ENABLE_ADDRESS_SANITIZER AND (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "DEBUG" ))
485- MESSAGE (STATUS "ENABLE_ADDRESS_SANITIZER: ENABLED " )
487+ MESSAGE (STATUS "ENABLE_ADDRESS_SANITIZER: TRUE " )
486488 set (ASAN_FLAGS " -fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-common" )
487489 string (APPEND CMAKE_C_FLAGS ${ASAN_FLAGS} )
488490 string (APPEND CMAKE_CXX_FLAGS ${ASAN_FLAGS} )
489491 add_link_options (-fsanitize=address)
490- ELSEIF (ENABLE_ADDRESS_SANITIZER)
492+ ELSEIF (ENABLE_THREAD_SANITIZER AND (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "DEBUG" ))
493+ MESSAGE (STATUS "ENABLE_THREAD_SANITIZER: TRUE" )
494+ set (TSAN_FLAGS " -g -fsanitize=thread" )
495+ string (APPEND CMAKE_C_FLAGS ${TSAN_FLAGS} )
496+ string (APPEND CMAKE_CXX_FLAGS ${TSAN_FLAGS} )
497+ add_link_options (-fsanitize=thread)
498+ ELSEIF (ENABLE_ADDRESS_SANITIZER OR ENABLE_THREAD_SANITIZER)
491499 MESSAGE (FATAL_ERROR "SANITIZER requires Debug build type" )
492500ENDIF ()
493501
0 commit comments