Files
hdk/cmake/HDKDocumentationPolicy.cmake
2026-05-17 11:26:14 +00:00

71 lines
2.4 KiB
CMake

# HDK Documentation Policy
include(GNUInstallDirs)
option(HDK_DOCS "Build documentation for ${PROJECT_NAME}" OFF)
if(HDK_DOCS)
find_package(Doxygen)
if(DOXYGEN_FOUND)
set(DOXYGEN_GENERATE_HTML YES)
set(DOXYGEN_GENERATE_MAN YES)
set(DOXYGEN_GENERATE_LATEX YES)
set(DOXYGEN_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/docs)
set(DOXYGEN_STRIP_FROM_PATH ${CMAKE_CURRENT_SOURCE_DIR})
set(DOXYGEN_EXTRACT_ALL YES)
set(DOXYGEN_DIRECTORY_GRAPH YES)
set(DOXYGEN_JAVADOC_BANNER YES)
set(DOXYGEN_JAVADOC_AUTOBRIEF YES)
set(DOXYGEN_DOT_IMAGE_FORMAT svg)
set(DOXYGEN_INTERACTIVE_SVG YES)
set(DOXYGEN_INTERNAL_DOCS YES)
set(DOXYGEN_TIMESTAMP YES)
set(DOXYGEN_RECURSIVE YES)
set(DOXYGEN_TAB_SIZE 2)
set(DOXYGEN_BUILTIN_STL_SUPPORT YES)
set(DOXYGEN_HTML_DYNAMIC_SECTIONS YES)
set(DOXYGEN_GENERATE_TREEVIEW YES)
set(DOXYGEN_FULL_SIDEBAR YES)
set(DOXYGEN_QUIET YES)
set(DOXYGEN_SOURCE_BROWSER YES)
set(DOXYGEN_VERBATIM_HEADERS YES)
set(DOXYGEN_REFERENCED_BY_RELATION YES)
set(DOXYGEN_REFERENCES_RELATION YES)
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/INDEX.md")
set(DOXYGEN_USE_MDFILE_AS_MAINPAGE INDEX.md)
set(_hdk_doc_mainpage "${CMAKE_CURRENT_SOURCE_DIR}/INDEX.md")
elseif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
set(DOXYGEN_USE_MDFILE_AS_MAINPAGE README.md)
set(_hdk_doc_mainpage "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
endif()
doxygen_add_docs(${PROJECT_NAME}-docs
${_hdk_doc_mainpage}
${CMAKE_CURRENT_SOURCE_DIR}/include/
${CMAKE_CURRENT_SOURCE_DIR}/src/
${CMAKE_CURRENT_SOURCE_DIR}/*.md
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generate ${PROJECT_NAME} API Documentation"
)
# Automatically install documentation
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/docs/html/
DESTINATION ${CMAKE_INSTALL_DOCDIR}
COMPONENT ${PROJECT_NAME}_doc
OPTIONAL)
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/docs/man/man3/
DESTINATION ${CMAKE_INSTALL_MANDIR}/man3
COMPONENT ${PROJECT_NAME}_doc
OPTIONAL)
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/docs/latex/
DESTINATION ${CMAKE_INSTALL_DOCDIR}/latex
COMPONENT ${PROJECT_NAME}_doc
OPTIONAL)
else()
message(WARNING "Doxygen not found, API documentation will not be generated for ${PROJECT_NAME}.")
endif()
endif()