efl/legacy/eobj/cmake/Modules/EFLlcov.cmake

32 lines
1.4 KiB
CMake

macro(ENABLE_COVERAGE)
if (CHECK_ENABLED)
find_program(LCOV_BINARY lcov HINTS ${EFL_LCOV_PATH})
find_program(GENHTML_BINARY genhtml HINTS ${EFL_LCOV_PATH})
set(EFL_COVERAGE_CFLAGS "-fprofile-arcs -ftest-coverage")
set(EFL_COVERAGE_LIBS "gcov")
endif (CHECK_ENABLED)
if (DEFINED LCOV_BINARY)
set(EFL_COVERAGE_ENABLED true)
add_custom_target(lcov-reset
COMMAND rm -rf ${CMAKE_BINARY_DIR}/coverage
COMMAND find ${CMAKE_BINARY_DIR} -name "*.gcda" -delete
COMMAND ${LCOV_BINARY} --zerocounters --directory ${CMAKE_BINARY_DIR}
)
add_custom_target(lcov-report
COMMAND mkdir ${CMAKE_BINARY_DIR}/coverage
COMMAND ${LCOV_BINARY} --capture --compat-libtool --output-file ${CMAKE_BINARY_DIR}/coverage/coverage.info --directory ${CMAKE_BINARY_DIR}
COMMAND ${LCOV_BINARY} --remove ${CMAKE_BINARY_DIR}/coverage/coverage.info '*.h' --output-file ${CMAKE_BINARY_DIR}/coverage/coverage.cleaned.info
COMMAND ${GENHTML_BINARY} -t "${PACKAGE}" -o "${CMAKE_BINARY_DIR}/coverage/html" "${CMAKE_BINARY_DIR}/coverage/coverage.cleaned.info"
COMMAND echo "Coverage Report at ${CMAKE_BINARY_DIR}/coverage/html"
)
add_custom_target(coverage
COMMAND ${CMAKE_MAKE_PROGRAM} lcov-reset
COMMAND ${CMAKE_MAKE_PROGRAM} check
COMMAND ${CMAKE_MAKE_PROGRAM} lcov-report
)
endif (DEFINED LCOV_BINARY)
endmacro(ENABLE_COVERAGE)