kopia lustrzana https://github.com/RobertGawron/IonizationChamber
64 wiersze
2.6 KiB
CMake
Executable File
64 wiersze
2.6 KiB
CMake
Executable File
cmake_minimum_required(VERSION 3.31)
|
|
|
|
# Find the required executables
|
|
find_program(DOXYGEN_EXECUTABLE doxygen)
|
|
find_program(PYTHON_EXECUTABLE python3)
|
|
# Python3 for invoking Coverxygen,
|
|
# use handmade venv to not polute docker with python packages
|
|
set(PYTHON_EXECUTABLE "/workspace/venv/bin/python3")
|
|
find_program(GENHTML_EXECUTABLE genhtml)
|
|
|
|
if(DOXYGEN_EXECUTABLE)
|
|
set(DOXYGEN_DIRS
|
|
"${CMAKE_SOURCE_DIR}/Software/Firmware/Application/"
|
|
"${CMAKE_SOURCE_DIR}/Software/Firmware/Device/"
|
|
"${CMAKE_SOURCE_DIR}/Software/Firmware/Driver/"
|
|
"${CMAKE_SOURCE_DIR}/Software/Firmware/UnitTest/"
|
|
)
|
|
string(REPLACE ";" " " DOXYGEN_DIRS_STR "${DOXYGEN_DIRS}")
|
|
set(DOXYGEN_INPUT_DIR ${DOXYGEN_DIRS_STR})
|
|
|
|
set(DOXYGEN_OUTPUT_DIR "${CMAKE_SOURCE_DIR}/DevOps/BuildArtifacts/DocsCoverage/")
|
|
|
|
# Ensure the output directory exists
|
|
file(MAKE_DIRECTORY "${DOXYGEN_OUTPUT_DIR}")
|
|
|
|
# Set the paths for the Doxyfile template and the final generated Doxyfile
|
|
set(DOXYFILE_IN "${CMAKE_SOURCE_DIR}/DevOps/Scripts/Doxyfile.in")
|
|
set(DOXYFILE_OUT "${CMAKE_SOURCE_DIR}/DevOps/Scripts/Doxyfile")
|
|
|
|
# Create a template Doxyfile with CMake variables
|
|
configure_file(${DOXYFILE_IN} ${DOXYFILE_OUT} @ONLY)
|
|
|
|
# Create a custom target to run Doxygen for generating XML output (needed for Coverxygen)
|
|
add_custom_target(docs
|
|
COMMAND ${DOXYGEN_EXECUTABLE} "${DOXYFILE_OUT}"
|
|
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
|
|
COMMENT "Running Doxygen to detect missing comments and generate XML..."
|
|
VERBATIM
|
|
)
|
|
|
|
# Run Coverxygen via Python3 (if Python is available)
|
|
if(PYTHON_EXECUTABLE)
|
|
add_custom_command(TARGET docs
|
|
POST_BUILD
|
|
COMMAND ${PYTHON_EXECUTABLE} -m coverxygen --format lcov
|
|
--kind enum,enumvalue,friend,typedef,variable,function,class,struct,union,define
|
|
--xml-dir "${DOXYGEN_OUTPUT_DIR}/xml"
|
|
--src-dir "${DOXYGEN_INPUT_DIR}"
|
|
--output "${DOXYGEN_OUTPUT_DIR}/doc-coverage.info"
|
|
COMMAND ${GENHTML_EXECUTABLE} --no-function-coverage
|
|
--no-branch-coverage "${DOXYGEN_OUTPUT_DIR}/doc-coverage.info"
|
|
-o "${DOXYGEN_OUTPUT_DIR}"
|
|
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
|
|
COMMENT "Generating Coverxygen documentation coverage report..."
|
|
VERBATIM
|
|
)
|
|
else()
|
|
message(WARNING "Python3 not found. Skipping Coverxygen coverage report generation.")
|
|
endif()
|
|
|
|
else()
|
|
message(WARNING "Doxygen not found. Skipping missing documentation check.")
|
|
endif()
|