aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt20
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})