diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 88331490b8..06db4f473e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -191,13 +191,23 @@ include_directories(SYSTEM ${LIBTERMKEY_INCLUDE_DIRS}) find_package(LibVterm REQUIRED) include_directories(SYSTEM ${LIBVTERM_INCLUDE_DIRS}) -option(SANITIZE "Enable Clang sanitizers for nvim binary" OFF) -if(SANITIZE AND NOT CMAKE_C_COMPILER_ID MATCHES "Clang") - message(WARNING "SANITIZE is only supported for Clang, disabling") - set(SANITIZE OFF) +option(CLANG_ASAN_UBSAN "Enable Clang address & undefined behavior sanitizer for nvim binary." OFF) +option(CLANG_MSAN "Enable Clang memory sanitizer for nvim binary." OFF) +option(CLANG_TSAN "Enable Clang thread sanitizer for nvim binary." OFF) + +if((CLANG_ASAN_UBSAN AND CLANG_MSAN) + OR (CLANG_ASAN_UBSAN AND CLANG_TSAN) + OR (CLANG_MSAN AND CLANG_TSAN)) + message(FATAL_ERROR "Sanitizers cannot be enabled simultaneously.") endif() -if(NOT SANITIZE) +if((CLANG_ASAN_UBSAN OR CLANG_MSAN OR CLANG_TSAN) AND NOT CMAKE_C_COMPILER_ID MATCHES "Clang") + message(FATAL_ERROR "Sanitizers are only supported for Clang.") +endif() + +if(CLANG_ASAN_UBSAN OR CLANG_MSAN OR CLANG_TSAN) + message(STATUS "Sanitizers have been enabled; don't use jemalloc.") +else() find_package(JeMalloc) if(JEMALLOC_FOUND) include_directories(SYSTEM ${JEMALLOC_INCLUDE_DIRS}) |