Skip to content

Commit c376381

Browse files
Initial doxygen setup
1 parent 5975281 commit c376381

10 files changed

+1044
-46
lines changed

CMakeLists.txt

Lines changed: 56 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,34 +17,77 @@ set(FENIX_VERSION_MINOR 0)
1717

1818
option(BUILD_EXAMPLES "Builds example programs from the examples directory" OFF)
1919
option(BUILD_TESTING "Builds tests and test modes of files" ON)
20-
20+
option(BUILD_DOCS "Builds documentation if is doxygen found" ON)
21+
option(DOCS_ONLY "Only build documentation" OFF)
2122

2223
#Solves an issue with some system environments putting their MPI headers before
2324
#the headers CMake includes. Forces non-system MPI headers when incorrect headers
2425
#detected in include path.
2526
option(FENIX_SYSTEM_INC_FIX "Attempts to force overriding any system MPI headers" ON)
2627
option(FENIX_PROPAGATE_INC_FIX "Attempt overriding system MPI headers in linking projects" ON)
2728

28-
find_package(MPI REQUIRED)
2929

30-
if(${FENIX_SYSTEM_INC_FIX})
31-
include(cmake/systemMPIOverride.cmake)
32-
endif()
30+
if(NOT DOCS_ONLY)
31+
find_package(MPI REQUIRED)
3332

33+
if(${FENIX_SYSTEM_INC_FIX})
34+
include(cmake/systemMPIOverride.cmake)
35+
endif()
3436

35-
add_subdirectory(src)
37+
add_subdirectory(src)
3638

39+
include(CTest)
40+
list(APPEND MPIEXEC_PREFLAGS "--with-ft;mpi")
3741

38-
include(CTest)
39-
list(APPEND MPIEXEC_PREFLAGS "--with-ft;mpi")
42+
if(BUILD_EXAMPLES)
43+
add_subdirectory(examples)
44+
endif()
4045

41-
if(BUILD_EXAMPLES)
42-
add_subdirectory(examples)
43-
endif()
46+
if(BUILD_TESTING)
47+
add_subdirectory(test)
48+
endif()
4449

50+
endif()
4551

46-
if(BUILD_TESTING)
47-
add_subdirectory(test)
52+
if(BUILD_DOCS)
53+
find_package(Doxygen)
54+
if(DOXYGEN_FOUND)
55+
list(APPEND DOXYGEN_EXAMPLE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/examples)
56+
list(APPEND DOXYGEN_EXAMPLE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/doc/examples)
57+
list(APPEND DOXYGEN_IMAGE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/doc/img)
58+
set(DOXYGEN_USE_MDFILE_AS_MAINPAGE doc/Introduction.md)
59+
set(DOXYGEN_TOC_INCLUDE_HEADINGS 0)
60+
set(DOXYGEN_DISABLE_INDEX YES)
61+
set(DOXYGEN_GENERATE_TREEVIEW YES)
62+
set(DOXYGEN_FULL_SIDEBAR NO)
63+
set(DOXYGEN_HTML_EXTRA_STYLESHEET ${CMAKE_CURRENT_SOURCE_DIR}/doc/DoxygenStyle.css)
64+
set(DOXYGEN_LAYOUT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/doc/DoxygenLayout.xml)
65+
set(DOXYGEN_OUTPUT_DIRECTORY doc)
66+
67+
set(DOXYGEN_GENERATE_MAN YES)
68+
set(DOXYGEN_GENERATE_HTML YES)
69+
set(DOXYGEN_GENERATE_LATEX YES)
70+
71+
set(DOXYGEN_QUIET YES)
72+
set(DOXYGEN_WARN_IF_UNDOCUMENTED NO)
73+
set(DOXYGEN_WARN_IF_DOC_ERROR YES)
74+
set(DOXYGEN_WARN_NO_PARAMDOC YES)
75+
set(DOXYGEN_SHOW_INCLUDE_FILES NO)
76+
set(DOXYGEN_WARN_IF_UNDOC_ENUM_VAL NO)
77+
list(APPEND DOXYGEN_ALIASES "returnstatus=@return FENIX_SUCCESS if successful, any [return code](@ref ReturnCodes) otherwise.")
78+
list(APPEND DOXYGEN_ALIASES "unimplemented=@qualifier UNIMPLEMENTED @brief @htmlonly <span class=\\\"mlabel\\\"> @endhtmlonly UNIMPLEMENTED @htmlonly </span> @endhtmlonly")
79+
80+
doxygen_add_docs(doc
81+
doc/Introduction.md doc/fake_init.h include src
82+
ALL
83+
COMMENT "Generate Fenix documentation")
84+
message(STATUS "Run `make doc` to build documentation")
85+
86+
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doc DESTINATION ${CMAKE_INSTALL_PREFIX})
87+
88+
else()
89+
message(STATUS "Doxygen not found, `make docs` disabled")
90+
endif()
4891
endif()
4992

5093

doc/DoxygenLayout.xml

Lines changed: 269 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,269 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<doxygenlayout version="1.0">
3+
<!-- Generated by doxygen 1.12.0 -->
4+
<!-- Navigation index tabs for HTML output -->
5+
<navindex>
6+
<tab type="mainpage" visible="no" title=""/>
7+
<tab type="pages" visible="yes" title="" intro=""/>
8+
<tab type="topics" visible="yes" title="" intro=""/>
9+
<tab type="modules" visible="yes" title="" intro="">
10+
<tab type="modulelist" visible="yes" title="" intro=""/>
11+
<tab type="modulemembers" visible="yes" title="" intro=""/>
12+
</tab>
13+
<tab type="namespaces" visible="yes" title="">
14+
<tab type="namespacelist" visible="yes" title="" intro=""/>
15+
<tab type="namespacemembers" visible="yes" title="" intro=""/>
16+
</tab>
17+
<tab type="concepts" visible="yes" title="">
18+
</tab>
19+
<tab type="interfaces" visible="yes" title="">
20+
<tab type="interfacelist" visible="yes" title="" intro=""/>
21+
<tab type="interfaceindex" visible="$ALPHABETICAL_INDEX" title=""/>
22+
<tab type="interfacehierarchy" visible="yes" title="" intro=""/>
23+
</tab>
24+
<tab type="classes" visible="no" title="">
25+
<tab type="classlist" visible="yes" title="" intro=""/>
26+
<tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/>
27+
<tab type="hierarchy" visible="yes" title="" intro=""/>
28+
<tab type="classmembers" visible="yes" title="" intro=""/>
29+
</tab>
30+
<tab type="structs" visible="yes" title="">
31+
<tab type="structlist" visible="yes" title="" intro=""/>
32+
<tab type="structindex" visible="$ALPHABETICAL_INDEX" title=""/>
33+
</tab>
34+
<tab type="exceptions" visible="yes" title="">
35+
<tab type="exceptionlist" visible="yes" title="" intro=""/>
36+
<tab type="exceptionindex" visible="$ALPHABETICAL_INDEX" title=""/>
37+
<tab type="exceptionhierarchy" visible="yes" title="" intro=""/>
38+
</tab>
39+
<tab type="files" visible="no" title="">
40+
<tab type="filelist" visible="yes" title="" intro=""/>
41+
<tab type="globals" visible="yes" title="" intro=""/>
42+
</tab>
43+
<tab type="examples" visible="yes" title="" intro=""/>
44+
</navindex>
45+
46+
<!-- Layout definition for a class page -->
47+
<class>
48+
<briefdescription visible="yes"/>
49+
<includes visible="$SHOW_HEADERFILE"/>
50+
<inheritancegraph visible="yes"/>
51+
<collaborationgraph visible="yes"/>
52+
<memberdecl>
53+
<nestedclasses visible="yes" title=""/>
54+
<publictypes title=""/>
55+
<services title=""/>
56+
<interfaces title=""/>
57+
<publicslots title=""/>
58+
<signals title=""/>
59+
<publicmethods title=""/>
60+
<publicstaticmethods title=""/>
61+
<publicattributes title=""/>
62+
<publicstaticattributes title=""/>
63+
<protectedtypes title=""/>
64+
<protectedslots title=""/>
65+
<protectedmethods title=""/>
66+
<protectedstaticmethods title=""/>
67+
<protectedattributes title=""/>
68+
<protectedstaticattributes title=""/>
69+
<packagetypes title=""/>
70+
<packagemethods title=""/>
71+
<packagestaticmethods title=""/>
72+
<packageattributes title=""/>
73+
<packagestaticattributes title=""/>
74+
<properties title=""/>
75+
<events title=""/>
76+
<privatetypes title=""/>
77+
<privateslots title=""/>
78+
<privatemethods title=""/>
79+
<privatestaticmethods title=""/>
80+
<privateattributes title=""/>
81+
<privatestaticattributes title=""/>
82+
<friends title=""/>
83+
<related title="" subtitle=""/>
84+
<membergroups visible="yes"/>
85+
</memberdecl>
86+
<detaileddescription title=""/>
87+
<memberdef>
88+
<inlineclasses title=""/>
89+
<typedefs title=""/>
90+
<enums title=""/>
91+
<services title=""/>
92+
<interfaces title=""/>
93+
<constructors title=""/>
94+
<functions title=""/>
95+
<related title=""/>
96+
<variables title=""/>
97+
<properties title=""/>
98+
<events title=""/>
99+
</memberdef>
100+
<allmemberslink visible="yes"/>
101+
<usedfiles visible="$SHOW_USED_FILES"/>
102+
<authorsection visible="yes"/>
103+
</class>
104+
105+
<!-- Layout definition for a namespace page -->
106+
<namespace>
107+
<briefdescription visible="yes"/>
108+
<memberdecl>
109+
<nestednamespaces visible="yes" title=""/>
110+
<constantgroups visible="yes" title=""/>
111+
<interfaces visible="yes" title=""/>
112+
<classes visible="yes" title=""/>
113+
<concepts visible="yes" title=""/>
114+
<structs visible="yes" title=""/>
115+
<exceptions visible="yes" title=""/>
116+
<typedefs title=""/>
117+
<sequences title=""/>
118+
<dictionaries title=""/>
119+
<enums title=""/>
120+
<functions title=""/>
121+
<variables title=""/>
122+
<properties title=""/>
123+
<membergroups visible="yes"/>
124+
</memberdecl>
125+
<detaileddescription title=""/>
126+
<memberdef>
127+
<inlineclasses title=""/>
128+
<typedefs title=""/>
129+
<sequences title=""/>
130+
<dictionaries title=""/>
131+
<enums title=""/>
132+
<functions title=""/>
133+
<variables title=""/>
134+
<properties title=""/>
135+
</memberdef>
136+
<authorsection visible="yes"/>
137+
</namespace>
138+
139+
<!-- Layout definition for a concept page -->
140+
<concept>
141+
<briefdescription visible="yes"/>
142+
<includes visible="$SHOW_HEADERFILE"/>
143+
<definition visible="yes" title=""/>
144+
<detaileddescription title=""/>
145+
<authorsection visible="yes"/>
146+
</concept>
147+
148+
<!-- Layout definition for a file page -->
149+
<file>
150+
<briefdescription visible="yes"/>
151+
<includes visible="$SHOW_INCLUDE_FILES"/>
152+
<includegraph visible="yes"/>
153+
<includedbygraph visible="yes"/>
154+
<sourcelink visible="yes"/>
155+
<memberdecl>
156+
<interfaces visible="yes" title=""/>
157+
<classes visible="yes" title=""/>
158+
<structs visible="yes" title=""/>
159+
<exceptions visible="yes" title=""/>
160+
<namespaces visible="yes" title=""/>
161+
<concepts visible="yes" title=""/>
162+
<constantgroups visible="yes" title=""/>
163+
<defines title=""/>
164+
<typedefs title=""/>
165+
<sequences title=""/>
166+
<dictionaries title=""/>
167+
<enums title=""/>
168+
<functions title=""/>
169+
<variables title=""/>
170+
<properties title=""/>
171+
<membergroups visible="yes"/>
172+
</memberdecl>
173+
<detaileddescription title=""/>
174+
<memberdef>
175+
<inlineclasses title=""/>
176+
<defines title=""/>
177+
<typedefs title=""/>
178+
<sequences title=""/>
179+
<dictionaries title=""/>
180+
<enums title=""/>
181+
<functions title=""/>
182+
<variables title=""/>
183+
<properties title=""/>
184+
</memberdef>
185+
<authorsection/>
186+
</file>
187+
188+
<!-- Layout definition for a group page -->
189+
<group>
190+
<briefdescription visible="yes"/>
191+
<groupgraph visible="yes"/>
192+
<memberdecl>
193+
<nestedgroups visible="yes" title=""/>
194+
<modules visible="yes" title=""/>
195+
<dirs visible="yes" title=""/>
196+
<files visible="yes" title=""/>
197+
<namespaces visible="yes" title=""/>
198+
<concepts visible="yes" title=""/>
199+
<classes visible="yes" title=""/>
200+
<defines title=""/>
201+
<typedefs title=""/>
202+
<sequences title=""/>
203+
<dictionaries title=""/>
204+
<enums title=""/>
205+
<enumvalues title=""/>
206+
<functions title=""/>
207+
<variables title=""/>
208+
<signals title=""/>
209+
<publicslots title=""/>
210+
<protectedslots title=""/>
211+
<privateslots title=""/>
212+
<events title=""/>
213+
<properties title=""/>
214+
<friends title=""/>
215+
<membergroups visible="yes"/>
216+
</memberdecl>
217+
<detaileddescription title="Overview"/>
218+
<memberdef>
219+
<pagedocs/>
220+
<inlineclasses title=""/>
221+
<defines visible="no" title=""/>
222+
<typedefs title=""/>
223+
<sequences title=""/>
224+
<dictionaries title=""/>
225+
<enums title=""/>
226+
<enumvalues title=""/>
227+
<functions title=""/>
228+
<variables title=""/>
229+
<signals title=""/>
230+
<publicslots title=""/>
231+
<protectedslots title=""/>
232+
<privateslots title=""/>
233+
<events title=""/>
234+
<properties title=""/>
235+
<friends title=""/>
236+
</memberdef>
237+
<authorsection visible="yes"/>
238+
</group>
239+
240+
<!-- Layout definition for a C++20 module page -->
241+
<module>
242+
<briefdescription visible="yes"/>
243+
<exportedmodules visible="yes"/>
244+
<memberdecl>
245+
<concepts visible="yes" title=""/>
246+
<classes visible="yes" title=""/>
247+
<enums title=""/>
248+
<typedefs title=""/>
249+
<functions title=""/>
250+
<variables title=""/>
251+
<membergroups title=""/>
252+
</memberdecl>
253+
<detaileddescription title=""/>
254+
<memberdecl>
255+
<files visible="yes"/>
256+
</memberdecl>
257+
</module>
258+
259+
<!-- Layout definition for a directory page -->
260+
<directory>
261+
<briefdescription visible="yes"/>
262+
<directorygraph visible="yes"/>
263+
<memberdecl>
264+
<dirs visible="yes"/>
265+
<files visible="yes"/>
266+
</memberdecl>
267+
<detaileddescription title=""/>
268+
</directory>
269+
</doxygenlayout>

0 commit comments

Comments
 (0)