@@ -6,7 +6,15 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
66set (CMAKE_POSITION_INDEPENDENT_CODE ON )
77set (CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR} /cmake" )
88
9+ option (ENABLE_COVERAGE "Enable coverage reporting" OFF )
10+ if (DEFINED ENV{ENABLE_COVERAGE})
11+ set (ENABLE_COVERAGE $ENV{ENABLE_COVERAGE} )
12+ endif ()
913
14+ option (ENABLE_ASAN "Enable ASAN" OFF )
15+ if (DEFINED ENV{ENABLE_ASAN})
16+ set (ENABLE_ASAN $ENV{ENABLE_ASAN} )
17+ endif ()
1018
1119# ============================================================================
1220# Compiler Flags
@@ -19,6 +27,28 @@ else()
1927 set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -O0" )
2028endif ()
2129
30+ if (CMAKE_BUILD_TYPE STREQUAL "Debug" AND ENABLE_COVERAGE)
31+ if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" )
32+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-instr-generate -fcoverage-mapping -g" )
33+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-instr-generate -fcoverage-mapping -g" )
34+ message (STATUS "Enabling coverage flags for Debug build [Clang]" )
35+ elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" )
36+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage -g" )
37+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --coverage -g" )
38+ set (CMAKE_LINK_FLAGS "${CMAKE_LINK_FLAGS} --coverage" )
39+ message (STATUS "Enabling coverage flags for Debug build [GNU]" )
40+ else ()
41+ message (STATUS "Using other compiler: ${CMAKE_CXX_COMPILER_ID} " )
42+ endif ()
43+ endif ()
44+
45+ if (ENABLE_ASAN)
46+ message (STATUS "Enabling AddressSanitizer" )
47+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer" )
48+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fno-omit-frame-pointer" )
49+ set (CMAKE_LINKER_FLAGS "${CMAKE_LINKER_FLAGS} -fsanitize=address" )
50+ endif ()
51+
2252
2353# ============================================================================
2454# Dependencies: OpenSSL
0 commit comments