From 60bc043698a571cb0213f435109d950b7f802dde Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Sat, 25 Jan 2020 15:59:44 +0100 Subject: [PATCH] Coverage: Fix build for Mac OS These changes are needed for Mac OS. --- cmake/coverage.cmake | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/cmake/coverage.cmake b/cmake/coverage.cmake index 7d30f06a16..16324484fe 100644 --- a/cmake/coverage.cmake +++ b/cmake/coverage.cmake @@ -34,17 +34,32 @@ find_program(LCOV_PATH lcov) find_program(GENHTML_PATH genhtml) +message(STATUS "Building for code coverage") + # add code coverage build type +if (("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") OR ("${CMAKE_CXX_COMPILER_ID}" MATCHES "AppleClang")) + set(CMAKE_C_FLAGS_COVERAGE "--coverage -ftest-coverage -fdiagnostics-absolute-paths -O0 -fprofile-arcs -fno-inline-functions" + CACHE STRING "Flags used by the C compiler during coverage builds" FORCE) -set(CMAKE_C_FLAGS_COVERAGE "--coverage -ftest-coverage -fprofile-arcs -O0 -fno-default-inline -fno-inline" - CACHE STRING "Flags used by the C compiler during coverage builds" FORCE) + set(CMAKE_CXX_FLAGS_COVERAGE "--coverage -ftest-coverage -fdiagnostics-absolute-paths -O0-fprofile-arcs -fno-inline-functions -fno-elide-constructors" + CACHE STRING "Flags used by the C++ compiler during coverage builds" FORCE) -set(CMAKE_CXX_FLAGS_COVERAGE "--coverage -ftest-coverage -fprofile-arcs -O0 -fno-default-inline -fno-inline -fno-elide-constructors" - CACHE STRING "Flags used by the C++ compiler during coverage builds" FORCE) - -set(CMAKE_EXE_LINKER_FLAGS_COVERAGE "--coverage -ftest-coverage -lgcov" + set(CMAKE_EXE_LINKER_FLAGS_COVERAGE "-ftest-coverage -fdiagnostics-absolute-paths" CACHE STRING "Flags used for linking binaries during coverage builds" FORCE) +else() + # Add -fprofile-abs-path for GCC v8/9 later on + set(CMAKE_C_FLAGS_COVERAGE "--coverage -ftest-coverage -fprofile-arcs -O0 -fno-default-inline -fno-inline" + CACHE STRING "Flags used by the C compiler during coverage builds" FORCE) + + # Add -fprofile-abs-path for GCC v8/9 later on + set(CMAKE_CXX_FLAGS_COVERAGE "--coverage -ftest-coverage -fprofile-arcs -O0 -fno-default-inline -fno-inline -fno-elide-constructors" + CACHE STRING "Flags used by the C++ compiler during coverage builds" FORCE) + + set(CMAKE_EXE_LINKER_FLAGS_COVERAGE "--coverage -ftest-coverage -lgcov" + CACHE STRING "Flags used for linking binaries during coverage builds" FORCE) +endif() + mark_as_advanced(CMAKE_CXX_FLAGS_COVERAGE CMAKE_C_FLAGS_COVERAGE CMAKE_EXE_LINKER_FLAGS_COVERAGE) # Param _targetname The name of new the custom make target