File: create-manual.cmake

package info (click to toggle)
libsbml 5.20.5%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 117,108 kB
  • sloc: cpp: 469,781; xml: 364,270; ansic: 54,078; python: 12,540; makefile: 9,759; sh: 9,245; cs: 8,586; java: 8,151; perl: 6,133; ruby: 4,760; javascript: 1,605; php: 202; csh: 3
file content (148 lines) | stat: -rw-r--r-- 6,433 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
###############################################################################
#
# Description       : CMake helper generating the doxygen manual for the given language
# Original author(s): Frank Bergmann <fbergman@caltech.edu>
# Organization      : California Institute of Technology
#


message("LANGUAGE:           ${LANGUAGE}")            # the language to generate the manual for (e.g. python, cpp)
message("ROOT_DIR:           ${ROOT_DIR}")            # the libsbml root dir
message("SRC_DIR:            ${SRC_DIR}")             # the libsbml/docs dir
message("OUTPUT_DIR:         ${OUTPUT_DIR}")          # output dir in which to generate manual usually formatted/${LANGUAGE}-api
message("PYTHON_EXECUTABLE:  ${PYTHON_EXECUTABLE}")   # python executable to run scripts with
message("DOXYGEN_EXECUTABLE: ${DOXYGEN_EXECUTABLE}")  # doxygen executable to run

# create output directories
make_directory(${OUTPUT_DIR})
make_directory(${OUTPUT_DIR}/search)

# run python scripts to generate needed files
execute_process(COMMAND ${PYTHON_EXECUTABLE} 
                ${SRC_DIR}/src/utilities/generate-class-name-list.py 
                "${ROOT_DIR}/src" 
                OUTPUT_FILE "${SRC_DIR}/src/class-list.txt"
                WORKING_DIRECTORY ${SRC_DIR}/src)

execute_process(COMMAND ${PYTHON_EXECUTABLE}
                ${SRC_DIR}/src/utilities/generate-converters-list.py "${SRC_DIR}/src/class-list.txt" 
                OUTPUT_FILE "${SRC_DIR}/src/libsbml-converters.txt"
                WORKING_DIRECTORY ${SRC_DIR}/src)

execute_process(COMMAND ${PYTHON_EXECUTABLE}
                ${SRC_DIR}/src/utilities/generate-pkg-stylesheet.py "${ROOT_DIR}/src/sbml/packages" 
                OUTPUT_FILE "${SRC_DIR}/src/css/libsbml-package-stylesheet.css"
                WORKING_DIRECTORY ${SRC_DIR}/src)

# create doxygen config files for index and group runs
# we also add aliases again, as they would have been corrupted 
# by the configure_file run. 
#
# As of doxygen 1.9 the ALIASES are not working as before, so 
# sbmlbrief, will not display the brief on the overview list. 
file(READ   ${SRC_DIR}/src/doxygen-config-${LANGUAGE}.txt DOXYGEN_CONFIG)
file(WRITE  ${SRC_DIR}/src/doxygen-config-${LANGUAGE}.1.txt "${DOXYGEN_CONFIG}")
file(APPEND ${SRC_DIR}/src/doxygen-config-${LANGUAGE}.1.txt "
ALIASES += sbmlpackage{1}=\"@addindex \\1\"

ALIASES += sbmlmarker{1}=\"@htmlinclude pkg-marker-\\1.html\"
ALIASES += sbmlbrief{1}=\"@sbmlpackage{\\1}^^@brief @sbmlmarker{\\1} \"
ALIASES += sbmlfunction{2}=\"@if clike SBML_\\1()@endif @if csharp SBML_\\1()@endif @if python @link libsbml.\\1() \\1()@endlink@endif@~\"
ALIASES += sbmlconstant{2}=\"@if clike @link \\2#\\1 \\1@endlink@endif @if csharp @link libsbml#\\1 \\1@endlink@endif @if python @link libsbml#\\1 \\1@endlink@endif @if java @link libsbmlConstants#\\1 \\1@endlink@endif@~\"

")

file(WRITE  ${SRC_DIR}/src/doxygen-config-${LANGUAGE}.2.txt "${DOXYGEN_CONFIG}")
file(APPEND ${SRC_DIR}/src/doxygen-config-${LANGUAGE}.2.txt "

ALIASES += sbmlpackage{1}=\"@ingroup \\1\"

ALIASES += sbmlmarker{1}=\"@htmlinclude pkg-marker-\\1.html\"
ALIASES += sbmlbrief{1}=\"@sbmlpackage{\\1}^^@brief @sbmlmarker{\\1} \"
ALIASES += sbmlfunction{2}=\"@if clike SBML_\\1()@endif @if csharp SBML_\\1()@endif @if python @link libsbml.\\1() \\1()@endlink@endif@~\"
ALIASES += sbmlconstant{2}=\"@if clike @link \\2#\\1 \\1@endlink@endif @if csharp @link libsbml#\\1 \\1@endlink@endif @if python @link libsbml#\\1 \\1@endlink@endif @if java @link libsbmlConstants#\\1 \\1@endlink@endif@~\"

")

if (NOT SERVER_SEARCH)
file(WRITE ${SRC_DIR}/src/doxygen-search-config.txt "
# Configuration for local search
SEARCHENGINE = YES
SERVER_BASED_SEARCH = NO
")
else()
file(WRITE ${SRC_DIR}/src/doxygen-search-config.txt "
# Config for server-side search
SEARCHENGINE = YES      
SERVER_BASED_SEARCH = YES
EXTERNAL_SEARCH = YES
SEARCHENGINE_URL = db/doxysearch.cgi
")
endif()

# run doxygen twice, once for index, once for package groups 
execute_process(COMMAND ${DOXYGEN_EXECUTABLE} ${SRC_DIR}/src/doxygen-config-${LANGUAGE}.1.txt
                WORKING_DIRECTORY ${SRC_DIR}/src
)

# store index files
execute_process(COMMAND ${CMAKE_COMMAND}
                -DOPERATION=store
                -DGENERATOR_DIR=${OUTPUT_DIR}
                -DOUTPUT_DIR=${OUTPUT_DIR}/tmp-index
                -P "${SRC_DIR}/index-helper.cmake"
)

execute_process(COMMAND ${DOXYGEN_EXECUTABLE} ${SRC_DIR}/src/doxygen-config-${LANGUAGE}.2.txt
                WORKING_DIRECTORY ${SRC_DIR}/src
)

# restore index files
execute_process(COMMAND ${CMAKE_COMMAND}
                -DOPERATION=restore
                -DGENERATOR_DIR=${OUTPUT_DIR}
                -DOUTPUT_DIR=${OUTPUT_DIR}/tmp-index
                -P "${SRC_DIR}/index-helper.cmake"
)
# copy remaining files

set(EXTENSIONS_TO_COPY "*.txt" "*.gif" "*.png" "*.jpg" "*.svg")
foreach(extension ${EXTENSIONS_TO_COPY})
  file(GLOB files ${SRC_DIR}/src/common-graphics/${extension})
  foreach(file ${files})
    file(COPY ${file} DESTINATION ${OUTPUT_DIR})
  endforeach()
endforeach()

set(REMAINING_FILES
    ${SRC_DIR}/src/css/right-arrow-2x.png
    ${SRC_DIR}/src/css/libsbml-reset-stylesheet.css
    ${SRC_DIR}/src/css/libsbml-base-stylesheet.css
    ${SRC_DIR}/src/css/libsbml-package-stylesheet.css
    ${SRC_DIR}/src/css/libsbml-c-stylesheet.css
    ${SRC_DIR}/src/css/libsbml-python-stylesheet.css
    ${SRC_DIR}/src/css/libsbml-doxygen-tabs.css
    ${SRC_DIR}/src/css/libsbml-doxygen-navtree.css
    ${SRC_DIR}/src/sbml.js
)

foreach(file ${REMAINING_FILES})
  file(COPY ${file} DESTINATION ${OUTPUT_DIR})
endforeach()

# rename files (unfortunately the css will need changing for newer doxygen versions)
#file(RENAME ${OUTPUT_DIR}/tabs.css ${OUTPUT_DIR}/doxy_tabs.css)
#file(RENAME ${OUTPUT_DIR}/navtree.css ${OUTPUT_DIR}/doxy_navtree.css)
#file(RENAME ${OUTPUT_DIR}/libsbml-doxygen-tabs.css ${OUTPUT_DIR}/tabs.css)
#file(RENAME ${OUTPUT_DIR}/libsbml-doxygen-navtree.css ${OUTPUT_DIR}/navtree.css)

# append contents of customized css files to doxygen css
file(READ ${OUTPUT_DIR}/libsbml-doxygen-tabs.css TABS_CSS)
file(APPEND ${OUTPUT_DIR}/tabs.css "\n${TABS_CSS}")

file(READ ${OUTPUT_DIR}/libsbml-doxygen-navtree.css NAVTREE_CSS)
file(APPEND ${OUTPUT_DIR}/navtree.css "\n${NAVTREE_CSS}")

# remove temporary files created 
file(REMOVE ${SRC_DIR}/src/doxygen-config-${LANGUAGE}.1.txt)
file(REMOVE ${SRC_DIR}/src/doxygen-config-${LANGUAGE}.2.txt)