summaryrefslogtreecommitdiffstats
path: root/Tests/CTestCoverageCollectGCOV
diff options
context:
space:
mode:
authorCristian Morales Vega <cristian@samknows.com>2019-04-23 16:12:11 (GMT)
committerCristian Morales Vega <cristian@samknows.com>2019-05-03 20:25:20 (GMT)
commit911b97867b72226df7cfab95374a6c2b89d9ffa3 (patch)
tree4593002a49e491ac9cc289a1c053eed39e3bef50 /Tests/CTestCoverageCollectGCOV
parentd170a3177fdc57c96034f8a2ecf5d0f9aff70af4 (diff)
downloadCMake-911b97867b72226df7cfab95374a6c2b89d9ffa3.zip
CMake-911b97867b72226df7cfab95374a6c2b89d9ffa3.tar.gz
CMake-911b97867b72226df7cfab95374a6c2b89d9ffa3.tar.bz2
CTestCoverageCollectGCOV: run gcov only once
Running gcov once per .gcda file is not only inefficient, it also generates wrong data since .gcov files can get overwritten and in general gcov works with less information. fakegcov.cmake needs to be able to handle multiple .gcda files for the test to be meaningful.
Diffstat (limited to 'Tests/CTestCoverageCollectGCOV')
-rw-r--r--Tests/CTestCoverageCollectGCOV/fakegcov.cmake21
1 files changed, 12 insertions, 9 deletions
diff --git a/Tests/CTestCoverageCollectGCOV/fakegcov.cmake b/Tests/CTestCoverageCollectGCOV/fakegcov.cmake
index b0c3a9b..6df4292 100644
--- a/Tests/CTestCoverageCollectGCOV/fakegcov.cmake
+++ b/Tests/CTestCoverageCollectGCOV/fakegcov.cmake
@@ -1,14 +1,17 @@
+function(create_gcov_file gcda_full_path)
+ get_filename_component(gcda_name ${gcda_full_path} NAME)
+ string(REPLACE ".gcda" ".gcov" gcov_name "${gcda_name}")
+
+ file(STRINGS "${gcda_full_path}" source_file LIMIT_COUNT 1 ENCODING UTF-8)
+
+ file(WRITE "${CMAKE_SOURCE_DIR}/${gcov_name}"
+ " -: 0:Source:${source_file}"
+ )
+endfunction()
+
foreach(I RANGE 0 ${CMAKE_ARGC})
if("${CMAKE_ARGV${I}}" MATCHES ".*\\.gcda")
set(gcda_file "${CMAKE_ARGV${I}}")
+ create_gcov_file(${gcda_file})
endif()
endforeach()
-
-get_filename_component(gcda_name ${gcda_file} NAME)
-string(REPLACE ".gcda" ".gcov" gcov_name "${gcda_name}")
-
-file(STRINGS "${gcda_file}" source_file LIMIT_COUNT 1 ENCODING UTF-8)
-
-file(WRITE "${CMAKE_SOURCE_DIR}/${gcov_name}"
- " -: 0:Source:${source_file}"
-)