58 lines
2.4 KiB
CMake
58 lines
2.4 KiB
CMake
include(cmake/color.cmake)
|
|
message("Enabling requested sanitizers for ${PROJECT_NAME}")
|
|
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
|
# using Clang
|
|
if (${ENABLE_ADDRSAN} MATCHES ON)
|
|
message("-- Using Clang address sanitizer")
|
|
target_compile_options(${PROJECT_NAME} PRIVATE -fsanitize=address)
|
|
target_link_options(${PROJECT_NAME} PRIVATE -fsanitize=address)
|
|
endif ()
|
|
|
|
if (${ENABLE_UBSAN} MATCHES ON)
|
|
message("-- Using Clang undefined behaviour sanitizer")
|
|
target_compile_options(${PROJECT_NAME} PRIVATE -fsanitize=undefined)
|
|
target_link_options(${PROJECT_NAME} PRIVATE -fsanitize=undefined)
|
|
endif ()
|
|
|
|
if (${ENABLE_TSAN} MATCHES ON)
|
|
message("-- Using Clang thread sanitizer")
|
|
target_compile_options(${PROJECT_NAME} PRIVATE -fsanitize=thread)
|
|
target_link_options(${PROJECT_NAME} PRIVATE -fsanitize=thread)
|
|
endif ()
|
|
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
|
# using GCC
|
|
if (${ENABLE_ADDRSAN} MATCHES ON)
|
|
message("-- Using GCC address sanitizer")
|
|
target_compile_options(${PROJECT_NAME} PRIVATE -fsanitize=address)
|
|
target_link_options(${PROJECT_NAME} PRIVATE -fsanitize=address)
|
|
endif ()
|
|
|
|
if (${ENABLE_UBSAN} MATCHES ON)
|
|
message("-- Using GCC undefined behaviour sanitizer")
|
|
target_compile_options(${PROJECT_NAME} PRIVATE -fsanitize=undefined)
|
|
target_link_options(${PROJECT_NAME} PRIVATE -fsanitize=undefined)
|
|
endif ()
|
|
|
|
if (${ENABLE_TSAN} MATCHES ON)
|
|
message("-- Using GCC thread sanitizer")
|
|
target_compile_options(${PROJECT_NAME} PRIVATE -fsanitize=thread)
|
|
target_link_options(${PROJECT_NAME} PRIVATE -fsanitize=thread)
|
|
endif ()
|
|
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
|
|
# using Intel C++
|
|
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
|
# using Visual Studio C++
|
|
if (${ENABLE_ADDRSAN} MATCHES ON)
|
|
message("-- Using GCC address sanitizer")
|
|
target_compile_options(${PROJECT_NAME} PRIVATE /fsanitize=address)
|
|
target_link_options(${PROJECT_NAME} PRIVATE /fsanitize=address)
|
|
endif ()
|
|
|
|
if (${ENABLE_UBSAN} MATCHES ON)
|
|
message("-- ${Red}Undefined behaviour sanitizer not supported on this platform${ColourReset}")
|
|
endif ()
|
|
|
|
if (${ENABLE_TSAN} MATCHES ON)
|
|
message("-- ${Red}Thread sanitizer not supported on this platform${ColourReset}")
|
|
endif ()
|
|
endif () |