The open source OpenXR runtime
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()