Skip to content

Commit 4d715b9

Browse files
committed
Add new binary directory for coverage targets
Currently, the code-coverage data files used in processing was mixed in with the results in the `ccov` directory. Now, they are stored in a separate `ccov-data` directory, so the original directory is now exclusively for final output/results.
1 parent e5ef479 commit 4d715b9

File tree

1 file changed

+27
-25
lines changed

1 file changed

+27
-25
lines changed

code-coverage.cmake

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ find_program(GENHTML_PATH genhtml)
106106
mark_as_advanced(FORCE LLVM_COV_PATH LLVM_PROFDATA_PATH LCOV_PATH GENHTML_PATH)
107107

108108
# Variables
109+
set(CMAKE_COVERAGE_DATA_DIRECTORY ${CMAKE_BINARY_DIR}/ccov-data)
109110
set(CMAKE_COVERAGE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/ccov)
110111
set_property(GLOBAL PROPERTY JOB_POOLS ccov_serial_pool=1)
111112

@@ -114,6 +115,7 @@ if(CODE_COVERAGE AND NOT CODE_COVERAGE_ADDED)
114115
set(CODE_COVERAGE_ADDED ON)
115116

116117
# Common Targets
118+
file(MAKE_DIRECTORY ${CMAKE_COVERAGE_DATA_DIRECTORY})
117119
file(MAKE_DIRECTORY ${CMAKE_COVERAGE_OUTPUT_DIRECTORY})
118120

119121
if(CMAKE_C_COMPILER_ID MATCHES "(Apple)?[Cc]lang"
@@ -155,16 +157,16 @@ if(CODE_COVERAGE AND NOT CODE_COVERAGE_ADDED)
155157
add_custom_target(
156158
ccov-clean
157159
COMMAND ${CMAKE_COMMAND} -E remove -f
158-
${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/binaries.list
160+
${CMAKE_COVERAGE_DATA_DIRECTORY}/binaries.list
159161
COMMAND ${CMAKE_COMMAND} -E remove -f
160-
${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/profraw.list)
162+
${CMAKE_COVERAGE_DATA_DIRECTORY}/profraw.list)
161163
else()
162164
add_custom_target(
163165
ccov-clean
164166
COMMAND ${CMAKE_COMMAND} -E rm -f
165-
${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/binaries.list
167+
${CMAKE_COVERAGE_DATA_DIRECTORY}/binaries.list
166168
COMMAND ${CMAKE_COMMAND} -E rm -f
167-
${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/profraw.list)
169+
${CMAKE_COVERAGE_DATA_DIRECTORY}/profraw.list)
168170
endif()
169171

170172
# Used to get the shared object file list before doing the main all-
@@ -328,7 +330,7 @@ function(target_code_coverage TARGET_NAME)
328330
add_custom_target(
329331
ccov-run-${target_code_coverage_COVERAGE_TARGET_NAME}
330332
COMMAND ${CMAKE_COMMAND} -E echo "-object=$<TARGET_FILE:${TARGET_NAME}>"
331-
>> ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/binaries.list
333+
>> ${CMAKE_COVERAGE_DATA_DIRECTORY}/binaries.list
332334
DEPENDS ${TARGET_NAME})
333335

334336
if(NOT TARGET ccov-libs)
@@ -374,11 +376,11 @@ function(target_code_coverage TARGET_NAME)
374376
$<TARGET_FILE:${TARGET_NAME}> ${target_code_coverage_ARGS}
375377
COMMAND
376378
${CMAKE_COMMAND} -E echo "-object=$<TARGET_FILE:${TARGET_NAME}>"
377-
${LINKED_OBJECTS} >> ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/binaries.list
379+
${LINKED_OBJECTS} >> ${CMAKE_COVERAGE_DATA_DIRECTORY}/binaries.list
378380
COMMAND
379381
${CMAKE_COMMAND} -E echo
380382
"${CMAKE_CURRENT_BINARY_DIR}/${target_code_coverage_COVERAGE_TARGET_NAME}.profraw"
381-
>> ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/profraw.list
383+
>> ${CMAKE_COVERAGE_DATA_DIRECTORY}/profraw.list
382384
JOB_POOL ccov_serial_pool
383385
DEPENDS ccov-libs ${TARGET_NAME})
384386

@@ -450,7 +452,7 @@ function(target_code_coverage TARGET_NAME)
450452
elseif(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES
451453
"GNU")
452454
set(COVERAGE_INFO
453-
"${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/${target_code_coverage_COVERAGE_TARGET_NAME}.info"
455+
"${CMAKE_COVERAGE_DATA_DIRECTORY}/${target_code_coverage_COVERAGE_TARGET_NAME}.info"
454456
)
455457

456458
# Run the executable, generating coverage information
@@ -626,16 +628,16 @@ function(add_code_coverage_all_targets)
626628
ccov-all-processing
627629
COMMAND
628630
powershell -Command $$FILELIST = Get-Content
629-
${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/profraw.list\; llvm-profdata.exe
630-
merge -o ${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/all-merged.profdata
631-
-sparse $$FILELIST)
631+
${CMAKE_COVERAGE_DATA_DIRECTORY}/profraw.list\; llvm-profdata.exe
632+
merge -o ${CMAKE_COVERAGE_DATA_DIRECTORY}/all-merged.profdata -sparse
633+
$$FILELIST)
632634
else()
633635
add_custom_target(
634636
ccov-all-processing
635637
COMMAND
636638
${LLVM_PROFDATA_PATH} merge -o
637-
${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/all-merged.profdata -sparse `cat
638-
${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/profraw.list`)
639+
${CMAKE_COVERAGE_DATA_DIRECTORY}/all-merged.profdata -sparse `cat
640+
${CMAKE_COVERAGE_DATA_DIRECTORY}/profraw.list`)
639641
endif()
640642

641643
# Regex exclude only available for LLVM >= 7
@@ -652,18 +654,18 @@ function(add_code_coverage_all_targets)
652654
ccov-all-report
653655
COMMAND
654656
powershell -Command $$FILELIST = Get-Content
655-
${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/binaries.list\; llvm-cov.exe report
657+
${CMAKE_COVERAGE_DATA_DIRECTORY}/binaries.list\; llvm-cov.exe report
656658
$$FILELIST
657-
-instr-profile=${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/all-merged.profdata
659+
-instr-profile=${CMAKE_COVERAGE_DATA_DIRECTORY}/all-merged.profdata
658660
${EXCLUDE_REGEX}
659661
DEPENDS ccov-all-processing)
660662
else()
661663
add_custom_target(
662664
ccov-all-report
663665
COMMAND
664666
${LLVM_COV_PATH} report `cat
665-
${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/binaries.list`
666-
-instr-profile=${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/all-merged.profdata
667+
${CMAKE_COVERAGE_DATA_DIRECTORY}/binaries.list`
668+
-instr-profile=${CMAKE_COVERAGE_DATA_DIRECTORY}/all-merged.profdata
667669
${EXCLUDE_REGEX}
668670
DEPENDS ccov-all-processing)
669671
endif()
@@ -675,9 +677,9 @@ function(add_code_coverage_all_targets)
675677
ccov-all-export
676678
COMMAND
677679
powershell -Command $$FILELIST = Get-Content
678-
${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/binaries.list\; llvm-cov.exe export
680+
${CMAKE_COVERAGE_DATA_DIRECTORY}/binaries.list\; llvm-cov.exe export
679681
$$FILELIST
680-
-instr-profile=${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/all-merged.profdata
682+
-instr-profile=${CMAKE_COVERAGE_DATA_DIRECTORY}/all-merged.profdata
681683
-format="text" ${EXCLUDE_REGEX} >
682684
${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/coverage.json
683685
DEPENDS ccov-all-processing)
@@ -686,8 +688,8 @@ function(add_code_coverage_all_targets)
686688
ccov-all-export
687689
COMMAND
688690
${LLVM_COV_PATH} export `cat
689-
${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/binaries.list`
690-
-instr-profile=${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/all-merged.profdata
691+
${CMAKE_COVERAGE_DATA_DIRECTORY}/binaries.list`
692+
-instr-profile=${CMAKE_COVERAGE_DATA_DIRECTORY}/all-merged.profdata
691693
-format="text" ${EXCLUDE_REGEX} >
692694
${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/coverage.json
693695
DEPENDS ccov-all-processing)
@@ -699,9 +701,9 @@ function(add_code_coverage_all_targets)
699701
ccov-all
700702
COMMAND
701703
powershell -Command $$FILELIST = Get-Content
702-
${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/binaries.list\; llvm-cov.exe show
704+
${CMAKE_COVERAGE_DATA_DIRECTORY}/binaries.list\; llvm-cov.exe show
703705
$$FILELIST
704-
-instr-profile=${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/all-merged.profdata
706+
-instr-profile=${CMAKE_COVERAGE_DATA_DIRECTORY}/all-merged.profdata
705707
-show-line-counts-or-regions
706708
-output-dir=${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/all-merged
707709
-format="html" ${EXCLUDE_REGEX}
@@ -711,8 +713,8 @@ function(add_code_coverage_all_targets)
711713
ccov-all
712714
COMMAND
713715
${LLVM_COV_PATH} show `cat
714-
${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/binaries.list`
715-
-instr-profile=${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/all-merged.profdata
716+
${CMAKE_COVERAGE_DATA_DIRECTORY}/binaries.list`
717+
-instr-profile=${CMAKE_COVERAGE_DATA_DIRECTORY}/all-merged.profdata
716718
-show-line-counts-or-regions
717719
-output-dir=${CMAKE_COVERAGE_OUTPUT_DIRECTORY}/all-merged
718720
-format="html" ${EXCLUDE_REGEX}

0 commit comments

Comments
 (0)