|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Find Lcov tools |
|
|
|
|
|
find_program(LCOV lcov DOC "LCov") |
|
|
|
|
|
find_program(LCOV_GENHTML genhtml DOC "LCov GenHtml" HINTS ${LCOV}/..) |
|
|
|
|
|
|
|
|
|
|
|
if( NOT LCOV OR NOT LCOV_GENHTML ) |
|
|
|
|
|
message(SEND_ERROR "LCov tools not found") |
|
|
|
|
|
endif() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Files and folders |
|
|
|
|
|
set(COV_DIR "${CMAKE_BINARY_DIR}/coverage") |
|
|
|
|
|
set(COV_FILE "${COV_DIR}/${PROJECT_NAME}.info") |
|
|
|
|
|
|
|
|
|
|
|
if( NOT EXISTS ${COV_DIR} ) |
|
|
|
|
|
file(MAKE_DIRECTORY ${COV_DIR}) |
|
|
|
|
|
endif() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Compiler flags |
|
|
|
|
|
set(flag --coverage) |
|
|
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${flag}") |
|
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
set(INPUT_DIR "${CMAKE_SOURCE_DIR}") |
|
|
|
|
|
|
|
|
|
|
|
# Make targets |
|
|
|
|
|
add_custom_target(coverage-clean ${CMAKE_COMMAND} -E make_directory ${COV_DIR} |
|
|
|
|
|
COMMAND ${LCOV} |
|
|
|
|
|
--directory ${INPUT_DIR} |
|
|
|
|
|
--zerocounters |
|
|
|
|
|
|
|
|
|
|
|
WORKING_DIRECTORY ${COV_DIR} |
|
|
|
|
|
COMMENT "Zerocounter coverage data" |
|
|
|
|
|
VERBATIM |
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
add_custom_target(coverage ${CMAKE_COMMAND} -E make_directory ${COV_DIR} |
|
|
|
|
|
COMMAND ${LCOV} |
|
|
|
|
|
--capture |
|
|
|
|
|
--directory ${INPUT_DIR} |
|
|
|
|
|
--output-file ${COV_FILE} |
|
|
|
|
|
--no-external |
|
|
|
|
|
|
|
|
|
|
|
COMMAND ${LCOV} |
|
|
|
|
|
--remove ${COV_FILE} "*/test/*" |
|
|
|
|
|
--remove ${COV_FILE} "*/generated/*" |
|
|
|
|
|
--output-file ${COV_FILE} |
|
|
|
|
|
|
|
|
|
|
|
COMMAND ${LCOV_GENHTML} --legend ${COV_FILE} |
|
|
|
|
|
|
|
|
|
|
|
WORKING_DIRECTORY ${COV_DIR} |
|
|
|
|
|
COMMENT "Generate coverage data" |
|
|
|
|
|
VERBATIM |
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|