-function(check_debug)
- if(CMAKE_BUILD_TYPE STREQUAL "Debug")
- add_definitions(-DDEBUG=1)
- if(CMAKE_CXX_FLAGS MATCHES --coverage)
- message("-- Coverage build detected!")
- message("-- Skipping debug and sanitizer flag checks.")
+macro(check_sanitizer VAR NAME LIB)
+ message(STATUS "Checking for sanitizer: ${NAME} (-l${LIB})")
+ if(${NAME} IN_LIST ${VAR} OR ${LIB} IN_LIST ${VAR})
+ make_have_identifier(${LIB} HAVE)
+ cmake_push_check_state(RESET)
+ set(CMAKE_REQUIRED_LIBRARIES ${LIB})
+ check_cxx_compiler_flag(-fsanitize=${NAME} ${HAVE})
+ cmake_pop_check_state()
+ if(${HAVE})
+ add_compile_definitions(${HAVE})
+ add_compile_options(-fsanitize=${NAME})
+ link_libraries(-fsanitize=${NAME})
+ set_flag(-fsanitize-recover=${NAME} IGNORE)
+ message(STATUS " OK: sanitizer ${NAME}")