X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=CMake%2FCheckDebug.cmake;h=b83406d8f2a0af065d1162e6b0c769f3a34ceeaf;hb=01c5e0ed8d3d9c72ea192792d1c49a50e756d635;hp=4b63db66fa5cde7ec79caddcb76516973259838f;hpb=808f81dba2553a1e552e8f3cea3ee376ad7d3558;p=awesomized%2Flibmemcached diff --git a/CMake/CheckDebug.cmake b/CMake/CheckDebug.cmake index 4b63db66..b83406d8 100644 --- a/CMake/CheckDebug.cmake +++ b/CMake/CheckDebug.cmake @@ -1,7 +1,5 @@ -include(CMakePushCheckState) -include(CheckCXXCompilerFlag) -function(check_flag FLAG DEFAULT) +function(set_flag FLAG DEFAULT) unset(FLAG_CONSTANT) string(MAKE_C_IDENTIFIER CXX${FLAG} FLAG_CONSTANT) check_cxx_compiler_flag(${FLAG} ${FLAG_CONSTANT}) @@ -15,16 +13,16 @@ endfunction() macro(check_sanitizer VAR NAME LIB) message(STATUS "Checking for sanitizer: ${NAME} (-l${LIB})") if(${NAME} IN_LIST ${VAR} OR ${LIB} IN_LIST ${VAR}) - safe_string(${LIB} ID) + make_have_identifier(${LIB} HAVE) cmake_push_check_state(RESET) set(CMAKE_REQUIRED_LIBRARIES ${LIB}) - check_cxx_compiler_flag(-fsanitize=${NAME} HAVE_${ID}) + check_cxx_compiler_flag(-fsanitize=${NAME} ${HAVE}) cmake_pop_check_state() - if(HAVE_${ID}) - add_compile_definitions(HAVE_${ID}) + if(${HAVE}) + add_compile_definitions(${HAVE}) add_compile_options(-fsanitize=${NAME}) link_libraries(-fsanitize=${NAME}) - check_flag(-fsanitize-recover=${NAME} IGNORE) + set_flag(-fsanitize-recover=${NAME} IGNORE) message(STATUS " OK: sanitizer ${NAME}") else() message(STATUS " NO: not supported") @@ -34,46 +32,44 @@ macro(check_sanitizer VAR NAME LIB) endif() endmacro() -function(check_debug) - if(CMAKE_BUILD_TYPE STREQUAL "Debug") - add_definitions(-DDEBUG=1) - if(CMAKE_CXX_FLAGS MATCHES --coverage) - message("-- Coverage build detected!") - message("-- Skipping debug and sanitizer flag checks.") - else() - check_flag(-Og -O0) - check_flag(-ggdb -g) - foreach(FLAG IN ITEMS - -fno-inline - -fno-omit-frame-pointer - -fno-eliminate-unused-debug-types - -funsafe-loop-optimizations +if(CMAKE_BUILD_TYPE STREQUAL "Debug") + add_definitions(-DDEBUG=1) + if(CMAKE_CXX_FLAGS MATCHES --coverage) + message("-- Coverage build detected!") + message("-- Skipping debug and sanitizer flag checks.") + else() + set_flag(-Og -O0) + set_flag(-ggdb -g) + foreach(FLAG IN ITEMS + -fno-inline + -fno-omit-frame-pointer + -fno-eliminate-unused-debug-types + -funsafe-loop-optimizations - -Wall - -Wextra + -Wall + -Wextra - -Wdouble-promotion - -Wduplicated-cond - -Wduplicated-branches - -Wformat=2 - -Wlogical-op - -Wnull-dereference - -Wrestrict - -Wshadow - -Wunknown-pragmas - -Wunsafe-loop-optimizations - ) - check_flag(${FLAG} IGNORE) - endforeach() + -Wdouble-promotion + -Wduplicated-cond + -Wduplicated-branches + -Wformat=2 + -Wlogical-op + -Wnull-dereference + -Wrestrict + -Wshadow + -Wunknown-pragmas + -Wunsafe-loop-optimizations + ) + set_flag(${FLAG} IGNORE) + endforeach() - if(ENABLE_SANITIZERS) - check_sanitizer(ENABLE_SANITIZERS address asan) - check_sanitizer(ENABLE_SANITIZERS undefined ubsan) - check_sanitizer(ENABLE_SANITIZERS thread tsan) - check_sanitizer(ENABLE_SANITIZERS leak lsan) - endif() + if(ENABLE_SANITIZERS) + check_sanitizer(ENABLE_SANITIZERS address asan) + check_sanitizer(ENABLE_SANITIZERS undefined ubsan) + check_sanitizer(ENABLE_SANITIZERS thread tsan) + check_sanitizer(ENABLE_SANITIZERS leak lsan) endif() - else() - add_definitions(-DDEBUG=0) endif() -endfunction() +else() + add_definitions(-DDEBUG=0) +endif()