sanitizers.cmake 783 Bytes
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
if(SPDLOG_SANITIZE_THREAD AND SPDLOG_SANITIZE_ADDRESS)
    message(FATAL_ERROR "AddressSanitizer is not compatible with ThreadSanitizer.")
endif()

if(SPDLOG_SANITIZE_ADDRESS)
    message(STATUS "AddressSanitizer enabled")
    set(SANITIZER_FLAGS "-fsanitize=address,undefined")
    add_compile_options("-fno-sanitize=signed-integer-overflow")
endif()

if(SPDLOG_SANITIZE_THREAD)
    message(STATUS "ThreadSanitizer enabled")
    set(SANITIZER_FLAGS "-fsanitize=thread")
endif()

if(SPDLOG_SANITIZE_THREAD OR SPDLOG_SANITIZE_ADDRESS)
    add_compile_options(${SANITIZER_FLAGS})
    add_compile_options("-fno-sanitize-recover=all")
    add_compile_options("-fno-omit-frame-pointer")
    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${SANITIZER_FLAGS} -fuse-ld=gold")
endif()