diff --git a/CMakeLists.txt b/CMakeLists.txt index cace079f..fd876725 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -64,6 +64,7 @@ mark_as_advanced( ) option( BUILD_WITH_CCACHE "Use ccache to speed up compilations" OFF ) +option( BUILD_WITH_COVERAGE "Add compiler flags to generate coverage stats" OFF ) if ( EXIV2_ENABLE_WEBREADY ) set ( EXIV2_ENABLE_CURL ON ) diff --git a/cmake/compilerFlags.cmake b/cmake/compilerFlags.cmake index 59da3080..842685cd 100644 --- a/cmake/compilerFlags.cmake +++ b/cmake/compilerFlags.cmake @@ -19,6 +19,15 @@ if ( MINGW OR UNIX ) # MINGW, Linux, APPLE, CYGWIN endif() if (COMPILER_IS_GCC OR COMPILER_IS_CLANG) + + if(BUILD_WITH_COVERAGE) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g ") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftest-coverage") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage") + endif() + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wcast-align -Wpointer-arith -Wformat-security -Wmissing-format-attribute -Woverloaded-virtual -W") if ( CYGWIN OR (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.0)) diff --git a/cmake/printSummary.cmake b/cmake/printSummary.cmake index dc175fa2..4056ab83 100644 --- a/cmake/printSummary.cmake +++ b/cmake/printSummary.cmake @@ -63,6 +63,7 @@ OptionOutput( "Building samples: " EXIV2_BUILD_SAMPLES OptionOutput( "Building PO files: " EXIV2_BUILD_PO ) OptionOutput( "Building unit tests: " EXIV2_BUILD_UNIT_TESTS ) OptionOutput( "Building doc: " EXIV2_BUILD_DOC ) +OptionOutput( "Building with coverage flags: " BUILD_WITH_COVERAGE ) OptionOutput( "Using ccache: " BUILD_WITH_CCACHE )