diff options
-rw-r--r-- | src/cmake/cmake.d/03-macros.cmake | 18 | ||||
-rw-r--r-- | src/cmake/gcov-helper.sh.in | 17 | ||||
-rw-r--r-- | src/cmake/src_exclude | 5 |
3 files changed, 40 insertions, 0 deletions
diff --git a/src/cmake/cmake.d/03-macros.cmake b/src/cmake/cmake.d/03-macros.cmake index 0b4b276..32182f9 100644 --- a/src/cmake/cmake.d/03-macros.cmake +++ b/src/cmake/cmake.d/03-macros.cmake @@ -1,5 +1,6 @@ ########################################################################### # Copyright 2015, 2016, 2017 IoT.bzh +# Copyright (C) 2020 Konsulko Group # # author: Fulup Ar Foll <fulup@iot.bzh> # contrib: Romain Forlot <romain.forlot@iot.bzh> @@ -652,6 +653,23 @@ You need a config.xml template: please specify WIDGET_CONFIG_TEMPLATE correctly. ) list(APPEND test_widget_files_items ${PROJECT_PKG_TEST_DIR}/config.xml) + IF(${CMAKE_BUILD_TYPE} MATCHES DEBUG OR ${CMAKE_BUILD_TYPE} MATCHES COVERAGE) + # populate wgt/src + add_custom_command(OUTPUT ${PROJECT_PKG_BUILD_DIR}/src + COMMAND mkdir -p ${PROJECT_PKG_BUILD_DIR}/src + COMMAND tar -C ${CMAKE_SOURCE_DIR} -cf - -X ${PROJECT_APP_TEMPLATES_DIR}/cmake/src_exclude . | tar -C ${PROJECT_PKG_BUILD_DIR}/src -xf -) + list(APPEND widget_files_items ${PROJECT_PKG_BUILD_DIR}/src) + ENDIF() + + IF(${CMAKE_BUILD_TYPE} MATCHES COVERAGE) + # populate wgt/coverage + configure_file(${PROJECT_APP_TEMPLATES_DIR}/cmake/gcov-helper.sh.in ${CMAKE_BINARY_DIR}/gcov-helper.sh @ONLY) + add_custom_command(OUTPUT ${PROJECT_PKG_BUILD_DIR}/coverage + COMMAND mkdir -p ${PROJECT_PKG_BUILD_DIR}/coverage + COMMAND /bin/sh ${CMAKE_BINARY_DIR}/gcov-helper.sh) + list(APPEND widget_files_items ${PROJECT_PKG_BUILD_DIR}/coverage) + ENDIF() + # add test launcher add_custom_command(OUTPUT ${PROJECT_PKG_TEST_DIR}/bin COMMAND mkdir -p ${PROJECT_PKG_TEST_DIR}/bin diff --git a/src/cmake/gcov-helper.sh.in b/src/cmake/gcov-helper.sh.in new file mode 100644 index 0000000..4278148 --- /dev/null +++ b/src/cmake/gcov-helper.sh.in @@ -0,0 +1,17 @@ +#!/bin/sh + +# Copy gcno files +for f in `find @CMAKE_BINARY_DIR@ -name '*\.gcno'`; do + d="${f%/*}" + mkdir -p "@PROJECT_PKG_BUILD_DIR@/coverage/${d#@CMAKE_BINARY_DIR@}" + cp "$f" "@PROJECT_PKG_BUILD_DIR@/coverage/${d#@CMAKE_BINARY_DIR@}" +done + +# Make gcov environment file +mkdir -p "@PROJECT_PKG_BUILD_DIR@/coverage" +dirs=`echo "@CMAKE_BINARY_DIR@" | tr -cd '/' | wc -c` +cat > "@PROJECT_PKG_BUILD_DIR@/coverage/gcov.env" <<EOF +GCOV_PREFIX=/tmp/gcov/@PROJECT_NAME@ +GCOV_PREFIX_STRIP=${dirs} +EOF + diff --git a/src/cmake/src_exclude b/src/cmake/src_exclude new file mode 100644 index 0000000..03e0124 --- /dev/null +++ b/src/cmake/src_exclude @@ -0,0 +1,5 @@ +.git* +build* +doc +docs +can_samples |