@@ -85,12 +85,7 @@ find_program(LLVM_PROFDATA_PATH llvm-profdata)
8585find_program (LCOV_PATH lcov)
8686find_program (GENHTML_PATH genhtml)
8787# Hide behind the 'advanced' mode flag for GUI/ccmake
88- mark_as_advanced (
89- FORCE
90- LLVM_COV_PATH
91- LLVM_PROFDATA_PATH
92- LCOV_PATH
93- GENHTML_PATH)
88+ mark_as_advanced (FORCE LLVM_COV_PATH LLVM_PROFDATA_PATH LCOV_PATH GENHTML_PATH)
9489
9590# Variables
9691set (CMAKE_COVERAGE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /ccov)
@@ -117,10 +112,7 @@ if(CODE_COVERAGE AND NOT CODE_COVERAGE_ADDED)
117112 # Version number checking for 'EXCLUDE' compatibility
118113 execute_process (COMMAND ${LLVM_COV_PATH} --version
119114 OUTPUT_VARIABLE LLVM_COV_VERSION_CALL_OUTPUT)
120- string (
121- REGEX MATCH
122- "[0-9]+\\ .[0-9]+\\ .[0-9]+"
123- LLVM_COV_VERSION
115+ string (REGEX MATCH "[0-9]+\\ .[0-9]+\\ .[0-9]+" LLVM_COV_VERSION
124116 ${LLVM_COV_VERSION_CALL_OUTPUT} )
125117
126118 if (LLVM_COV_VERSION VERSION_LESS "7.0.0" )
@@ -144,17 +136,14 @@ if(CODE_COVERAGE AND NOT CODE_COVERAGE_ADDED)
144136 COMMAND ;
145137 COMMENT "libs ready for coverage report." )
146138
147- elseif (CMAKE_C_COMPILER_ID MATCHES "GNU"
148- OR CMAKE_CXX_COMPILER_ID MATCHES "GNU" )
139+ elseif (CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES
140+ "GNU" )
149141 # Messages
150142 message (STATUS "Building with lcov Code Coverage Tools" )
151143
152144 if (CMAKE_BUILD_TYPE )
153145 string (TOUPPER ${CMAKE_BUILD_TYPE} upper_build_type)
154- if (NOT
155- ${upper_build_type}
156- STREQUAL
157- "DEBUG" )
146+ if (NOT ${upper_build_type} STREQUAL "DEBUG" )
158147 message (
159148 WARNING
160149 "Code coverage results with an optimized (non-Debug) build may be misleading"
@@ -215,20 +204,12 @@ endif()
215204# ~~~
216205function (target_code_coverage TARGET_NAME)
217206 # Argument parsing
218- set (options
219- AUTO
220- ALL
221- EXTERNAL
222- PUBLIC
223- INTERFACE )
207+ set (options AUTO ALL EXTERNAL PUBLIC INTERFACE )
224208 set (single_value_keywords COVERAGE_TARGET_NAME)
225209 set (multi_value_keywords EXCLUDE OBJECTS ARGS)
226210 cmake_parse_arguments (
227- target_code_coverage
228- "${options} "
229- "${single_value_keywords} "
230- "${multi_value_keywords} "
231- ${ARGN} )
211+ target_code_coverage "${options} " "${single_value_keywords} "
212+ "${multi_value_keywords} " ${ARGN} )
232213
233214 # Set the visibility of target functions to PUBLIC, INTERFACE or default to
234215 # PRIVATE.
@@ -250,22 +231,13 @@ function(target_code_coverage TARGET_NAME)
250231 # Add code coverage instrumentation to the target's linker command
251232 if (CMAKE_C_COMPILER_ID MATCHES "(Apple)?[Cc]lang"
252233 OR CMAKE_CXX_COMPILER_ID MATCHES "(Apple)?[Cc]lang" )
253- target_compile_options (
254- ${TARGET_NAME}
255- ${TARGET_VISIBILITY}
256- -fprofile-instr-generate
257- -fcoverage-mapping)
258- target_link_options (
259- ${TARGET_NAME}
260- ${TARGET_VISIBILITY}
261- -fprofile-instr-generate
262- -fcoverage-mapping)
263- elseif (CMAKE_C_COMPILER_ID MATCHES "GNU"
264- OR CMAKE_CXX_COMPILER_ID MATCHES "GNU" )
265- target_compile_options (
266- ${TARGET_NAME}
267- ${TARGET_VISIBILITY}
268- -fprofile-arcs
234+ target_compile_options (${TARGET_NAME} ${TARGET_VISIBILITY}
235+ -fprofile-instr-generate -fcoverage-mapping)
236+ target_link_options (${TARGET_NAME} ${TARGET_VISIBILITY}
237+ -fprofile-instr-generate -fcoverage-mapping)
238+ elseif (CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES
239+ "GNU" )
240+ target_compile_options (${TARGET_NAME} ${TARGET_VISIBILITY} -fprofile-arcs
269241 -ftest-coverage)
270242 target_link_libraries (${TARGET_NAME} ${TARGET_VISIBILITY} gcov)
271243 endif ()
@@ -386,10 +358,7 @@ function(target_code_coverage TARGET_NAME)
386358
387359 # Generate exclusion string for use
388360 foreach (EXCLUDE_ITEM ${target_code_coverage_EXCLUDE} )
389- set (EXCLUDE_REGEX
390- ${EXCLUDE_REGEX}
391- --remove
392- ${COVERAGE_INFO}
361+ set (EXCLUDE_REGEX ${EXCLUDE_REGEX} --remove ${COVERAGE_INFO}
393362 '${EXCLUDE_ITEM} ')
394363 endforeach ()
395364
@@ -496,12 +465,8 @@ endfunction()
496465function (add_code_coverage_all_targets)
497466 # Argument parsing
498467 set (multi_value_keywords EXCLUDE )
499- cmake_parse_arguments (
500- add_code_coverage_all_targets
501- ""
502- ""
503- "${multi_value_keywords} "
504- ${ARGN} )
468+ cmake_parse_arguments (add_code_coverage_all_targets "" ""
469+ "${multi_value_keywords} " ${ARGN} )
505470
506471 if (CODE_COVERAGE)
507472 if (CMAKE_C_COMPILER_ID MATCHES "(Apple)?[Cc]lang"
@@ -567,10 +532,7 @@ function(add_code_coverage_all_targets)
567532 # Exclusion regex string creation
568533 set (EXCLUDE_REGEX)
569534 foreach (EXCLUDE_ITEM ${add_code_coverage_all_targets_EXCLUDE} )
570- set (EXCLUDE_REGEX
571- ${EXCLUDE_REGEX}
572- --remove
573- ${COVERAGE_INFO}
535+ set (EXCLUDE_REGEX ${EXCLUDE_REGEX} --remove ${COVERAGE_INFO}
574536 '${EXCLUDE_ITEM} ')
575537 endforeach ()
576538
0 commit comments