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)
|