Mercurial > molko
comparison doc/CMakeLists.txt @ 253:c4da052c0def
core: goodbye doxygen
author | David Demelier <markand@malikania.fr> |
---|---|
date | Thu, 03 Dec 2020 09:06:52 +0100 |
parents | f4dc208aa1e3 |
children | cd5bdb995052 |
comparison
equal
deleted
inserted
replaced
252:95c2c4a72410 | 253:c4da052c0def |
---|---|
16 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | 16 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
17 # | 17 # |
18 | 18 |
19 project(doc) | 19 project(doc) |
20 | 20 |
21 find_package(Doxygen QUIET) | |
22 find_program(MKDOCS_EXE mkdocs DOC "Path to mkdocs") | 21 find_program(MKDOCS_EXE mkdocs DOC "Path to mkdocs") |
23 find_program(DOXYBOOK2_EXE doxybook2 DOC "Path to doxybook2") | |
24 find_program(SH_EXE sh DOC "Path to a POSIX shell") | 22 find_program(SH_EXE sh DOC "Path to a POSIX shell") |
25 | 23 |
26 if (DOXYGEN_FOUND AND MKDOCS_EXE AND DOXYBOOK2_EXE AND SH_EXE) | 24 if (MKDOCS_EXE) |
27 set( | |
28 DOXYGEN_SOURCES | |
29 libmlk-core | |
30 libmlk-ui | |
31 libmlk-rpg | |
32 ${doc_SOURCE_DIR}/doxygen/groups.c | |
33 ) | |
34 | |
35 set( | |
36 DOXYGEN_STRIP_FROM_PATH | |
37 ${CMAKE_SOURCE_DIR}/libmlk-core | |
38 ${CMAKE_SOURCE_DIR}/libmlk-ui | |
39 ${CMAKE_SOURCE_DIR}/libmlk-rpg | |
40 ) | |
41 set( | 25 set( |
42 DOC_SOURCES | 26 DOC_SOURCES |
27 ${doc_SOURCE_DIR}/docs/about.md | |
28 ${doc_SOURCE_DIR}/docs/cmake/MolkoBuildAssets.md | |
29 ${doc_SOURCE_DIR}/docs/cmake/MolkoBuildMaps.md | |
30 ${doc_SOURCE_DIR}/docs/cmake/MolkoBuildTilesets.md | |
31 ${doc_SOURCE_DIR}/docs/cmake/MolkoBuildTranslations.md | |
32 ${doc_SOURCE_DIR}/docs/cmake/MolkoDefineExecutable.md | |
33 ${doc_SOURCE_DIR}/docs/cmake/MolkoDefineLibrary.md | |
34 ${doc_SOURCE_DIR}/docs/cmake/MolkoDefineTest.md | |
35 ${doc_SOURCE_DIR}/docs/cmake/MolkoSetBuildDirectories.md | |
36 ${doc_SOURCE_DIR}/docs/cmake/MolkoSetCompilerFlags.md | |
37 ${doc_SOURCE_DIR}/docs/dev/api/core/action.md | |
38 ${doc_SOURCE_DIR}/docs/dev/api/core/alloc.md | |
39 ${doc_SOURCE_DIR}/docs/dev/api/core/animation.md | |
40 ${doc_SOURCE_DIR}/docs/dev/api/core/clock.md | |
41 ${doc_SOURCE_DIR}/docs/dev/api/core/color.md | |
42 ${doc_SOURCE_DIR}/docs/dev/api/core/core.md | |
43 ${doc_SOURCE_DIR}/docs/dev/api/core/drawable.md | |
44 ${doc_SOURCE_DIR}/docs/dev/api/core/event.md | |
45 ${doc_SOURCE_DIR}/docs/dev/api/core/error.md | |
46 ${doc_SOURCE_DIR}/docs/dev/api/core/font.md | |
47 ${doc_SOURCE_DIR}/docs/dev/api/core/game.md | |
48 ${doc_SOURCE_DIR}/docs/dev/api/core/image.md | |
49 ${doc_SOURCE_DIR}/docs/dev/api/core/inhibit.md | |
50 ${doc_SOURCE_DIR}/docs/dev/api/core/key.md | |
51 ${doc_SOURCE_DIR}/docs/dev/api/core/maths.md | |
52 ${doc_SOURCE_DIR}/docs/dev/api/core/mouse.md | |
53 ${doc_SOURCE_DIR}/docs/dev/api/core/music.md | |
54 ${doc_SOURCE_DIR}/docs/dev/api/core/painter.md | |
55 ${doc_SOURCE_DIR}/docs/dev/api/core/panic.md | |
56 ${doc_SOURCE_DIR}/docs/dev/api/core/save.md | |
57 ${doc_SOURCE_DIR}/docs/dev/api/core/script.md | |
58 ${doc_SOURCE_DIR}/docs/dev/api/core/sound.md | |
59 ${doc_SOURCE_DIR}/docs/dev/api/core/sprite.md | |
60 ${doc_SOURCE_DIR}/docs/dev/api/core/state.md | |
61 ${doc_SOURCE_DIR}/docs/dev/api/core/sys.md | |
62 ${doc_SOURCE_DIR}/docs/dev/api/core/texture.md | |
63 ${doc_SOURCE_DIR}/docs/dev/api/core/trace.md | |
64 ${doc_SOURCE_DIR}/docs/dev/api/core/translate.md | |
65 ${doc_SOURCE_DIR}/docs/dev/api/core/util.md | |
66 ${doc_SOURCE_DIR}/docs/dev/api/core/window.md | |
67 ${doc_SOURCE_DIR}/docs/dev/error.md | |
68 ${doc_SOURCE_DIR}/docs/dev/faq.md | |
69 ${doc_SOURCE_DIR}/docs/dev/howto/01-init.md | |
70 ${doc_SOURCE_DIR}/docs/dev/ownership.md | |
71 ${doc_SOURCE_DIR}/docs/index.md | |
72 ${doc_SOURCE_DIR}/docs/install.md | |
43 ${doc_SOURCE_DIR}/docs/specs/map.md | 73 ${doc_SOURCE_DIR}/docs/specs/map.md |
44 ${doc_SOURCE_DIR}/docs/specs/tileset.md | 74 ${doc_SOURCE_DIR}/docs/specs/tileset.md |
45 ${doc_SOURCE_DIR}/docs/tools/bcc.md | 75 ${doc_SOURCE_DIR}/docs/tools/bcc.md |
46 ${doc_SOURCE_DIR}/docs/tools/map.md | 76 ${doc_SOURCE_DIR}/docs/tools/map.md |
47 ${doc_SOURCE_DIR}/docs/tools/tileset.md | 77 ${doc_SOURCE_DIR}/docs/tools/tileset.md |
48 ${doc_SOURCE_DIR}/docs/about.md | |
49 ${doc_SOURCE_DIR}/docs/index.md | |
50 ${doc_SOURCE_DIR}/docs/install.md | |
51 ${doc_SOURCE_DIR}/mkdocs.yml | 78 ${doc_SOURCE_DIR}/mkdocs.yml |
52 ) | 79 ) |
53 | 80 |
54 # 1. Generate XML structure with Doxygen. | 81 add_custom_target( |
55 set(DOXYGEN_ALLOW_UNICODE_NAMES YES) | 82 doc |
56 set(DOXYGEN_AUTOLINK_SUPPORT NO) | 83 VERBATIM |
57 set(DOXYGEN_ENABLE_PREPROCESSING YES) | 84 SOURCES ${DOC_SOURCES} |
58 set(DOXYGEN_EXAMPLE_PATH examples) | 85 WORKING_DIRECTORY ${doc_SOURCE_DIR} |
59 set(DOXYGEN_EXCLUDE_PATTERNS *_p.h) | |
60 set(DOXYGEN_FILE_PATTERNS *.h) | |
61 set(DOXYGEN_GENERATE_HTML YES) | |
62 set(DOXYGEN_GENERATE_LATEX NO) | |
63 set(DOXYGEN_GENERATE_MAN NO) | |
64 set(DOXYGEN_GENERATE_XML YES) | |
65 set(DOXYGEN_HIDE_SCOPE_NAMES YES) | |
66 set(DOXYGEN_INPUT_ENCODING UTF-8) | |
67 set(DOXYGEN_MAX_INITIALIZER_LINES 0) | |
68 set(DOXYGEN_OPTIMIZE_OUTPUT_FOR_C YES) | |
69 set(DOXYGEN_OUTPUT_DIRECTORY doxygen) | |
70 set(DOXYGEN_PREDEFINED DOXYGEN) | |
71 set(DOXYGEN_QUIET YES) | |
72 set(DOXYGEN_RECURSIVE YES) | |
73 set(DOXYGEN_SHOW_GROUPED_MEMB_INC NO) | |
74 set(DOXYGEN_SHOW_INCLUDE_FILES NO) | |
75 set(DOXYGEN_SHOW_USED_FILES NO) | |
76 set(DOXYGEN_TAB_SIZE 8) | |
77 set(DOXYGEN_WARNINGS YES) | |
78 | |
79 set(DOXYGEN_HTML_OUTPUT ${doc_BINARY_DIR}/doxygen/html) | |
80 set(DOXYGEN_XML_OUTPUT ${doc_BINARY_DIR}/doxygen/xml) | |
81 | |
82 # 0. Create commands to prepare the output build directory. | |
83 list( | |
84 APPEND commands | |
85 COMMAND | 86 COMMAND |
86 ${CMAKE_COMMAND} -E make_directory ${doc_BINARY_DIR}/docs/cmake | 87 ${MKDOCS_EXE} build -d ${doc_BINARY_DIR}/html |
87 COMMAND | |
88 ${CMAKE_COMMAND} -E copy_directory | |
89 ${doc_SOURCE_DIR}/docs | |
90 ${doc_BINARY_DIR}/docs | |
91 COMMAND | |
92 ${CMAKE_COMMAND} -E copy | |
93 ${doc_SOURCE_DIR}/mkdocs.yml | |
94 ${doc_BINARY_DIR} | |
95 ) | 88 ) |
96 | 89 |
97 # 1. Generate HTML/XML from doxygen. | 90 add_custom_target( |
98 doxygen_add_docs( | 91 doc-serve |
99 doc-doxygen | 92 VERBATIM |
100 ${DOXYGEN_SOURCES} | 93 SOURCES ${DOC_SOURCES} |
101 WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" | 94 WORKING_DIRECTORY ${doc_SOURCE_DIR} |
95 COMMAND | |
96 ${MKDOCS_EXE} serve | |
102 ) | 97 ) |
103 | 98 |
104 # 2. Use doxybook2 to convert doxygen XML to markdown files. | 99 set_target_properties(doc doc-serve PROPERTIES FOLDER doc) |
105 list( | 100 source_group(TREE ${doc_SOURCE_DIR} FILES ${DOC_SOURCES}) |
106 APPEND commands | 101 endif () |
107 COMMAND ${DOXYBOOK2_EXE} -q | |
108 -t ${doc_SOURCE_DIR}/templates | |
109 -i ${doc_BINARY_DIR}/doxygen/xml | |
110 -o ${doc_BINARY_DIR}/docs | |
111 -c ${doc_SOURCE_DIR}/doxybook.json | |
112 ) | |
113 | 102 |
114 # 3. Convert our CMake macros into documentation. | 103 if (SH_EXE) |
104 # Our CMake macros are extracted from the source code itself. | |
115 set( | 105 set( |
116 MACROS | 106 DOC_MACROS |
117 ${cmake_SOURCE_DIR}/MolkoBuildAssets.cmake | 107 ${cmake_SOURCE_DIR}/MolkoBuildAssets.cmake |
118 ${cmake_SOURCE_DIR}/MolkoBuildMaps.cmake | 108 ${cmake_SOURCE_DIR}/MolkoBuildMaps.cmake |
119 ${cmake_SOURCE_DIR}/MolkoBuildTilesets.cmake | 109 ${cmake_SOURCE_DIR}/MolkoBuildTilesets.cmake |
120 ${cmake_SOURCE_DIR}/MolkoBuildTranslations.cmake | 110 ${cmake_SOURCE_DIR}/MolkoBuildTranslations.cmake |
121 ${cmake_SOURCE_DIR}/MolkoDefineExecutable.cmake | 111 ${cmake_SOURCE_DIR}/MolkoDefineExecutable.cmake |
123 ${cmake_SOURCE_DIR}/MolkoDefineTest.cmake | 113 ${cmake_SOURCE_DIR}/MolkoDefineTest.cmake |
124 ${cmake_SOURCE_DIR}/MolkoSetBuildDirectories.cmake | 114 ${cmake_SOURCE_DIR}/MolkoSetBuildDirectories.cmake |
125 ${cmake_SOURCE_DIR}/MolkoSetCompilerFlags.cmake | 115 ${cmake_SOURCE_DIR}/MolkoSetCompilerFlags.cmake |
126 ) | 116 ) |
127 | 117 |
128 foreach (m ${MACROS}) | 118 foreach (m ${DOC_MACROS}) |
129 get_filename_component(file ${m} NAME_WE) | 119 get_filename_component(file ${m} NAME_WE) |
130 set(output ${doc_BINARY_DIR}/docs/cmake/${file}.md) | 120 set(output ${doc_SOURCE_DIR}/docs/cmake/${file}.md) |
121 | |
131 list( | 122 list( |
132 APPEND commands | 123 APPEND commands |
133 COMMAND ${SH_EXE} ${doc_SOURCE_DIR}/cmake-extract.sh ${m} > ${output} | 124 COMMAND |
125 ${SH_EXE} ${doc_SOURCE_DIR}/scripts/cmake-extract.sh ${m} > ${output} | |
134 ) | 126 ) |
135 endforeach () | 127 endforeach () |
136 | 128 |
137 # Create our final targets. | 129 # Create a non-ALL target to update CMake documentation in the source |
130 # tree. | |
138 add_custom_target( | 131 add_custom_target( |
139 doc | 132 doc-cmake |
140 VERBATIM | 133 VERBATIM |
141 DEPENDS doc-doxygen | 134 DEPENDS ${doc_SOURCE_DIR}/scripts/cmake-extract.sh |
142 SOURCES ${DOC_SOURCES} ${cmake_outputs} | 135 COMMENT "Updating in-source ${doc_SOURCE_DIR}/docs/cmake" |
143 WORKING_DIRECTORY ${doc_BINARY_DIR} | 136 COMMAND ${commands} |
144 ${commands} | |
145 COMMAND | |
146 ${MKDOCS_EXE} build -d ${doc_BINARY_DIR}/html | |
147 ) | 137 ) |
148 | 138 |
149 add_custom_target( | 139 set_target_properties(doc-cmake PROPERTIES FOLDER doc) |
150 doc-serve | |
151 VERBATIM | |
152 DEPENDS doc-doxygen | |
153 SOURCES ${DOC_SOURCES} | |
154 WORKING_DIRECTORY ${doc_BINARY_DIR} | |
155 ${commands} | |
156 COMMAND | |
157 ${MKDOCS_EXE} serve | |
158 ) | |
159 | |
160 set_target_properties(doc doc-doxygen doc-serve PROPERTIES FOLDER doc) | |
161 source_group(TREE ${doc_SOURCE_DIR} FILES ${DOC_SOURCES}) | |
162 endif () | 140 endif () |