summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/cmake/cmake.d/03-macros.cmake18
-rw-r--r--src/cmake/gcov-helper.sh.in17
-rw-r--r--src/cmake/src_exclude5
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