-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCompilerSanitizers.cmake
42 lines (37 loc) · 1.36 KB
/
CompilerSanitizers.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set(SANITIZERS "")
option(TACHYON_SANITIZERS_ENABLE_ADDRESS
"Enable address sanitizer"
FALSE)
if(TACHYON_SANITIZERS_ENABLE_ADDRESS)
log_option_enabled("address sanitizer")
list(APPEND SANITIZERS "address")
else()
log_option_disabled("address_sanitizer")
endif()
option(TACHYON_SANITIZERS_ENABLE_MEMORY
"Enable memory sanitizer"
FALSE)
if(TACHYON_SANITIZERS_ENABLE_MEMORY)
log_option_enabled("memory sanitizer")
list(APPEND SANITIZERS "memory")
else()
log_option_disabled("memory sanitizer")
endif()
option(TACHYON_SANITIZERS_ENABLE_UB
"Enable undefined behavior sanitizer"
FALSE)
if(TACHYON_SANITIZERS_ENABLE_UB)
log_option_enabled("undefined behavior sanitizer")
list(APPEND SANITIZERS "undefined")
else()
log_option_disabled("undefined behavior sanitizer")
endif()
list(JOIN SANITIZERS "," SANITIZERS_LIST)
if(SANITIZERS_LIST)
if(NOT "${SANITIZERS_LIST}" STREQUAL "")
target_compile_options(CommonProjectOptions INTERFACE -fsanitize=${SANITIZERS_LIST})
target_link_libraries(CommonProjectOptions INTERFACE -fsanitize=${SANITIZERS_LIST})
endif()
endif()
endif()