@@ -4,22 +4,25 @@ PROJECT(MFC LANGUAGES C CXX Fortran)
4
4
5
5
6
6
# === Options
7
- OPTION (MFC_WITH_MPI "Build with MPI" ON )
8
- OPTION (MFC_WITH_OPEN_ACC "Build with OpenACC" OFF )
9
- OPTION (MFC_BUILD_PRE_PROCESS "Build pre_process" OFF )
10
- OPTION (MFC_BUILD_SIMULATION "Build simulation" OFF )
11
- OPTION (MFC_BUILD_POST_PROCESS "Build post_process" OFF )
12
- OPTION (MFC_BUILD_ALL "Build pre_process, simulation, and post_process" OFF )
7
+ OPTION (MFC_WITH_MPI "Build with MPI" ON )
8
+ OPTION (MFC_WITH_OPEN_ACC "Build with OpenACC" OFF )
9
+ OPTION (MFC_BUILD_PRE_PROCESS "Build pre_process" OFF )
10
+ OPTION (MFC_BUILD_SIMULATION "Build simulation" OFF )
11
+ OPTION (MFC_BUILD_POST_PROCESS "Build post_process" OFF )
12
+ OPTION (MFC_BUILD_DOC "Build documentation" OFF )
13
+ OPTION (MFC_BUILD_ALL "Build pre_process, simulation, and post_process" OFF )
13
14
14
15
IF (MFC_BUILD_ALL)
15
16
SET (MFC_BUILD_PRE_PROCESS ON FORCE)
16
17
SET (MFC_BUILD_SIMULATION ON FORCE)
17
18
SET (MFC_BUILD_POST_PROCESS ON FORCE)
19
+ SET (MFC_BUILD_DOC ON FORCE)
18
20
ENDIF ()
19
21
20
22
21
23
# === Imports
22
24
INCLUDE (GNUInstallDirs)
25
+ INCLUDE (ExternalProject)
23
26
INCLUDE (CheckIPOSupported)
24
27
INCLUDE (CheckFortranCompilerFlag)
25
28
@@ -49,7 +52,7 @@ ELSEIF (CMAKE_Fortran_COMPILER_ID STREQUAL "AppleClang")
49
52
ENDIF ()
50
53
51
54
# === === Find Fypp
52
- FIND_PROGRAM (FYPP_PATH fypp REQUIRED)
55
+ FIND_PROGRAM (FYPP_EXE fypp REQUIRED)
53
56
54
57
55
58
# === Miscellaneous Configuration
@@ -133,7 +136,7 @@ ENDIF()
133
136
134
137
# === Locate Libraries
135
138
# === === MPI
136
- IF (MFC_WITH_MPI)
139
+ IF (MFC_WITH_MPI AND (MFC_BUILD_PRE_PROCESS OR MFC_BUILD_SIMULATION OR MFC_BUILD_POST_PROCESS) )
137
140
FIND_PACKAGE (MPI COMPONENTS Fortran REQUIRED)
138
141
ENDIF ()
139
142
@@ -187,7 +190,7 @@ MACRO(HANDLE_FYPP target)
187
190
188
191
ADD_CUSTOM_COMMAND (
189
192
OUTPUT "${f90_filepath} "
190
- COMMAND "fypp " "${fpp_filepath} " "${f90_filepath} "
193
+ COMMAND "${FYPP_EXE} " "${fpp_filepath} " "${f90_filepath} "
191
194
DEPENDS "${fpp_filepath} " "${CMAKE_CURRENT_SOURCE_DIR} /src/common_code/case.fpp"
192
195
COMMENT "Preprocessing ${fpp_filename} "
193
196
VERBATIM
@@ -200,14 +203,15 @@ ENDMACRO()
200
203
201
204
202
205
# === Handle src/ Folder
203
- # === === src/common_code
206
+ # === === Fypp / Sources
204
207
HANDLE_FYPP(common)
208
+ HANDLE_FYPP(pre_process)
209
+ HANDLE_FYPP(simulation)
210
+ HANDLE_FYPP(post_process)
205
211
206
212
207
213
# === === src/pre_process_code
208
214
IF (MFC_BUILD_PRE_PROCESS)
209
- HANDLE_FYPP(pre_process)
210
-
211
215
ADD_EXECUTABLE (pre_process "${pre_process_srcs} " "${common_srcs} " )
212
216
213
217
@@ -226,8 +230,6 @@ ENDIF()
226
230
227
231
# === === src/simulation_code
228
232
IF (MFC_BUILD_SIMULATION)
229
- HANDLE_FYPP(simulation)
230
-
231
233
ADD_EXECUTABLE (simulation "${simulation_srcs} " "${common_srcs} " )
232
234
233
235
@@ -286,8 +288,6 @@ ENDIF()
286
288
287
289
# === === src/post_process_code
288
290
IF (MFC_BUILD_POST_PROCESS)
289
- HANDLE_FYPP(post_process)
290
-
291
291
ADD_EXECUTABLE (post_process "${post_process_srcs} " "${common_srcs} " )
292
292
293
293
TARGET_LINK_LIBRARIES (post_process PRIVATE SILO::SILO HDF5::HDF5 FFTW::FFTW)
@@ -302,3 +302,97 @@ IF (MFC_BUILD_POST_PROCESS)
302
302
303
303
INSTALL (TARGETS post_process RUNTIME DESTINATION bin)
304
304
ENDIF ()
305
+
306
+
307
+ ADD_CUSTOM_TARGET ("doc" )
308
+
309
+ MACRO (GEN_DOCS target name )
310
+
311
+ SET (DOXYGEN_PROJECT_NAME "${name} " )
312
+
313
+ FILE (
314
+ COPY "${CMAKE_CURRENT_SOURCE_DIR} /doc/${target} "
315
+ DESTINATION "${CMAKE_CURRENT_BINARY_DIR} /doxygen"
316
+ )
317
+
318
+ CONFIGURE_FILE (
319
+ "${CMAKE_CURRENT_SOURCE_DIR} /doc/Doxyfile.in"
320
+ "${CMAKE_CURRENT_BINARY_DIR} /doxygen/${target} /Doxyfile"
321
+ @ONLY
322
+ )
323
+
324
+ FILE (
325
+ COPY "${CMAKE_CURRENT_SOURCE_DIR} /doc/res"
326
+ DESTINATION "${CMAKE_CURRENT_BINARY_DIR} /doxygen"
327
+ )
328
+
329
+ FILE (
330
+ COPY "${CMAKE_CURRENT_SOURCE_DIR} /doc/config.js"
331
+ DESTINATION "${CMAKE_CURRENT_BINARY_DIR} /doxygen"
332
+ )
333
+
334
+ ADD_CUSTOM_COMMAND (
335
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR} /doxygen/${target} /html/index.html"
336
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR} /doxygen/${target} /Doxyfile"
337
+ "${${target} _srcs}"
338
+ COMMAND "${DOXYGEN_EXECUTABLE} "
339
+ "Doxyfile"
340
+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} /doxygen/${target} "
341
+ COMMENT "${target} : Generating docs"
342
+ )
343
+
344
+ ADD_CUSTOM_TARGET (
345
+ "${target} _doxygen" ALL
346
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR} /doxygen/${target} /html/index.html"
347
+ )
348
+
349
+ ADD_DEPENDENCIES ("${target} _doxygen" doxygen-awesome-css)
350
+ ADD_DEPENDENCIES ("doc" "${target} _doxygen" )
351
+
352
+ INSTALL (
353
+ DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} /doxygen/${target} /html/"
354
+ DESTINATION "doc/${target} "
355
+ )
356
+
357
+ INSTALL (
358
+ DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} /doxygen/res/"
359
+ DESTINATION "doc/res"
360
+ )
361
+
362
+ INSTALL (
363
+ FILES "${CMAKE_CURRENT_SOURCE_DIR} /doc/index.html"
364
+ DESTINATION "doc"
365
+ )
366
+
367
+ ENDMACRO ()
368
+
369
+
370
+ # === Documentation
371
+ IF (MFC_BUILD_DOC)
372
+
373
+ # === === Find Doxygen
374
+ FIND_PACKAGE (Doxygen REQUIRED dot REQUIRED)
375
+
376
+ # === === Fetch CSS Theme
377
+ ExternalProject_Add(doxygen-awesome-css
378
+ PREFIX doxygen-awesome-css
379
+ GIT_REPOSITORY "https://github.com/jothepro/doxygen-awesome-css"
380
+ GIT_TAG "a5efba07a3d4fd6317d95657b3095b97e134b791"
381
+ CONFIGURE_COMMAND ""
382
+ BUILD_COMMAND ""
383
+ INSTALL_COMMAND ""
384
+ )
385
+
386
+ SET (theme_dirpath "${CMAKE_CURRENT_BINARY_DIR} /doxygen-awesome-css/src/doxygen-awesome-css/" )
387
+
388
+ SET (DOXYGEN_HTML_EXTRA_STYLESHEET "\" ${theme_dirpath} /doxygen-awesome.css\" " )
389
+
390
+ # === === Generate Documentation
391
+ GEN_DOCS(pre_process "MFC: Pre-Process" )
392
+ GEN_DOCS(simulation "MFC: Simulation" )
393
+ GEN_DOCS(post_process "MFC: Post-Process" )
394
+
395
+ # === === Generate Landing Page
396
+ GEN_DOCS(landing "MFC" )
397
+
398
+ ENDIF ()
0 commit comments