cmake_minimum_required(VERSION 3.25)
OPTION(BUILD_DOCUMENTATION "Use Doxygen to create the HTML based API documentation" ON)
OPTION(BUILD_PDF "Use Doxygen to create the PDF API documentation" OFF)
OPTION(SILENCE_DOXYGEN_WARNINGS "Silence Doxygen warnings" ON)
IF(BUILD_DOCUMENTATION)
FIND_PACKAGE(Doxygen)
IF(NOT DOXYGEN_FOUND)
MESSAGE(FATAL_ERROR "Doxygen is required to build the documentation.")
ENDIF()
SET(DOXYGEN_HTML ${CMAKE_DOCUMENT_OUTPUT_DIRECTORY}/HTML/index.html)
# control whether doxygen prints warnings; mapped into Doxyfile at configure time
IF(SILENCE_DOXYGEN_WARNINGS)
SET(DOXY_WARNINGS "NO")
ELSE()
SET(DOXY_WARNINGS "YES")
ENDIF()
SET(AllStr "")
FOREACH(s ${All})
IF(NOT ${s} MATCHES "(^Source/External)|(^Source/Gorgon/External)")
SET(AllStr "${AllStr} \"${CMAKE_CURRENT_SOURCE_DIR}/${s}\"")
ENDIF()
ENDFOREACH()
SET(DOCS_PATH ${CMAKE_SOURCE_DIR}/Docs)
# Ensure path values in the configured Doxyfile are quoted so Doxygen does
# not split paths containing spaces into multiple sources (which causes
# warnings like "source '.../Additional' is not a readable file...").
CONFIGURE_FILE(Scripts/Doxyfile.in ${PROJECT_BINARY_DIR}/Doxyfile @ONLY IMMEDIATE)
ADD_CUSTOM_COMMAND(OUTPUT ${DOXYGEN_HTML}
COMMAND ${DOXYGEN_EXECUTABLE} ${PROJECT_BINARY_DIR}/Doxyfile
SOURCES ${PROJECT_BINARY_DIR}/Doxyfile
MAIN_DEPENDENCY Scripts/Doxyfile.in ${PROJECT_BINARY_DIR}/Doxyfile
DEPENDS ${DOCS_PATH}/Design.html ${All}
)
ADD_CUSTOM_TARGET(docs ALL DEPENDS ${DOXYGEN_HTML})
IF(BUILD_PDF)
ADD_CUSTOM_TARGET(pdf ALL
COMMAND make -C "${CMAKE_DOCUMENT_OUTPUT_DIRECTORY}/Latex" >pdflog
DEPENDS Scripts/Doxyfile.in ${PROJECT_BINARY_DIR}/Doxyfile ${CMAKE_DOCUMENT_OUTPUT_DIRECTORY}/Latex
)
CONFIGURE_FILE(${CMAKE_DOCUMENT_OUTPUT_DIRECTORY}/Latex/refman.pdf ${CMAKE_DOCUMENT_OUTPUT_DIRECTORY}/Gorgon.pdf COPYONLY)
ENDIF()
INSTALL(DIRECTORY ${CMAKE_DOCUMENT_OUTPUT_DIRECTORY}/HTML DESTINATION share/doc/Gorgon)
ENDIF()