|
1 | | -# Copyright (c) Glyn Matthews 2018. |
| 1 | +# Copyright (c) Glyn Matthews 2018-19. |
2 | 2 | # Distributed under the Boost Software License, Version 1.0. |
3 | 3 | # (See accompanying file LICENSE_1_0.txt or copy at |
4 | 4 | # http://www.boost.org/LICENSE_1_0.txt) |
5 | 5 |
|
6 | | -LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/Modules") |
7 | | - |
8 | | -find_package(Doxygen) |
9 | | - |
10 | | -if (DOXYGEN_FOUND) |
11 | | - # API documentation |
12 | | - configure_file( |
13 | | - ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in |
14 | | - ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY) |
15 | | - |
16 | | - file(COPY _build DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) |
17 | | - file(COPY _static DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) |
18 | | - file(COPY _templates DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) |
19 | | - file(COPY index.rst DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) |
20 | | - file(COPY url.rst DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) |
21 | | - file(COPY url_search_parameters.rst DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) |
22 | | - file(COPY optional.rst DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) |
23 | | - file(COPY expected.rst DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) |
24 | | - file(COPY percent_encode.rst DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) |
25 | | - file(COPY domain.rst DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) |
26 | | - file(COPY filesystem.rst DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) |
27 | | - file(COPY unicode.rst DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) |
28 | | - configure_file( |
29 | | - ${CMAKE_CURRENT_SOURCE_DIR}/conf.py.in |
30 | | - ${CMAKE_CURRENT_BINARY_DIR}/conf.py @ONLY) |
31 | | - |
32 | | - configure_file( |
33 | | - ${CMAKE_CURRENT_SOURCE_DIR}/generate_docs.sh.in |
34 | | - ${CMAKE_CURRENT_BINARY_DIR}/generate_docs.sh @ONLY) |
35 | | - |
36 | | - add_custom_target(doc |
37 | | - ${CMAKE_CURRENT_BINARY_DIR}/generate_docs.sh |
38 | | - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} |
39 | | - COMMENT "Generating API documentation with Doxygen + Sphinx" VERBATIM) |
40 | | -endif() |
| 6 | +LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") |
| 7 | + |
| 8 | +find_package(Doxygen REQUIRED) |
| 9 | +find_package(Pandoc REQUIRED) |
| 10 | +find_package(Sphinx REQUIRED) |
| 11 | + |
| 12 | +# Copy RST files |
| 13 | +file(COPY _build DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) |
| 14 | +file(COPY _static DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) |
| 15 | +file(COPY _templates DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) |
| 16 | +file(COPY index.rst DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) |
| 17 | +file(COPY url.rst DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) |
| 18 | +file(COPY url_record.rst DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) |
| 19 | +file(COPY url_search_parameters.rst DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) |
| 20 | +file(COPY error_codes.rst DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) |
| 21 | + |
| 22 | +# Generate API documentation using Doxygen |
| 23 | +configure_file( |
| 24 | + ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in |
| 25 | + ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY) |
| 26 | + |
| 27 | +configure_file( |
| 28 | + ${CMAKE_CURRENT_SOURCE_DIR}/conf.py.in |
| 29 | + ${CMAKE_CURRENT_BINARY_DIR}/conf.py @ONLY) |
| 30 | + |
| 31 | +add_custom_target(doxygen ALL |
| 32 | + COMMAND |
| 33 | + ${DOXYGEN} |
| 34 | + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} |
| 35 | + COMMENT "Generating documentation with Doxygen") |
| 36 | + |
| 37 | +# Convert markdown to RST |
| 38 | +SET( |
| 39 | + GENERATED_FROM_MARKDOWN |
| 40 | + readme |
| 41 | + changelog |
| 42 | +) |
| 43 | + |
| 44 | +foreach (basename ${GENERATED_FROM_MARKDOWN}) |
| 45 | + string(TOUPPER ${basename} basename_upper) |
| 46 | + add_custom_target(${basename} |
| 47 | + pandoc ${CMAKE_SOURCE_DIR}/${basename_upper}.md -f markdown -t rst -s -o ${CMAKE_CURRENT_BINARY_DIR}/${basename}.rst |
| 48 | + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} |
| 49 | + BYPRODUCTS $CMAKE_CURRENT_BINARY_DIR}/${basename}.rst |
| 50 | + COMMENT "Generating RST file with pandoc" VERBATIM) |
| 51 | +endforeach() |
| 52 | + |
| 53 | +# Bring it all together using Sphinx |
| 54 | +add_custom_target(doc ALL |
| 55 | + COMMAND |
| 56 | + ${SPHINX_EXECUTABLE} -M html ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR} |
| 57 | + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} |
| 58 | + DEPENDS doxygen ${GENERATED_FROM_MARKDOWN} |
| 59 | + COMMENT "Generating documentation with Sphinx") |
0 commit comments