libaac-next/cmake/Coverage.cmake
2025-08-04 21:18:27 +07:00

51 lines
1.3 KiB
CMake

include(${CMAKE_CURRENT_LIST_DIR}/Gcov.cmake)
set(OPTION_COVERAGE_ENABLED OFF)
set(LCOV_EXCLUDE_COVERAGE
${LCOV_EXCLUDE_COVERAGE}
"\"*/googletest/*\""
"\"*v1*\""
"\"/usr/*\""
)
# Function to register a target for enabled coverage report
function(generate_coverage_report target)
if(NOT TARGET coverage)
add_custom_target(coverage)
set_target_properties(coverage
PROPERTIES
FOLDER "Maintenance"
EXCLUDE_FROM_DEFAULT_BUILD 1
)
endif()
if (${OPTION_COVERAGE_ENABLED})
generate_lcov_report(coverage-${target} ${target} ${ARGN})
add_dependencies(coverage coverage-${target})
endif()
endfunction()
# Enable or disable coverage
function(enable_coverage status)
if(NOT ${status})
set(OPTION_COVERAGE_ENABLED ${status} PARENT_SCOPE)
message(STATUS "Coverage lcov skipped: Manually disabled")
return()
endif()
find_package(lcov)
if(NOT lcov_FOUND)
set(OPTION_COVERAGE_ENABLED OFF PARENT_SCOPE)
message(STATUS "Coverage lcov skipped: lcov not found")
return()
endif()
set(OPTION_COVERAGE_ENABLED ${status} PARENT_SCOPE)
message(STATUS "Coverage report enabled")
endfunction()