From 458f4da7d09eb3baa502cdea479ba2b1f3f1f687 Mon Sep 17 00:00:00 2001 From: Jens Georg <jens.georg@desy.de> Date: Tue, 18 Aug 2020 14:40:52 +0200 Subject: [PATCH] Make tsan/asan dedicated cmake build types --- cmake/enable_code_coverage_report.cmake | 30 ++++++++++--------------- cmake/set_default_flags.cmake | 18 +++++++-------- 2 files changed, 21 insertions(+), 27 deletions(-) diff --git a/cmake/enable_code_coverage_report.cmake b/cmake/enable_code_coverage_report.cmake index 733be73..f668dd9 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 4cae9ed..a6a48fe 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") -- GitLab