1 #-------------------------------------------------------------------------------
3 # | ____| _| |_ / __ \ /\ | \/ |
4 # | |__ _ __ ___ ___ / \| | | | / \ | \ / |
5 # | __| '__/ _ \/ _ ( (| |) ) | | |/ /\ \ | |\/| |
6 # | | | | | __/ __/\_ _/| |__| / ____ \| | | |
7 # |_| |_| \___|\___| |_| \____/_/ \_\_| |_|
9 # FreeFOAM: The Cross-Platform CFD Toolkit
11 # Copyright (C) 2008-2010 Michael Wild <themiwi@users.sf.net>
12 # Gerber van der Graaf <gerber_graaf@users.sf.net>
13 #-------------------------------------------------------------------------------
15 # This file is part of FreeFOAM.
17 # FreeFOAM is free software; you can redistribute it and/or modify it
18 # under the terms of the GNU General Public License as published by the
19 # Free Software Foundation; either version 2 of the License, or (at your
20 # option) any later version.
22 # FreeFOAM is distributed in the hope that it will be useful, but WITHOUT
23 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
24 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
27 # You should have received a copy of the GNU General Public License
28 # along with FreeFOAM; if not, write to the Free Software Foundation,
29 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
30 #-------------------------------------------------------------------------------
34 # determine graphics formats to generate
36 foreach(f IN LISTS FOAM_GUIDES_FORMATS)
38 list(APPEND GRAPHICS_FORMATS png)
39 elseif(f STREQUAL pdf)
40 list(APPEND GRAPHICS_FORMATS pdf)
42 message(SEND_ERROR "Unknown output format ${f}")
47 foam_configure_files(installFiles DESTDIR doc/UserGuide COPYONLY ${IMAGES})
49 foreach(fd IN LISTS COPY_SRCS)
50 # parse <source>=>[range]<test> entries
51 if(fd MATCHES "([^=]*)=(\\[(-?[0-9]*:-?[0-9]*)\\])?>(.*)")
52 set(f "${CMAKE_MATCH_1}")
53 get_filename_component(df "${f}" NAME)
54 set(d "${CMAKE_MATCH_4}/${df}")
55 if(NOT IS_ABSOLUTE "${d}")
56 set(d "${CMAKE_CURRENT_BINARY_DIR}/${d}")
59 get_filename_component(dd "${d}" PATH)
60 if(NOT IS_DIRECTORY "${dd}")
61 file(MAKE_DIRECTORY "${dd}")
63 # have a line-range specified
64 add_custom_command(OUTPUT "${d}"
65 COMMAND "${PYTHON_EXECUTABLE}" -c
66 "open('${d}', 'wt').writelines(open('${f}', 'rt').readlines()[${CMAKE_MATCH_3}])"
68 COMMENT "Extracting range ${CMAKE_MATCH_3} from ${f}"
71 configure_file("${f}" "${d}" COPYONLY)
73 list(APPEND COPY_OUTPUT "${d}")
76 "Elements in LISTING_SRCS must be of the form SRCFILE=([range])?>DESTDIR")
81 foam_compile_asy(ASY_OUTPUT "${GRAPHICS_FORMATS}" ${ASY_SRCS})
85 "${CMAKE_BINARY_DIR}/data/asciidoc/dblatex/asciidoc-dblatex.xsl")
87 "${CMAKE_BINARY_DIR}/data/asciidoc/dblatex/asciidoc-dblatex.sty")
89 set(A2X_pdf_dblatex_OPTS
90 "--dblatex-opts=--xsl-user=${DBLATEX_XSL}"
91 "--texstyle=${DBLATEX_STY}"
92 "--fig-path=${CMAKE_CURRENT_BINARY_DIR}")
93 string(REPLACE ";" " " A2X_pdf_dblatex_OPTS "${A2X_pdf_dblatex_OPTS}")
95 set(A2X_pdf_fop_OPTS --fop -a foam-use-fop -a foam-use-pngmath)
97 set(A2X_pdf_OPTS -f pdf -a foam-pdf)
100 list(APPEND A2X_pdf_OPTS ${A2X_pdf_fop_OPTS})
102 list(APPEND A2X_pdf_OPTS -a foam-use-dblatex ${A2X_pdf_dblatex_OPTS})
105 set(A2X_pdf_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/../UserGuide.pdf")
108 set(A2X_pdf_EXTRA_DEPS
109 "${CMAKE_BINARY_DIR}/data/asciidoc/dblatex/asciidoc-dblatex.xsl"
110 "${CMAKE_BINARY_DIR}/data/asciidoc/dblatex/orig-asciidoc-dblatex.xsl"
111 "${CMAKE_BINARY_DIR}/data/asciidoc/dblatex/asciidoc-dblatex.sty"
112 "${CMAKE_BINARY_DIR}/data/asciidoc/dblatex/orig-asciidoc-dblatex.sty")
115 set(ADOC_pdf_MAIN_CONF "${CMAKE_BINARY_DIR}/data/asciidoc/pdf.conf")
116 set(ADOC_pdf_ALL_CONF "${ADOC_pdf_MAIN_CONF}"
117 "${CMAKE_BINARY_DIR}/data/asciidoc/common.conf"
118 "${CMAKE_BINARY_DIR}/data/asciidoc/docbook.conf")
120 set(A2X_xhtml_xslt_OPTS "--xsltproc-opts=--stringparam chunk.section.depth 1")
121 if(FOAM_ENABLE_MATHJAX)
122 set(A2X_xhtml_xslt_OPTS
123 "${A2X_xhtml_xslt_OPTS} --param foam.use.mathjax 1")
124 set(A2X_xhtml_xslt_OPTS
125 "${A2X_xhtml_xslt_OPTS} --stringparam foam.mathjax.location ${FOAM_MATHJAX_URL}")
126 set(A2X_xhtml_xslt_OPTS
127 "${A2X_xhtml_xslt_OPTS} --stringparam foam.doc.location ..")
129 set(A2X_xhtml_xslt_OPTS
130 "${A2X_xhtml_xslt_OPTS} --param foam.use.mathjax 0")
132 set(A2X_xhtml_OPTS -f chunked -a foam-xhtml11
133 "--xsl-file=${CMAKE_BINARY_DIR}/data/asciidoc/docbook-xsl/chunked.xsl"
134 "${A2X_xhtml_xslt_OPTS}")
136 if(NOT FOAM_ENABLE_MATHJAX)
137 list(APPEND A2X_xhtml_OPTS -a foam-use-pngmath)
141 "${CMAKE_CURRENT_BINARY_DIR}/../UserGuide.chunked/index.html")
143 set(A2X_xhtml_EXTRA_DEPS
144 "${CMAKE_BINARY_DIR}/data/asciidoc/docbook-xsl/chunked.xsl"
145 "${CMAKE_BINARY_DIR}/data/asciidoc/docbook-xsl/orig-chunked.xsl"
146 "${CMAKE_BINARY_DIR}/data/asciidoc/docbook-xsl/common.xsl"
147 "${CMAKE_BINARY_DIR}/data/asciidoc/docbook-xsl/orig-common.xsl")
149 set(ADOC_xhtml_MAIN_CONF "${CMAKE_BINARY_DIR}/data/asciidoc/chunked.conf")
150 set(ADOC_xhtml_ALL_CONF "${ADOC_xhtml_MAIN_CONF}"
151 "${CMAKE_BINARY_DIR}/data/asciidoc/common.conf"
152 "${CMAKE_BINARY_DIR}/data/asciidoc/docbook.conf")
155 "${CMAKE_BINARY_DIR}/data/utilities/foamPNGMathFilter${FOAM_PY_SCRIPT_SUFFIX}")
156 set(CONF_ASCIIDOC_SRCS)
157 foreach(f IN LISTS ASCIIDOC_SRCS)
158 if(FOAM_NEED_PNGMATH)
159 set(ff "${CMAKE_CURRENT_BINARY_DIR}/${f}")
160 list(APPEND CONF_ASCIIDOC_SRCS "${ff}")
161 add_custom_command(OUTPUT "${ff}"
162 COMMAND "${PYTHON_EXECUTABLE}" "${PNGMATH_FILTER}"
163 -m "${CMAKE_CURRENT_BINARY_DIR}/math"
164 -D 120 -o "${ff}" "${CMAKE_CURRENT_SOURCE_DIR}/${f}"
165 DEPENDS "${f}" "${CMAKE_SOURCE_DIR}/data/utilities/foamPNGMathFilter.py.in"
166 COMMENT "Filtering math in ${ff}"
169 list(APPEND CONF_ASCIIDOC_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/${f}")
172 list(GET CONF_ASCIIDOC_SRCS 0 ASCIIDOC_MAIN_SRC)
174 add_custom_target(UserGuides ALL)
175 foreach(fmt IN LISTS FOAM_GUIDES_FORMATS)
176 add_custom_command(OUTPUT "${A2X_${fmt}_OUTPUT}"
177 COMMAND "${A2X_EXECUTABLE}" ${A2X_OPTS} ${A2X_${fmt}_OPTS} -d book
178 -D "${CMAKE_CURRENT_BINARY_DIR}/.." --icons
179 -a builddir=${CMAKE_CURRENT_BINARY_DIR}/
180 "--asciidoc-opts=-f ${ADOC_${fmt}_MAIN_CONF}"
181 -r "${CMAKE_CURRENT_BINARY_DIR}"
183 "${ASCIIDOC_MAIN_SRC}"
184 DEPENDS ${CONF_ASCIIDOC_SRCS} ${IMAGES} ${ASY_OUTPUT} ${COPY_OUTPUT}
185 ${ADOC_${fmt}_ALL_CONF}
186 ${A2X_${fmt}_EXTRA_DEPS}
187 WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
188 COMMENT "Generating ${fmt} version of the UserGuide"
190 add_custom_target(UserGuide-${fmt}
191 DEPENDS "${A2X_${fmt}_OUTPUT}")
192 add_dependencies(UserGuides UserGuide-${fmt})
195 if(FOAM_ENABLE_PDF_GUIDES)
196 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/../UserGuide.pdf
197 DESTINATION ${FOAM_INSTALL_DOC_PATH} COMPONENT doc
201 if(FOAM_ENABLE_XHTML_GUIDES)
202 add_dependencies(UserGuide-xhtml MathJax)
203 install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/../UserGuide.chunked/
204 DESTINATION ${FOAM_INSTALL_DOC_PATH}/html/UserGuide COMPONENT doc
208 # ------------------------- vim: set sw=2 sts=2 et: --------------- end-of-file