cmake: enable asan and ubsan on GCC

On Clang it doesn't like -Wl,--no-undefined option, which I don't
really want to disable.
This commit is contained in:
Sebastian Krzyszkowiak 2018-12-13 03:55:17 +01:00
parent fe23d33273
commit 48516aa38c
No known key found for this signature in database
GPG key ID: E8F235CF3BDBC3FF

View file

@ -42,13 +42,20 @@ if (NOT LIBSUPERDERPY_CONFIG_INCLUDED)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions -fno-rtti")
endif(ANDROID)
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O1 -fno-optimize-sibling-calls -fno-omit-frame-pointer -fsanitize=leak -DLEAK_SANITIZER=1 -fno-common -fsanitize-recover=all")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O1 -fno-optimize-sibling-calls -fno-omit-frame-pointer -fsanitize=leak -DLEAK_SANITIZER=1 -fno-common -fsanitize-recover=all")
set(DEFAULT_SANITIZERS "address,undefined")
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
set(DEFAULT_SANITIZERS "leak")
endif()
set(SANITIZERS ${DEFAULT_SANITIZERS} CACHE STRING "List of code sanitizers enabled for Debug builds")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O1 -fno-optimize-sibling-calls -fno-omit-frame-pointer -fsanitize=${SANITIZERS} -DLEAK_SANITIZER=1 -fno-common -fsanitize-recover=all")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O1 -fno-optimize-sibling-calls -fno-omit-frame-pointer -fsanitize=${SANITIZERS} -DLEAK_SANITIZER=1 -fno-common -fsanitize-recover=all")
if(APPLE)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-undefined,error")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-undefined,error")
else(APPLE)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--no-undefined")
endif(APPLE)
option(USE_CLANG_TIDY "Analyze the code with clang-tidy" OFF)