From d1965caf8da8010221f9454b59feb0ad876f59d2 Mon Sep 17 00:00:00 2001 From: Godzil Date: Mon, 24 Feb 2020 17:26:36 +0000 Subject: [PATCH] Add an option to run coverage locally --- CMakeLists.txt | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8a13592..c34c618 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,12 +10,32 @@ option(COVERALLS "Generate coveralls data" OFF) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/external/coveralls-cmake/cmake) option(PACKAGE_TESTS "Build the tests" ON) +option(ENABLE_COVERAGE "Build for code coverage" OFF) + +if (ENABLE_COVERAGE AND COVERALLS) + message(FATAL_ERROR "You can't enable both ENABLE_COVERAGE and COVERALLS at the same time") +endif() if (COVERALLS) include(Coveralls) coveralls_turn_on_coverage() endif() +if (ENABLE_COVERAGE) + if("${CMAKE_C_COMPILER_ID}" MATCHES "(Apple)?[Cc]lang" OR + "${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?[Cc]lang") + message("Building with LLVM Code Coverage Tools") + set(CMAKE_CXX_FLAGS "-fprofile-instr-generate -fcoverage-mapping") + elseif(CMAKE_COMPILER_IS_GNUCXX) + message("Building with lcov Code Coverage Tools") + set(CMAKE_CXX_FLAGS "--coverage") + else() + message(FATAL_ERROR "Compiler ${CMAKE_C_COMPILER_ID} is not supported for code coverage") + endif() + +endif() + + # LodePNG don't make a .a or .so, so let's build a library here add_library(LodePNG STATIC)