SFML/doc/CMakeLists.txt
Chris Thrasher bc5ddb3495 Don't automatically build docs
This means you can leave the docs enabled in the build without being
constantly spammed by all the console output that entails.

https://salsa.debian.org/games-team/libsfml/-/blob/master/debian/patches/02_build-doc-once.patch
2023-03-23 09:57:16 -06:00

66 lines
2.5 KiB
CMake

# find doxygen
if(SFML_OS_MACOSX)
# Add some path to search doxygen in more directories.
set(ADDITIONAL_PATHS
/Developer/Applications/Doxygen.app/Contents/Resources
/Developer/Applications/Doxygen.app/Contents/MacOS
$ENV{HOME}/Applications/Doxygen.app/Contents/Resources
$ENV{HOME}/Applications/Doxygen.app/Contents/MacOS
$ENV{HOME}/Applications/Developer/Doxygen.app/Contents/Resources
$ENV{HOME}/Applications/Developer/Doxygen.app/Contents/MacOS)
list(APPEND CMAKE_PROGRAM_PATH ${ADDITIONAL_PATHS})
endif()
find_package(Doxygen REQUIRED)
# set the input and output documentation paths
set(DOXYGEN_INPUT_DIR ${PROJECT_SOURCE_DIR})
set(DOXYGEN_OUTPUT_DIR ${PROJECT_BINARY_DIR}/doc)
# see if we can generate the CHM documentation
if(SFML_OS_WINDOWS)
# if HHC is found, we can generate the CHM (compressed HTML) output
find_program(DOXYGEN_HHC_PROGRAM
NAMES hhc.exe
PATHS "C:/Program Files/HTML Help Workshop" "C:/Program Files (x86)/HTML Help Workshop"
DOC "HTML Help Compiler program")
if(DOXYGEN_HHC_PROGRAM)
set(DOXYGEN_GENERATE_HTMLHELP YES)
else()
set(DOXYGEN_GENERATE_HTMLHELP NO)
endif()
else()
set(DOXYGEN_HHC_PROGRAM)
set(DOXYGEN_GENERATE_HTMLHELP NO)
endif()
# configure the source Doxyfile by copying it and replacing all @variables@
set(DOXYGEN_CONFIGURED_INPUT ${DOXYGEN_OUTPUT_DIR}/doxyfile)
configure_file(${DOXYGEN_INPUT_DIR}/doc/doxyfile.in ${DOXYGEN_CONFIGURED_INPUT} @ONLY)
configure_file(${DOXYGEN_INPUT_DIR}/doc/header.html.in ${DOXYGEN_OUTPUT_DIR}/header.html @ONLY)
# copy the files needed by the documentation
configure_file(${DOXYGEN_INPUT_DIR}/doc/doxygen.css ${DOXYGEN_OUTPUT_DIR}/html/doxygen.css COPYONLY)
# target setup
add_custom_target(doc
COMMAND ${CMAKE_COMMAND} -E echo_append "Building API Documentation..."
COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_CONFIGURED_INPUT}
COMMAND ${CMAKE_COMMAND} -E echo "Done."
WORKING_DIRECTORY ${DOXYGEN_INPUT_DIR})
# setup install rules
install(FILES ${DOXYGEN_OUTPUT_DIR}/SFML.tag
DESTINATION ${CMAKE_INSTALL_DOCDIR}
COMPONENT doc)
install(DIRECTORY ${DOXYGEN_OUTPUT_DIR}/html
DESTINATION ${CMAKE_INSTALL_DOCDIR}
COMPONENT doc)
if(DOXYGEN_HHC_PROGRAM)
install(FILES ${DOXYGEN_OUTPUT_DIR}/sfml.chm
DESTINATION ${CMAKE_INSTALL_DOCDIR}
COMPONENT doc)
endif()