mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 05:37:34 +00:00
Lagom: Enable sanitizer builds with gcc
Previously the CMake options for -fsanitize=address, thread and undefined were gated behind clang, which was unecessary. Only -fsanitize=fuzzer is clang-only.
This commit is contained in:
parent
a92dc4e30d
commit
d81f52e529
1 changed files with 24 additions and 22 deletions
|
@ -7,41 +7,43 @@ else()
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++2a -fPIC -g -Wno-deprecated-copy")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++2a -fPIC -g -Wno-deprecated-copy")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (ENABLE_ADDRESS_SANITIZER)
|
||||||
|
add_definitions(-fsanitize=address -fno-omit-frame-pointer)
|
||||||
|
set(LINKER_FLAGS "${LINKER_FLAGS} -fsanitize=address")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (ENABLE_MEMORY_SANITIZER)
|
||||||
|
add_definitions(-fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer)
|
||||||
|
set(LINKER_FLAGS "${LINKER_FLAGS} -fsanitize=memory -fsanitize-memory-track-origins")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (ENABLE_UNDEFINED_SANITIZER)
|
||||||
|
add_definitions(-fsanitize=undefined -fno-sanitize=vptr -fno-omit-frame-pointer)
|
||||||
|
set(LINKER_FLAGS "${LINKER_FLAGS} -fsanitize=undefined -fno-sanitize=vptr")
|
||||||
|
endif()
|
||||||
|
|
||||||
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang$")
|
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang$")
|
||||||
# Clang's default constexpr-steps limit is 1048576(2^20), GCC doesn't have one
|
# Clang's default constexpr-steps limit is 1048576(2^20), GCC doesn't have one
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-overloaded-virtual -Wno-user-defined-literals -fconstexpr-steps=16777216")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-overloaded-virtual -Wno-user-defined-literals -fconstexpr-steps=16777216")
|
||||||
|
|
||||||
if (ENABLE_ADDRESS_SANITIZER)
|
|
||||||
add_definitions(-fsanitize=address -fno-omit-frame-pointer)
|
|
||||||
set(LINKER_FLAGS "${LINKER_FLAGS} -fsanitize=address")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (ENABLE_MEMORY_SANITIZER)
|
|
||||||
add_definitions(-fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer)
|
|
||||||
set(LINKER_FLAGS "${LINKER_FLAGS} -fsanitize=memory -fsanitize-memory-track-origins")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (ENABLE_UNDEFINED_SANITIZER)
|
|
||||||
add_definitions(-fsanitize=undefined -fno-omit-frame-pointer)
|
|
||||||
set(LINKER_FLAGS "${LINKER_FLAGS} -fsanitize=undefined")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (ENABLE_FUZZER_SANITIZER)
|
if (ENABLE_FUZZER_SANITIZER)
|
||||||
add_definitions(-fsanitize=fuzzer -fno-omit-frame-pointer)
|
add_definitions(-fsanitize=fuzzer -fno-omit-frame-pointer)
|
||||||
set(LINKER_FLAGS "${LINKER_FLAGS} -fsanitize=fuzzer")
|
set(LINKER_FLAGS "${LINKER_FLAGS} -fsanitize=fuzzer")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(ORIGINAL_CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}")
|
|
||||||
set(ORIGINAL_CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
|
|
||||||
set(ORIGINAL_CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS}")
|
|
||||||
|
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LINKER_FLAGS}")
|
|
||||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${LINKER_FLAGS}")
|
|
||||||
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${LINKER_FLAGS}")
|
|
||||||
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-expansion-to-defined -Wno-literal-suffix")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-expansion-to-defined -Wno-literal-suffix")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# These are here to support Fuzzili builds further down the directory stack
|
||||||
|
set(ORIGINAL_CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}")
|
||||||
|
set(ORIGINAL_CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
|
||||||
|
set(ORIGINAL_CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS}")
|
||||||
|
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LINKER_FLAGS}")
|
||||||
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${LINKER_FLAGS}")
|
||||||
|
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${LINKER_FLAGS}")
|
||||||
|
|
||||||
file(GLOB AK_SOURCES CONFIGURE_DEPENDS "../../AK/*.cpp")
|
file(GLOB AK_SOURCES CONFIGURE_DEPENDS "../../AK/*.cpp")
|
||||||
file(GLOB AK_TEST_SOURCES CONFIGURE_DEPENDS "../../Tests/AK/*.cpp")
|
file(GLOB AK_TEST_SOURCES CONFIGURE_DEPENDS "../../Tests/AK/*.cpp")
|
||||||
file(GLOB LIBARCHIVE_SOURCES CONFIGURE_DEPENDS "../../Userland/Libraries/LibArchive/*.cpp")
|
file(GLOB LIBARCHIVE_SOURCES CONFIGURE_DEPENDS "../../Userland/Libraries/LibArchive/*.cpp")
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue