@@ -106,6 +106,7 @@ find_program(GENHTML_PATH genhtml)
106106mark_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)
109110set (CMAKE_COVERAGE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /ccov)
110111set_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