From 4d96db375f74e9da97428007e9de12ee150f4808 Mon Sep 17 00:00:00 2001 From: Alexander Haase Date: Wed, 6 Apr 2016 19:23:24 +0200 Subject: [PATCH] Check if ThreadSanitizer is used on x86_64 Linux. According to the ThreadSanitizer documentation, it is only compatible with 64bit Linux at the moment. --- cmake/FindTSan.cmake | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/cmake/FindTSan.cmake b/cmake/FindTSan.cmake index b933642..c9b8a9c 100644 --- a/cmake/FindTSan.cmake +++ b/cmake/FindTSan.cmake @@ -31,7 +31,22 @@ set(FLAG_CANDIDATES include(sanitize-helpers) -sanitizer_check_compiler_flags("${FLAG_CANDIDATES}" "ThreadSanitizer" "TSan") +if (SANITIZE_THREAD) + if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + message(WARNING "ThreadSanitizer disabled for target ${TARGET} because " + "ThreadSanitizer is supported for Linux systems only.") + set(SANITIZE_THREAD Off CACHE BOOL + "Enable ThreadSanitizer for sanitized targets." FORCE) + elseif (NOT ${CMAKE_SIZEOF_VOID_P} EQUAL 8) + message(WARNING "ThreadSanitizer disabled for target ${TARGET} because " + "ThreadSanitizer is supported for 64bit systems only.") + set(SANITIZE_THREAD Off CACHE BOOL + "Enable ThreadSanitizer for sanitized targets." FORCE) + else () + sanitizer_check_compiler_flags("${FLAG_CANDIDATES}" "ThreadSanitizer" + "TSan") + endif () +endif () function (add_sanitize_thread TARGET) if (NOT SANITIZE_THREAD)