diff --git a/cmake/script/CoverageInclude.cmake.in b/cmake/script/CoverageInclude.cmake.in index 8fe11b48037f1..96a459303dcf2 100644 --- a/cmake/script/CoverageInclude.cmake.in +++ b/cmake/script/CoverageInclude.cmake.in @@ -24,7 +24,15 @@ separate_arguments(LCOV_OPTS) set(LCOV_COMMAND ${LCOV_EXECUTABLE} --gcov-tool ${CMAKE_CURRENT_LIST_DIR}/cov_tool_wrapper.sh ${LCOV_OPTS}) find_program(GENHTML_EXECUTABLE genhtml REQUIRED) -set(GENHTML_COMMAND ${GENHTML_EXECUTABLE} --show-details ${LCOV_OPTS}) + +# HTML_OPTS is optionally passed via -D flag. +# Default: inherit LCOV_OPTS. If HTML_OPTS is provided (even if empty), use it instead. +set(GENHTML_OPTS ${LCOV_OPTS}) +if(DEFINED HTML_OPTS) + separate_arguments(HTML_OPTS) + set(GENHTML_OPTS ${HTML_OPTS}) +endif() +set(GENHTML_COMMAND ${GENHTML_EXECUTABLE} --show-details ${GENHTML_OPTS}) find_program(GREP_EXECUTABLE grep REQUIRED) find_program(AWK_EXECUTABLE awk REQUIRED) diff --git a/doc/developer-notes.md b/doc/developer-notes.md index c8851a8dd0999..8c4d7b159b2c0 100644 --- a/doc/developer-notes.md +++ b/doc/developer-notes.md @@ -508,6 +508,17 @@ enabled by setting `LCOV_OPTS="--rc branch_coverage=1"`: cmake -DLCOV_OPTS="--rc branch_coverage=1" -P build/Coverage.cmake ``` +HTML_OPTS can override the genhtml options (which default to LCOV_OPTS). If HTML_OPTS is omitted, LCOV_OPTS are implicitly passed to genhtml. If HTML_OPTS is provided but empty (e.g. -DHTML_OPTS=""), no options are passed to genhtml and LCOV_OPTS are not inherited. + +Examples: +``` +# Override genhtml options explicitly +cmake -DHTML_OPTS="--title 'Knots Coverage'" -P build/Coverage.cmake + +# Provide an empty override: pass nothing to genhtml (do not inherit LCOV_OPTS) +cmake -DHTML_OPTS="" -P build/Coverage.cmake +``` + To enable test parallelism: ``` cmake -DJOBS=$(nproc) -P build/Coverage.cmake