diff --git a/cmake/enable_code_coverage_report.cmake b/cmake/enable_code_coverage_report.cmake index 733be7340b117857b70d15a144450b476df47442..f668dd9b08f9e030a45922289d267402e9a02d39 100644 --- a/cmake/enable_code_coverage_report.cmake +++ b/cmake/enable_code_coverage_report.cmake @@ -25,22 +25,16 @@ # ####################################################################################################################### -string(TOUPPER "${ENABLE_TSAN}" enable_tsanitizer_uppercase) -IF(enable_tsanitizer_uppercase STREQUAL "TRUE") - message(WARNING "The ENABLE_TSAN set to true. Code coverage cannot be enabled, becasue it requires -O0 flag and ENABLE_TSAN requires -O1.") -ELSE() - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 --coverage") - # The make coverage command is only available in debug mode. Also - # factor in that cmake treats CMAKE_BUILD_TYPE string as case - # insensitive. - string(TOUPPER "${CMAKE_BUILD_TYPE}" build_type_uppercase) - IF(build_type_uppercase STREQUAL "DEBUG") - configure_file(cmake/make_coverage.sh.in - ${PROJECT_BINARY_DIR}/make_coverage.sh @ONLY) - add_custom_target(coverage - ./make_coverage.sh - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMENT "Generating test coverage documentation" VERBATIM) - ENDIF() +set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 --coverage") +# The make coverage command is only available in debug mode. Also +# factor in that cmake treats CMAKE_BUILD_TYPE string as case +# insensitive. +string(TOUPPER "${CMAKE_BUILD_TYPE}" build_type_uppercase) +IF(build_type_uppercase STREQUAL "DEBUG") + configure_file(cmake/make_coverage.sh.in + ${PROJECT_BINARY_DIR}/make_coverage.sh @ONLY) + add_custom_target(coverage + ./make_coverage.sh + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Generating test coverage documentation" VERBATIM) ENDIF() - diff --git a/cmake/set_default_flags.cmake b/cmake/set_default_flags.cmake index 4cae9ed1aa294872178b1c46250b4752e086e7eb..a6a48fe64f265976c52108d36fd798e4f4be6d84 100644 --- a/cmake/set_default_flags.cmake +++ b/cmake/set_default_flags.cmake @@ -22,18 +22,18 @@ ####################################################################################################################### include(cmake/enable_latest_cxx_support.cmake) + +set(CMAKE_CONFIGURATION_TYPES "Debug;Release;RelWithDebInfo;asan;tsan") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${${PROJECT_NAME}_CXX_FLAGS} -Wall -Wextra -Wshadow -pedantic -Wuninitialized") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3") set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O3 -g") +set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -O0 --coverage") +set(CMAKE_CXX_FLAGS_TSAN "${CMAKE_CXX_FLAGS} -g -O1 -fsanitize=thread") +set(CMAKE_CXX_FLAGS_ASAN "${CMAKE_CXX_FLAGS} -g -O0 -fsanitize=address -fsanitize=undefined -fsanitize=leak") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${${PROJECT_NAME}_C_FLAGS} -Wall -Wextra -Wshadow -pedantic -Wuninitialized") set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3") set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -O3 -g") - -string(TOUPPER "${ENABLE_TSAN}" enable_tsanitizer_uppercase) -IF(enable_tsanitizer_uppercase STREQUAL "TRUE") - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -O1 -fsanitize=thread") - set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g -O1 -fsanitize=thread") -ELSE() - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -O0 --coverage") - set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g -O0 --coverage") -ENDIF() +set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g -O0 --coverage") +set(CMAKE_C_FLAGS_TSAN "${CMAKE_C_FLAGS} -g -O1 -fsanitize=thread") +set(CMAKE_C_FLAGS_ASAN "${CMAKE_C_FLAGS} -g -O0 -fsanitize=address -fsanitize=undefined -fsanitize=leak")