The open source OpenXR runtime
at main 2.2 kB view raw
1# Copyright 2018-2022, Collabora, Ltd. 2# SPDX-License-Identifier: BSL-1.0 3 4# check if Doxygen is installed 5find_package(Doxygen) 6 7option_with_deps( 8 BUILD_DOC "Build documentation" 9 DEFAULT OFF 10 DEPENDS DOXYGEN_FOUND 11 ) 12option_with_deps( 13 BUILD_DOC_WARN_UNDOCUMENTED "Warn on undocumented entities when building documentation" 14 DEFAULT OFF 15 DEPENDS DOXYGEN_FOUND 16 ) 17option_with_deps( 18 BUILD_DOC_EXTRACT_ALL 19 "Extract all entities for documentation, not only documented ones (conflicts with BUILD_DOC_WARN_UNDOCUMENTED)" 20 DEFAULT OFF 21 DEPENDS DOXYGEN_FOUND "NOT BUILD_DOC_WARN_UNDOCUMENTED" 22 ) 23 24if(BUILD_DOC) 25 if(BUILD_DOC_WARN_UNDOCUMENTED) 26 set(DOXYGEN_WARN_UNDOCUMENTED YES) 27 else() 28 set(DOXYGEN_WARN_UNDOCUMENTED NO) 29 endif() 30 if(BUILD_DOC_EXTRACT_ALL) 31 set(DOXYGEN_EXTRACT_ALL YES) 32 else() 33 set(DOXYGEN_EXTRACT_ALL NO) 34 endif() 35 36 # set input and output files 37 set(DOXYGEN_IN ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in) 38 set(DOXYGEN_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) 39 40 set(CURBUILDDIR ${CMAKE_CURRENT_BINARY_DIR}) 41 set(SRCDIR ${PROJECT_SOURCE_DIR}) 42 set(BUILDDIR ${PROJECT_BINARY_DIR}) 43 # request to configure the file 44 configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT} @ONLY) 45 46 # copy the schemas 47 configure_file( 48 ${CMAKE_CURRENT_SOURCE_DIR}/example_configs/config_v0.schema.json 49 ${CMAKE_CURRENT_BINARY_DIR}/html/config_v0.schema.json @ONLY 50 ) 51 configure_file( 52 ${CMAKE_CURRENT_SOURCE_DIR}/example_configs/config_v0.schema.json.license 53 ${CMAKE_CURRENT_BINARY_DIR}/html/config_v0.schema.json.license @ONLY 54 ) 55 configure_file( 56 ${CMAKE_CURRENT_SOURCE_DIR}/example_configs/calibration_v2.schema.json 57 ${CMAKE_CURRENT_BINARY_DIR}/html/calibration_v2.schema.json @ONLY 58 ) 59 configure_file( 60 ${CMAKE_CURRENT_SOURCE_DIR}/example_configs/calibration_v2.schema.json.license 61 ${CMAKE_CURRENT_BINARY_DIR}/html/calibration_v2.schema.json.license @ONLY 62 ) 63 64 # note the option ALL which allows to build the docs together with the application 65 add_custom_target( 66 doc_doxygen ALL 67 COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT} 68 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} 69 COMMENT "Generating API documentation with Doxygen" 70 VERBATIM 71 ) 72endif()