diff --git a/CMakeLists.txt b/CMakeLists.txt index 3a444de3af9c1e3ba5d7f07c00c4f8ab91c9cce1..feaaed9de4c4c1dbdd1d7da25a06f0d0cb4a9071 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -151,13 +151,24 @@ if("${CMAKE_BUILD_TYPE}" STREQUAL "Coverage") message(FATAL_ERROR "gcovr not found, cannot perform coverage.") endif() - set(GCOVR_OPTIONS --object-directory="${PASTIS_BINARY_DIR}" -r "${PASTIS_SOURCE_DIR}/src" -e "${PASTIS_SOURCE_DIR}/src/experimental" -e "${PASTIS_SOURCE_DIR}/src/main.cpp") + if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + string(REPLACE "clang++" "llvm-cov" LLVM_COV "${CMAKE_CXX_COMPILER}") + if(NOT EXISTS "${LLVM_COV}") + message(FATAL_ERROR "could not find ${LLVM_COV}, cannot perform coverage (using g++ for coverage is recommended).") + endif() + + set(GCOVR_EXTRA "--gcov-executable=${LLVM_COV} gcov") + endif() + + set(GCOVR_OPTIONS --object-directory="${PASTIS_BINARY_DIR}" -r "${PASTIS_SOURCE_DIR}/src" -e "${PASTIS_SOURCE_DIR}/src/experimental" -e "${PASTIS_SOURCE_DIR}/src/main.cpp" ${GCOVR_EXTRA}) + add_custom_target(coverage ALL - # COMMAND ${unit_test_EXECUTABLE} + COMMAND ctest -j ${PROCESSOR_COUNT} COMMAND ${GCOVR} ${GCOVR_OPTIONS} DEPENDS unit_tests pastis COMMENT "Running gcovr to build coverage report." + USES_TERMINAL ) add_custom_target(coverage-report