|
|
|
# Copyright (c) 2024-present The Bitcoin Core developers
|
|
|
|
# Distributed under the MIT software license, see the accompanying
|
|
|
|
# file COPYING or https://opensource.org/license/mit/.
|
|
|
|
|
|
|
|
if("@CMAKE_CXX_COMPILER_ID@" STREQUAL "Clang")
|
|
|
|
find_program(LLVM_COV_EXECUTABLE llvm-cov REQUIRED)
|
|
|
|
set(COV_TOOL "${LLVM_COV_EXECUTABLE} gcov")
|
|
|
|
else()
|
|
|
|
find_program(GCOV_EXECUTABLE gcov REQUIRED)
|
|
|
|
set(COV_TOOL "${GCOV_EXECUTABLE}")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
# COV_TOOL is used to replace a placeholder.
|
|
|
|
configure_file(
|
|
|
|
cmake/cov_tool_wrapper.sh.in ${CMAKE_CURRENT_LIST_DIR}/cov_tool_wrapper.sh
|
|
|
|
FILE_PERMISSIONS OWNER_READ OWNER_EXECUTE
|
|
|
|
GROUP_READ GROUP_EXECUTE
|
|
|
|
WORLD_READ
|
|
|
|
@ONLY
|
|
|
|
)
|
|
|
|
|
|
|
|
find_program(LCOV_EXECUTABLE lcov REQUIRED)
|
|
|
|
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})
|
|
|
|
|
|
|
|
find_program(GREP_EXECUTABLE grep REQUIRED)
|
|
|
|
find_program(AWK_EXECUTABLE awk REQUIRED)
|
|
|
|
|
|
|
|
set(LCOV_FILTER_COMMAND ./filter-lcov.py)
|
|
|
|
list(APPEND LCOV_FILTER_COMMAND -p "/usr/local/")
|
|
|
|
list(APPEND LCOV_FILTER_COMMAND -p "/usr/include/")
|
|
|
|
list(APPEND LCOV_FILTER_COMMAND -p "/usr/lib/")
|
|
|
|
list(APPEND LCOV_FILTER_COMMAND -p "/usr/lib64/")
|
|
|
|
list(APPEND LCOV_FILTER_COMMAND -p "src/leveldb/")
|
|
|
|
list(APPEND LCOV_FILTER_COMMAND -p "src/crc32c/")
|
|
|
|
list(APPEND LCOV_FILTER_COMMAND -p "src/bench/")
|
|
|
|
list(APPEND LCOV_FILTER_COMMAND -p "src/crypto/ctaes")
|
|
|
|
list(APPEND LCOV_FILTER_COMMAND -p "src/minisketch")
|
|
|
|
list(APPEND LCOV_FILTER_COMMAND -p "src/secp256k1")
|
|
|
|
list(APPEND LCOV_FILTER_COMMAND -p "depends")
|
|
|
|
|
|
|
|
execute_process(
|
|
|
|
COMMAND ${LCOV_COMMAND} --capture --initial --directory src --output-file baseline.info
|
|
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
|
|
|
|
COMMAND_ERROR_IS_FATAL ANY
|
|
|
|
)
|
|
|
|
execute_process(
|
|
|
|
COMMAND ${LCOV_FILTER_COMMAND} baseline.info baseline_filtered.info
|
|
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
|
|
|
|
COMMAND_ERROR_IS_FATAL ANY
|
|
|
|
)
|
|
|
|
execute_process(
|
|
|
|
COMMAND ${LCOV_COMMAND} --add-tracefile baseline_filtered.info --output-file baseline_filtered.info
|
|
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
|
|
|
|
COMMAND_ERROR_IS_FATAL ANY
|
|
|
|
)
|