Skip to content
Snippets Groups Projects
Commit 7ab576f9 authored by Tomasz Kozak's avatar Tomasz Kozak
Browse files

Add support for USE_TSAN flag according to https://github.com/ChimeraTK/project-template/issues/13

parent 5e1b6c72
No related branches found
No related tags found
No related merge requests found
......@@ -25,19 +25,22 @@
#
#######################################################################################################################
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
)
string(TOUPPER "${USE_TSAN}" use_tsanitizer_uppercase)
IF(use_tsanitizer_uppercase STREQUAL "TRUE")
message(WARNING "The USE_TSAN set to true. Code coverage cannot be enabled, becasue it requires -O0 flag and USE_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()
ENDIF()
......@@ -23,10 +23,17 @@
include(cmake/enable_latest_cxx_support.cmake)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${${PROJECT_NAME}_CXX_FLAGS} -Wall -Wextra -Wshadow -pedantic -Wuninitialized")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 --coverage")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O3 -g")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${${PROJECT_NAME}_C_FLAGS} -Wall -Wextra -Wshadow -pedantic -Wuninitialized")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0 --coverage")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -O3 -g")
string(TOUPPER "${USE_TSAN}" use_tsanitizer_uppercase)
IF(use_tsanitizer_uppercase STREQUAL "TRUE")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O1 -fsanitize=thread")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O1 -fsanitize=thread")
ELSE()
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 --coverage")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0 --coverage")
ENDIF()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment