Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
DLR-AMR
GitHub Repository: DLR-AMR/t8code
Path: blob/main/doc/CMakeLists.txt
898 views
1
# This file is part of t8code.
2
# t8code is a C library to manage a collection (a forest) of multiple
3
# connected adaptive space-trees of general element types in parallel.
4
#
5
# Copyright (C) 2025 the developers
6
#
7
# t8code is free software; you can redistribute it and/or modify
8
# it under the terms of the GNU General Public License as published by
9
# the Free Software Foundation; either version 2 of the License, or
10
# (at your option) any later version.
11
#
12
# t8code is distributed in the hope that it will be useful,
13
# but WITHOUT ANY WARRANTY; without even the implied warranty of
14
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
# GNU General Public License for more details.
16
#
17
# You should have received a copy of the GNU General Public License
18
# along with t8code; if not, write to the Free Software Foundation, Inc.,
19
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20
21
if(T8CODE_BUILD_DOCUMENTATION)
22
find_package(Doxygen REQUIRED)
23
if (DOXYGEN_FOUND)
24
set(DOXYGEN_OUTPUT_DIR ${PROJECT_BINARY_DIR}/doc)
25
set(DOXYGEN_INDEX_FILE ${DOXYGEN_OUTPUT_DIR}/html/index.html)
26
set(DOXYFILE_IN ${PROJECT_SOURCE_DIR}/doc/Doxyfile.in)
27
set(DOXYFILE_OUT ${PROJECT_BINARY_DIR}/doc/Doxyfile)
28
29
#The following options are used inside the do
30
set(top_srcdir ${PROJECT_SOURCE_DIR})
31
set(top_builddir ${PROJECT_BINARY_DIR})
32
33
set(PACKAGE_NAME ${PROJECT_NAME})
34
set(VERSION ${T8_VERSION})
35
36
37
#Replace variables inside @@ with the current values
38
configure_file(${DOXYFILE_IN} ${DOXYFILE_OUT} @ONLY)
39
40
add_custom_command( OUTPUT ${DOXYGEN_INDEX_FILE}
41
DEPENDS ${T8_PUBLIC_HEADERS}
42
COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYFILE_OUT}
43
MAIN_DEPENDENCY ${DOXYFILE_OUT} ${DOXYFILE_IN}
44
COMMENT "Generating documentation"
45
VERBATIM)
46
47
add_custom_target(Doxygen ALL DEPENDS ${DOXYGEN_INDEX_FILE})
48
49
else (DOXYGEN_FOUND)
50
message(FATAL_ERROR "Doxygen need to be installed to generate the doxygen documentation")
51
endif (DOXYGEN_FOUND)
52
endif(T8CODE_BUILD_DOCUMENTATION)
53
54
if (T8CODE_BUILD_DOCUMENTATION_SPHINX)
55
find_package(Sphinx REQUIRED)
56
57
configure_file(${DOXYFILE_IN} ${DOXYFILE_OUT} @ONLY)
58
59
if (SPHINX_FOUND)
60
set(SPHINX_SOURCE ${PROJECT_SOURCE_DIR}/doc/source)
61
set(SPHINX_BUILD ${PROJECT_BINARY_DIR}/doc/sphinx)
62
set(SPHINX_INDEX_FILE ${SPHINX_BUILD}/index.html)
63
64
set(CONF_FILE_IN ${SPHINX_SOURCE}/conf.in)
65
set(CONF_FILE_OUT ${SPHINX_SOURCE}/conf.py)
66
67
set(top_srcdir ${PROJECT_SOURCE_DIR})
68
69
configure_file(${CONF_FILE_IN} ${CONF_FILE_OUT} @ONLY)
70
71
# Only regenerate Sphinx when:
72
# - Doxygen has rerun
73
# - Our doc files have been updated
74
# - The Sphinx config has been updated
75
add_custom_command( OUTPUT ${SPHINX_INDEX_FILE}
76
COMMAND ${SPHINX_EXECUTABLE} -b html
77
# Tell Breathe where to find the Doxygen output
78
-Dbreathe_projects.t8code=${DOXYGEN_OUTPUT_DIR}/xml
79
${SPHINX_SOURCE} ${SPHINX_BUILD}
80
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
81
DEPENDS
82
# Other docs files you want to track should go here (or in some variable)
83
${SPHINX_SOURCE}/index.rst
84
${DOXYGEN_INDEX_FILE}
85
MAIN_DEPENDENCY ${SPHINX_SOURCE}/conf.py
86
COMMENT "Generating documentation with Sphinx")
87
88
89
# Nice named target so we can run the job easily
90
add_custom_target(Sphinx ALL DEPENDS ${SPHINX_INDEX_FILE})
91
else (SPHINX_FOUND)
92
message(FATAL_ERROR "Sphinx need to be installed to generate the doxygen documentation")
93
endif (SPHINX_FOUND)
94
endif(T8CODE_BUILD_DOCUMENTATION_SPHINX)
95
96