From e4709099d29db89a5c6299453cc9aed7b5329c33 Mon Sep 17 00:00:00 2001 From: Martchus Date: Fri, 28 Jul 2017 17:34:28 +0200 Subject: [PATCH] Prevent error in coverage target when building only static libs --- cmake/modules/BasicConfig.cmake | 18 ++++++++++-------- cmake/modules/TestTarget.cmake | 8 ++++++-- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/cmake/modules/BasicConfig.cmake b/cmake/modules/BasicConfig.cmake index 1373881..d3ff1dc 100644 --- a/cmake/modules/BasicConfig.cmake +++ b/cmake/modules/BasicConfig.cmake @@ -240,16 +240,18 @@ endif() # enable source code based coverage analysis using clang option(CLANG_SOURCE_BASED_COVERAGE_ENABLED "enables creation of coverage targets for source-based coverage with clang" OFF) if(CLANG_SOURCE_BASED_COVERAGE_ENABLED) - if(CMAKE_HOST_UNIX AND "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - set(CLANG_SOURCE_BASED_COVERAGE_AVAILABLE YES) - set(CLANG_SOURCE_BASED_COVERAGE_FLAGS -fprofile-instr-generate -fcoverage-mapping) - list(APPEND META_PRIVATE_SHARED_LIB_COMPILE_OPTIONS ${CLANG_SOURCE_BASED_COVERAGE_FLAGS}) - list(APPEND META_PRIVATE_STATIC_LIB_COMPILE_OPTIONS ${CLANG_SOURCE_BASED_COVERAGE_FLAGS}) - list(APPEND META_ADDITIONAL_SHARED_LINK_FLAGS ${CLANG_SOURCE_BASED_COVERAGE_FLAGS}) - list(APPEND META_ADDITIONAL_STATIC_LINK_FLAGS ${CLANG_SOURCE_BASED_COVERAGE_FLAGS}) - else() + if(NOT CMAKE_HOST_UNIX OR NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") message(FATAL_ERROR "Source-based coverage only available under UNIX with Clang") endif() + if(NOT META_PROJECT_TYPE STREQUAL "application" AND DISABLE_SHARED_LIBS) + message(FATAL_ERROR "Source-based coverage not available when only building static libs") + endif() + set(CLANG_SOURCE_BASED_COVERAGE_AVAILABLE YES) + set(CLANG_SOURCE_BASED_COVERAGE_FLAGS -fprofile-instr-generate -fcoverage-mapping) + list(APPEND META_PRIVATE_SHARED_LIB_COMPILE_OPTIONS ${CLANG_SOURCE_BASED_COVERAGE_FLAGS}) + list(APPEND META_PRIVATE_STATIC_LIB_COMPILE_OPTIONS ${CLANG_SOURCE_BASED_COVERAGE_FLAGS}) + list(APPEND META_ADDITIONAL_SHARED_LINK_FLAGS ${CLANG_SOURCE_BASED_COVERAGE_FLAGS}) + list(APPEND META_ADDITIONAL_STATIC_LINK_FLAGS ${CLANG_SOURCE_BASED_COVERAGE_FLAGS}) endif() # configure creation of install targets diff --git a/cmake/modules/TestTarget.cmake b/cmake/modules/TestTarget.cmake index f526942..8517be4 100644 --- a/cmake/modules/TestTarget.cmake +++ b/cmake/modules/TestTarget.cmake @@ -154,11 +154,15 @@ if(CPP_UNIT_LIB OR META_NO_CPP_UNIT) ) # make a test recognized by ctest + unset(RUN_TESTS_APPLICATION_ARG) + if(META_PROJECT_TYPE STREQUAL "application") + set(RUN_TESTS_APPLICATION_ARGS -a "$") + endif() add_test(NAME ${META_PROJECT_NAME}_run_tests COMMAND ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests -p "${CMAKE_CURRENT_SOURCE_DIR}/testfiles" -w "${CMAKE_CURRENT_BINARY_DIR}/testworkingdir" - -a "$" + ${RUN_TESTS_APPLICATION_ARGS} ) # enable source code based coverage analysis using clang @@ -188,7 +192,7 @@ if(CPP_UNIT_LIB OR META_NO_CPP_UNIT) $ -p "${CMAKE_CURRENT_SOURCE_DIR}/testfiles" -w "${CMAKE_CURRENT_BINARY_DIR}/testworkingdir" - -a "$" + ${RUN_TESTS_APPLICATION_ARGS} COMMENT "Executing ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests to generate raw profiling data for source-based coverage report" DEPENDS "${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}_tests" )