add asan option to cmake
This commit is contained in:
@@ -20,6 +20,7 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
|
|||||||
|
|
||||||
option(SOLANACEAE_ECOSYSTEM_BUILD_TESTING "Build tests" ${BUILD_TESTING})
|
option(SOLANACEAE_ECOSYSTEM_BUILD_TESTING "Build tests" ${BUILD_TESTING})
|
||||||
message("II SOLANACEAE_ECOSYSTEM_BUILD_TESTING " ${SOLANACEAE_ECOSYSTEM_BUILD_TESTING})
|
message("II SOLANACEAE_ECOSYSTEM_BUILD_TESTING " ${SOLANACEAE_ECOSYSTEM_BUILD_TESTING})
|
||||||
|
option(SOLANACEAE_ECOSYSTEM_ASAN "Build eco with asan (gcc/clang/msvc)" OFF)
|
||||||
|
|
||||||
# uggly, but it needs to be defined for all dependencies too
|
# uggly, but it needs to be defined for all dependencies too
|
||||||
# what if its always export?
|
# what if its always export?
|
||||||
@@ -29,8 +30,33 @@ if (SOLANACEAE_ECOSYSTEM_BUILD_TESTING)
|
|||||||
include(CTest)
|
include(CTest)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
#add_compile_options(-fsanitize=undefined)
|
if (SOLANACEAE_ECOSYSTEM_ASAN)
|
||||||
#link_libraries(-fsanitize=undefined)
|
if (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
|
||||||
|
if (NOT WIN32) # exclude mingw
|
||||||
|
add_compile_options(-fno-omit-frame-pointer)
|
||||||
|
add_compile_options(-fsanitize=address,undefined)
|
||||||
|
#add_compile_options(-fsanitize=address,undefined,pointer-compare,pointer-subtract)
|
||||||
|
#add_compile_options(-fhardened)
|
||||||
|
#add_compile_options(-D_FORTIFY_SOURCE=3 -D_GLIBCXX_ASSERTIONS -ftrivial-auto-var-init=zero -fPIE -pie -Wl,-z,relro,-z,now -fstack-protector-strong -fstack-clash-protection -fcf-protection=full)
|
||||||
|
|
||||||
|
add_link_options(-fno-omit-frame-pointer)
|
||||||
|
add_link_options(-fsanitize=address,undefined)
|
||||||
|
#add_link_options(-fsanitize=address,undefined,pointer-compare,pointer-subtract)
|
||||||
|
#add_link_options(-fhardened)
|
||||||
|
#add_link_options(-D_FORTIFY_SOURCE=3 -D_GLIBCXX_ASSERTIONS -ftrivial-auto-var-init=zero -fPIE -pie -Wl,-z,relro,-z,now -fstack-protector-strong -fstack-clash-protection -fcf-protection=full)
|
||||||
|
|
||||||
|
link_libraries(-static-libasan) # make it "work" on nix
|
||||||
|
message("II enabled ASAN")
|
||||||
|
else()
|
||||||
|
message("!! can not enable ASAN on this platform (gcc/clang + win)")
|
||||||
|
endif()
|
||||||
|
elseif (MSVC)
|
||||||
|
add_compile_options("/fsanitize=address")
|
||||||
|
message("II enabled ASAN")
|
||||||
|
else()
|
||||||
|
message("!! can not enable ASAN on this platform")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
# external libs
|
# external libs
|
||||||
add_subdirectory(./external) # before increasing warn levels, sad :(
|
add_subdirectory(./external) # before increasing warn levels, sad :(
|
||||||
|
Reference in New Issue
Block a user