@@ -106,6 +106,7 @@ find_program(GENHTML_PATH genhtml)
106
106
mark_as_advanced (FORCE LLVM_COV_PATH LLVM_PROFDATA_PATH LCOV_PATH GENHTML_PATH)
107
107
108
108
# Variables
109
+ set (CMAKE_COVERAGE_DATA_DIRECTORY ${CMAKE_BINARY_DIR} /ccov-data)
109
110
set (CMAKE_COVERAGE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /ccov)
110
111
set_property (GLOBAL PROPERTY JOB_POOLS ccov_serial_pool=1)
111
112
@@ -114,6 +115,7 @@ if(CODE_COVERAGE AND NOT CODE_COVERAGE_ADDED)
114
115
set (CODE_COVERAGE_ADDED ON )
115
116
116
117
# Common Targets
118
+ file (MAKE_DIRECTORY ${CMAKE_COVERAGE_DATA_DIRECTORY} )
117
119
file (MAKE_DIRECTORY ${CMAKE_COVERAGE_OUTPUT_DIRECTORY} )
118
120
119
121
if (CMAKE_C_COMPILER_ID MATCHES "(Apple)?[Cc]lang"
@@ -155,16 +157,16 @@ if(CODE_COVERAGE AND NOT CODE_COVERAGE_ADDED)
155
157
add_custom_target (
156
158
ccov-clean
157
159
COMMAND ${CMAKE_COMMAND} -E remove -f
158
- ${CMAKE_COVERAGE_OUTPUT_DIRECTORY } /binaries.list
160
+ ${CMAKE_COVERAGE_DATA_DIRECTORY } /binaries.list
159
161
COMMAND ${CMAKE_COMMAND} -E remove -f
160
- ${CMAKE_COVERAGE_OUTPUT_DIRECTORY } /profraw.list)
162
+ ${CMAKE_COVERAGE_DATA_DIRECTORY } /profraw.list)
161
163
else ()
162
164
add_custom_target (
163
165
ccov-clean
164
166
COMMAND ${CMAKE_COMMAND} -E rm -f
165
- ${CMAKE_COVERAGE_OUTPUT_DIRECTORY } /binaries.list
167
+ ${CMAKE_COVERAGE_DATA_DIRECTORY } /binaries.list
166
168
COMMAND ${CMAKE_COMMAND} -E rm -f
167
- ${CMAKE_COVERAGE_OUTPUT_DIRECTORY } /profraw.list)
169
+ ${CMAKE_COVERAGE_DATA_DIRECTORY } /profraw.list)
168
170
endif ()
169
171
170
172
# Used to get the shared object file list before doing the main all-
@@ -328,7 +330,7 @@ function(target_code_coverage TARGET_NAME)
328
330
add_custom_target (
329
331
ccov-run-${target_code_coverage_COVERAGE_TARGET_NAME}
330
332
COMMAND ${CMAKE_COMMAND} -E echo "-object=$<TARGET_FILE:${TARGET_NAME} >"
331
- >> ${CMAKE_COVERAGE_OUTPUT_DIRECTORY } /binaries.list
333
+ >> ${CMAKE_COVERAGE_DATA_DIRECTORY } /binaries.list
332
334
DEPENDS ${TARGET_NAME} )
333
335
334
336
if (NOT TARGET ccov-libs)
@@ -374,11 +376,11 @@ function(target_code_coverage TARGET_NAME)
374
376
$<TARGET_FILE:${TARGET_NAME} > ${target_code_coverage_ARGS}
375
377
COMMAND
376
378
${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
378
380
COMMAND
379
381
${CMAKE_COMMAND} -E echo
380
382
"${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
382
384
JOB_POOL ccov_serial_pool
383
385
DEPENDS ccov-libs ${TARGET_NAME} )
384
386
@@ -450,7 +452,7 @@ function(target_code_coverage TARGET_NAME)
450
452
elseif (CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES
451
453
"GNU" )
452
454
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"
454
456
)
455
457
456
458
# Run the executable, generating coverage information
@@ -626,16 +628,16 @@ function(add_code_coverage_all_targets)
626
628
ccov-all -processing
627
629
COMMAND
628
630
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)
632
634
else ()
633
635
add_custom_target (
634
636
ccov-all -processing
635
637
COMMAND
636
638
${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`)
639
641
endif ()
640
642
641
643
# Regex exclude only available for LLVM >= 7
@@ -652,18 +654,18 @@ function(add_code_coverage_all_targets)
652
654
ccov-all -report
653
655
COMMAND
654
656
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
656
658
$$FILELIST
657
- -instr-profile=${CMAKE_COVERAGE_OUTPUT_DIRECTORY } /all -merged.profdata
659
+ -instr-profile=${CMAKE_COVERAGE_DATA_DIRECTORY } /all -merged.profdata
658
660
${EXCLUDE_REGEX}
659
661
DEPENDS ccov-all -processing)
660
662
else ()
661
663
add_custom_target (
662
664
ccov-all -report
663
665
COMMAND
664
666
${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
667
669
${EXCLUDE_REGEX}
668
670
DEPENDS ccov-all -processing)
669
671
endif ()
@@ -675,9 +677,9 @@ function(add_code_coverage_all_targets)
675
677
ccov-all -export
676
678
COMMAND
677
679
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
679
681
$$FILELIST
680
- -instr-profile=${CMAKE_COVERAGE_OUTPUT_DIRECTORY } /all -merged.profdata
682
+ -instr-profile=${CMAKE_COVERAGE_DATA_DIRECTORY } /all -merged.profdata
681
683
-format="text" ${EXCLUDE_REGEX} >
682
684
${CMAKE_COVERAGE_OUTPUT_DIRECTORY} /coverage.json
683
685
DEPENDS ccov-all -processing)
@@ -686,8 +688,8 @@ function(add_code_coverage_all_targets)
686
688
ccov-all -export
687
689
COMMAND
688
690
${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
691
693
-format="text" ${EXCLUDE_REGEX} >
692
694
${CMAKE_COVERAGE_OUTPUT_DIRECTORY} /coverage.json
693
695
DEPENDS ccov-all -processing)
@@ -699,9 +701,9 @@ function(add_code_coverage_all_targets)
699
701
ccov-all
700
702
COMMAND
701
703
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
703
705
$$FILELIST
704
- -instr-profile=${CMAKE_COVERAGE_OUTPUT_DIRECTORY } /all -merged.profdata
706
+ -instr-profile=${CMAKE_COVERAGE_DATA_DIRECTORY } /all -merged.profdata
705
707
-show-line-counts-or -regions
706
708
-output -dir=${CMAKE_COVERAGE_OUTPUT_DIRECTORY} /all -merged
707
709
-format="html" ${EXCLUDE_REGEX}
@@ -711,8 +713,8 @@ function(add_code_coverage_all_targets)
711
713
ccov-all
712
714
COMMAND
713
715
${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
716
718
-show-line-counts-or -regions
717
719
-output -dir=${CMAKE_COVERAGE_OUTPUT_DIRECTORY} /all -merged
718
720
-format="html" ${EXCLUDE_REGEX}
0 commit comments