function(enable_sanitizers project_name) if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES ".*Clang") if(ENABLE_COVERAGE) target_compile_options(${project_name} INTERFACE --coverage -O0 -g) target_link_libraries(${project_name} INTERFACE --coverage) endif() set(SANITIZERS "") if(ENABLE_SANITIZER_ADDRESS) list(APPEND SANITIZERS "address") endif() if(ENABLE_SANITIZER_MEMORY) list(APPEND SANITIZERS "memory") endif() if(ENABLE_SANITIZER_UNDEFINED_BEHAVIOR) list(APPEND SANITIZERS "undefined") endif() if(ENABLE_SANITIZER_LEAK) list(APPEND SANITIZERS "leak") endif() if(ENABLE_SANITIZER_THREAD) list(APPEND SANITIZERS "thread") endif() list(JOIN SANITIZERS "," LIST_OF_SANITIZERS) endif() if(LIST_OF_SANITIZERS) if(NOT "${LIST_OF_SANITIZERS}" STREQUAL "") target_compile_options(${project_name} INTERFACE -fsanitize=${LIST_OF_SANITIZERS}) target_link_libraries(${project_name} INTERFACE -fsanitize=${LIST_OF_SANITIZERS}) endif() endif() endfunction()