CoverageInclude.cmake.in raw

   1  # Copyright (c) 2024-present The Bitcoin Core developers
   2  # Distributed under the MIT software license, see the accompanying
   3  # file COPYING or https://opensource.org/license/mit/.
   4  
   5  if("@CMAKE_CXX_COMPILER_ID@" STREQUAL "Clang")
   6    find_program(LLVM_COV_EXECUTABLE llvm-cov REQUIRED)
   7    set(COV_TOOL "${LLVM_COV_EXECUTABLE} gcov")
   8  else()
   9    find_program(GCOV_EXECUTABLE gcov REQUIRED)
  10    set(COV_TOOL "${GCOV_EXECUTABLE}")
  11  endif()
  12  
  13  # COV_TOOL is used to replace a placeholder.
  14  configure_file(
  15    ${CMAKE_CURRENT_LIST_DIR}/cov_tool_wrapper.sh.in ${CMAKE_CURRENT_LIST_DIR}/cov_tool_wrapper.sh
  16    FILE_PERMISSIONS OWNER_READ OWNER_EXECUTE
  17                     GROUP_READ GROUP_EXECUTE
  18                     WORLD_READ
  19    @ONLY
  20  )
  21  
  22  find_program(LCOV_EXECUTABLE lcov REQUIRED)
  23  separate_arguments(LCOV_OPTS)
  24  set(LCOV_COMMAND ${LCOV_EXECUTABLE} --gcov-tool ${CMAKE_CURRENT_LIST_DIR}/cov_tool_wrapper.sh ${LCOV_OPTS})
  25  
  26  find_program(GENHTML_EXECUTABLE genhtml REQUIRED)
  27  set(GENHTML_COMMAND ${GENHTML_EXECUTABLE} --show-details ${LCOV_OPTS})
  28  
  29  find_program(GREP_EXECUTABLE grep REQUIRED)
  30  find_program(AWK_EXECUTABLE awk REQUIRED)
  31  
  32  set(LCOV_FILTER_COMMAND ./filter-lcov.py)
  33  list(APPEND LCOV_FILTER_COMMAND -p "/usr/local/")
  34  list(APPEND LCOV_FILTER_COMMAND -p "/usr/include/")
  35  list(APPEND LCOV_FILTER_COMMAND -p "/usr/lib/")
  36  list(APPEND LCOV_FILTER_COMMAND -p "/usr/lib64/")
  37  list(APPEND LCOV_FILTER_COMMAND -p "src/leveldb/")
  38  list(APPEND LCOV_FILTER_COMMAND -p "src/crc32c/")
  39  list(APPEND LCOV_FILTER_COMMAND -p "src/bench/")
  40  list(APPEND LCOV_FILTER_COMMAND -p "src/crypto/ctaes")
  41  list(APPEND LCOV_FILTER_COMMAND -p "src/minisketch")
  42  list(APPEND LCOV_FILTER_COMMAND -p "src/secp256k1")
  43  list(APPEND LCOV_FILTER_COMMAND -p "depends")
  44  
  45  execute_process(
  46    COMMAND ${LCOV_COMMAND} --capture --initial --directory src --output-file baseline.info
  47    WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
  48    COMMAND_ERROR_IS_FATAL ANY
  49  )
  50  execute_process(
  51    COMMAND ${LCOV_FILTER_COMMAND} baseline.info baseline_filtered.info
  52    WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
  53    COMMAND_ERROR_IS_FATAL ANY
  54  )
  55  execute_process(
  56    COMMAND ${LCOV_COMMAND} --add-tracefile baseline_filtered.info --output-file baseline_filtered.info
  57    WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
  58    COMMAND_ERROR_IS_FATAL ANY
  59  )
  60