diff --git a/CMakeLists.txt b/CMakeLists.txt index 7d65067f357fa9..784f027de9a878 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -136,6 +136,7 @@ cmake_dependent_option( "BUILD_TEST" OFF) option(COLORIZE_OUTPUT "Colorize output during compilation" ON) option(USE_ASAN "Use Address Sanitizer" OFF) +option(USE_TSAN "Use Thread Sanitizer" OFF) option(USE_CUDA "Use CUDA" ON) option(USE_ROCM "Use ROCm" ON) option(CAFFE2_STATIC_LINK_CUDA "Statically link CUDA libraries" OFF) diff --git a/cmake/MiscCheck.cmake b/cmake/MiscCheck.cmake index 3ff7539d3a8812..4bb1431d597a59 100644 --- a/cmake/MiscCheck.cmake +++ b/cmake/MiscCheck.cmake @@ -323,6 +323,15 @@ if (USE_ASAN) set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${CAFFE2_ASAN_FLAG}") endif() +if (USE_TSAN) + set(CAFFE2_TSAN_FLAG "-fsanitize=thread -fPIE -pie") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CAFFE2_TSAN_FLAG}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CAFFE2_TSAN_FLAG}") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${CAFFE2_TSAN_FLAG}") + set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${CAFFE2_TSAN_FLAG}") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${CAFFE2_TSAN_FLAG}") +endif() + # ---[ Create CAFFE2_BUILD_SHARED_LIBS for macros.h.in usage. set(CAFFE2_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})