Commit | Line | Data |
---|---|---|
d1dab1d2 | 1 | # =========================================================================== |
6e5d9dfa | 2 | # https://www.gnu.org/software/autoconf-archive/ax_prog_doxygen.html |
d1dab1d2 PP |
3 | # =========================================================================== |
4 | # | |
5 | # SYNOPSIS | |
6 | # | |
7 | # DX_INIT_DOXYGEN(PROJECT-NAME, [DOXYFILE-PATH], [OUTPUT-DIR], ...) | |
8 | # DX_DOXYGEN_FEATURE(ON|OFF) | |
9 | # DX_DOT_FEATURE(ON|OFF) | |
10 | # DX_HTML_FEATURE(ON|OFF) | |
11 | # DX_CHM_FEATURE(ON|OFF) | |
12 | # DX_CHI_FEATURE(ON|OFF) | |
13 | # DX_MAN_FEATURE(ON|OFF) | |
14 | # DX_RTF_FEATURE(ON|OFF) | |
15 | # DX_XML_FEATURE(ON|OFF) | |
16 | # DX_PDF_FEATURE(ON|OFF) | |
17 | # DX_PS_FEATURE(ON|OFF) | |
18 | # | |
19 | # DESCRIPTION | |
20 | # | |
21 | # The DX_*_FEATURE macros control the default setting for the given | |
22 | # Doxygen feature. Supported features are 'DOXYGEN' itself, 'DOT' for | |
23 | # generating graphics, 'HTML' for plain HTML, 'CHM' for compressed HTML | |
6e5d9dfa | 24 | # help (for MS users), 'CHI' for generating a separate .chi file by the |
d1dab1d2 PP |
25 | # .chm file, and 'MAN', 'RTF', 'XML', 'PDF' and 'PS' for the appropriate |
26 | # output formats. The environment variable DOXYGEN_PAPER_SIZE may be | |
27 | # specified to override the default 'a4wide' paper size. | |
28 | # | |
29 | # By default, HTML, PDF and PS documentation is generated as this seems to | |
30 | # be the most popular and portable combination. MAN pages created by | |
31 | # Doxygen are usually problematic, though by picking an appropriate subset | |
32 | # and doing some massaging they might be better than nothing. CHM and RTF | |
33 | # are specific for MS (note that you can't generate both HTML and CHM at | |
34 | # the same time). The XML is rather useless unless you apply specialized | |
35 | # post-processing to it. | |
36 | # | |
37 | # The macros mainly control the default state of the feature. The use can | |
38 | # override the default by specifying --enable or --disable. The macros | |
39 | # ensure that contradictory flags are not given (e.g., | |
40 | # --enable-doxygen-html and --enable-doxygen-chm, | |
41 | # --enable-doxygen-anything with --disable-doxygen, etc.) Finally, each | |
42 | # feature will be automatically disabled (with a warning) if the required | |
43 | # programs are missing. | |
44 | # | |
45 | # Once all the feature defaults have been specified, call DX_INIT_DOXYGEN | |
46 | # with the following parameters: a one-word name for the project for use | |
47 | # as a filename base etc., an optional configuration file name (the | |
48 | # default is '$(srcdir)/Doxyfile', the same as Doxygen's default), and an | |
49 | # optional output directory name (the default is 'doxygen-doc'). To run | |
50 | # doxygen multiple times for different configuration files and output | |
51 | # directories provide more parameters: the second, forth, sixth, etc | |
52 | # parameter are configuration file names and the third, fifth, seventh, | |
53 | # etc parameter are output directories. No checking is done to catch | |
54 | # duplicates. | |
55 | # | |
56 | # Automake Support | |
57 | # | |
58 | # The DX_RULES substitution can be used to add all needed rules to the | |
59 | # Makefile. Note that this is a substitution without being a variable: | |
60 | # only the @DX_RULES@ syntax will work. | |
61 | # | |
62 | # The provided targets are: | |
63 | # | |
64 | # doxygen-doc: Generate all doxygen documentation. | |
65 | # | |
66 | # doxygen-run: Run doxygen, which will generate some of the | |
67 | # documentation (HTML, CHM, CHI, MAN, RTF, XML) | |
68 | # but will not do the post processing required | |
69 | # for the rest of it (PS, PDF). | |
70 | # | |
71 | # doxygen-ps: Generate doxygen PostScript documentation. | |
72 | # | |
73 | # doxygen-pdf: Generate doxygen PDF documentation. | |
74 | # | |
75 | # Note that by default these are not integrated into the automake targets. | |
76 | # If doxygen is used to generate man pages, you can achieve this | |
77 | # integration by setting man3_MANS to the list of man pages generated and | |
78 | # then adding the dependency: | |
79 | # | |
80 | # $(man3_MANS): doxygen-doc | |
81 | # | |
82 | # This will cause make to run doxygen and generate all the documentation. | |
83 | # | |
84 | # The following variable is intended for use in Makefile.am: | |
85 | # | |
86 | # DX_CLEANFILES = everything to clean. | |
87 | # | |
88 | # Then add this variable to MOSTLYCLEANFILES. | |
89 | # | |
90 | # LICENSE | |
91 | # | |
92 | # Copyright (c) 2009 Oren Ben-Kiki <oren@ben-kiki.org> | |
93 | # Copyright (c) 2015 Olaf Mandel <olaf@mandel.name> | |
94 | # | |
95 | # Copying and distribution of this file, with or without modification, are | |
96 | # permitted in any medium without royalty provided the copyright notice | |
97 | # and this notice are preserved. This file is offered as-is, without any | |
98 | # warranty. | |
99 | ||
7fcdef32 | 100 | #serial 24 |
d1dab1d2 PP |
101 | |
102 | ## ----------## | |
103 | ## Defaults. ## | |
104 | ## ----------## | |
105 | ||
106 | DX_ENV="" | |
107 | AC_DEFUN([DX_FEATURE_doc], ON) | |
108 | AC_DEFUN([DX_FEATURE_dot], OFF) | |
109 | AC_DEFUN([DX_FEATURE_man], OFF) | |
110 | AC_DEFUN([DX_FEATURE_html], ON) | |
111 | AC_DEFUN([DX_FEATURE_chm], OFF) | |
112 | AC_DEFUN([DX_FEATURE_chi], OFF) | |
113 | AC_DEFUN([DX_FEATURE_rtf], OFF) | |
114 | AC_DEFUN([DX_FEATURE_xml], OFF) | |
115 | AC_DEFUN([DX_FEATURE_pdf], ON) | |
116 | AC_DEFUN([DX_FEATURE_ps], ON) | |
117 | ||
118 | ## --------------- ## | |
119 | ## Private macros. ## | |
120 | ## --------------- ## | |
121 | ||
122 | # DX_ENV_APPEND(VARIABLE, VALUE) | |
123 | # ------------------------------ | |
124 | # Append VARIABLE="VALUE" to DX_ENV for invoking doxygen and add it | |
125 | # as a substitution (but not a Makefile variable). The substitution | |
126 | # is skipped if the variable name is VERSION. | |
127 | AC_DEFUN([DX_ENV_APPEND], | |
128 | [AC_SUBST([DX_ENV], ["$DX_ENV $1='$2'"])dnl | |
129 | m4_if([$1], [VERSION], [], [AC_SUBST([$1], [$2])dnl | |
130 | AM_SUBST_NOTMAKE([$1])])dnl | |
131 | ]) | |
132 | ||
133 | # DX_DIRNAME_EXPR | |
134 | # --------------- | |
135 | # Expand into a shell expression prints the directory part of a path. | |
136 | AC_DEFUN([DX_DIRNAME_EXPR], | |
137 | [[expr ".$1" : '\(\.\)[^/]*$' \| "x$1" : 'x\(.*\)/[^/]*$']]) | |
138 | ||
139 | # DX_IF_FEATURE(FEATURE, IF-ON, IF-OFF) | |
140 | # ------------------------------------- | |
141 | # Expands according to the M4 (static) status of the feature. | |
142 | AC_DEFUN([DX_IF_FEATURE], [ifelse(DX_FEATURE_$1, ON, [$2], [$3])]) | |
143 | ||
144 | # DX_REQUIRE_PROG(VARIABLE, PROGRAM) | |
145 | # ---------------------------------- | |
146 | # Require the specified program to be found for the DX_CURRENT_FEATURE to work. | |
147 | AC_DEFUN([DX_REQUIRE_PROG], [ | |
148 | AC_PATH_TOOL([$1], [$2]) | |
149 | if test "$DX_FLAG_[]DX_CURRENT_FEATURE$$1" = 1; then | |
150 | AC_MSG_WARN([$2 not found - will not DX_CURRENT_DESCRIPTION]) | |
151 | AC_SUBST(DX_FLAG_[]DX_CURRENT_FEATURE, 0) | |
152 | fi | |
153 | ]) | |
154 | ||
155 | # DX_TEST_FEATURE(FEATURE) | |
156 | # ------------------------ | |
157 | # Expand to a shell expression testing whether the feature is active. | |
158 | AC_DEFUN([DX_TEST_FEATURE], [test "$DX_FLAG_$1" = 1]) | |
159 | ||
160 | # DX_CHECK_DEPEND(REQUIRED_FEATURE, REQUIRED_STATE) | |
161 | # ------------------------------------------------- | |
162 | # Verify that a required features has the right state before trying to turn on | |
163 | # the DX_CURRENT_FEATURE. | |
164 | AC_DEFUN([DX_CHECK_DEPEND], [ | |
165 | test "$DX_FLAG_$1" = "$2" \ | |
166 | || AC_MSG_ERROR([doxygen-DX_CURRENT_FEATURE ifelse([$2], 1, | |
7fcdef32 | 167 | requires, contradicts) doxygen-$1]) |
d1dab1d2 PP |
168 | ]) |
169 | ||
170 | # DX_CLEAR_DEPEND(FEATURE, REQUIRED_FEATURE, REQUIRED_STATE) | |
171 | # ---------------------------------------------------------- | |
172 | # Turn off the DX_CURRENT_FEATURE if the required feature is off. | |
173 | AC_DEFUN([DX_CLEAR_DEPEND], [ | |
174 | test "$DX_FLAG_$1" = "$2" || AC_SUBST(DX_FLAG_[]DX_CURRENT_FEATURE, 0) | |
175 | ]) | |
176 | ||
177 | # DX_FEATURE_ARG(FEATURE, DESCRIPTION, | |
178 | # CHECK_DEPEND, CLEAR_DEPEND, | |
179 | # REQUIRE, DO-IF-ON, DO-IF-OFF) | |
180 | # -------------------------------------------- | |
181 | # Parse the command-line option controlling a feature. CHECK_DEPEND is called | |
182 | # if the user explicitly turns the feature on (and invokes DX_CHECK_DEPEND), | |
183 | # otherwise CLEAR_DEPEND is called to turn off the default state if a required | |
184 | # feature is disabled (using DX_CLEAR_DEPEND). REQUIRE performs additional | |
185 | # requirement tests (DX_REQUIRE_PROG). Finally, an automake flag is set and | |
186 | # DO-IF-ON or DO-IF-OFF are called according to the final state of the feature. | |
187 | AC_DEFUN([DX_ARG_ABLE], [ | |
188 | AC_DEFUN([DX_CURRENT_FEATURE], [$1]) | |
189 | AC_DEFUN([DX_CURRENT_DESCRIPTION], [$2]) | |
190 | AC_ARG_ENABLE(doxygen-$1, | |
191 | [AS_HELP_STRING(DX_IF_FEATURE([$1], [--disable-doxygen-$1], | |
192 | [--enable-doxygen-$1]), | |
193 | DX_IF_FEATURE([$1], [don't $2], [$2]))], | |
194 | [ | |
195 | case "$enableval" in | |
196 | #( | |
197 | y|Y|yes|Yes|YES) | |
198 | AC_SUBST([DX_FLAG_$1], 1) | |
199 | $3 | |
200 | ;; #( | |
201 | n|N|no|No|NO) | |
202 | AC_SUBST([DX_FLAG_$1], 0) | |
203 | ;; #( | |
204 | *) | |
205 | AC_MSG_ERROR([invalid value '$enableval' given to doxygen-$1]) | |
206 | ;; | |
207 | esac | |
208 | ], [ | |
209 | AC_SUBST([DX_FLAG_$1], [DX_IF_FEATURE([$1], 1, 0)]) | |
210 | $4 | |
211 | ]) | |
212 | if DX_TEST_FEATURE([$1]); then | |
213 | $5 | |
214 | : | |
215 | fi | |
216 | if DX_TEST_FEATURE([$1]); then | |
217 | $6 | |
218 | : | |
219 | else | |
220 | $7 | |
221 | : | |
222 | fi | |
223 | ]) | |
224 | ||
225 | ## -------------- ## | |
226 | ## Public macros. ## | |
227 | ## -------------- ## | |
228 | ||
229 | # DX_XXX_FEATURE(DEFAULT_STATE) | |
230 | # ----------------------------- | |
231 | AC_DEFUN([DX_DOXYGEN_FEATURE], [AC_DEFUN([DX_FEATURE_doc], [$1])]) | |
232 | AC_DEFUN([DX_DOT_FEATURE], [AC_DEFUN([DX_FEATURE_dot], [$1])]) | |
233 | AC_DEFUN([DX_MAN_FEATURE], [AC_DEFUN([DX_FEATURE_man], [$1])]) | |
234 | AC_DEFUN([DX_HTML_FEATURE], [AC_DEFUN([DX_FEATURE_html], [$1])]) | |
235 | AC_DEFUN([DX_CHM_FEATURE], [AC_DEFUN([DX_FEATURE_chm], [$1])]) | |
236 | AC_DEFUN([DX_CHI_FEATURE], [AC_DEFUN([DX_FEATURE_chi], [$1])]) | |
237 | AC_DEFUN([DX_RTF_FEATURE], [AC_DEFUN([DX_FEATURE_rtf], [$1])]) | |
238 | AC_DEFUN([DX_XML_FEATURE], [AC_DEFUN([DX_FEATURE_xml], [$1])]) | |
239 | AC_DEFUN([DX_XML_FEATURE], [AC_DEFUN([DX_FEATURE_xml], [$1])]) | |
240 | AC_DEFUN([DX_PDF_FEATURE], [AC_DEFUN([DX_FEATURE_pdf], [$1])]) | |
241 | AC_DEFUN([DX_PS_FEATURE], [AC_DEFUN([DX_FEATURE_ps], [$1])]) | |
242 | ||
243 | # DX_INIT_DOXYGEN(PROJECT, [CONFIG-FILE], [OUTPUT-DOC-DIR], ...) | |
244 | # -------------------------------------------------------------- | |
245 | # PROJECT also serves as the base name for the documentation files. | |
246 | # The default CONFIG-FILE is "$(srcdir)/Doxyfile" and OUTPUT-DOC-DIR is | |
247 | # "doxygen-doc". | |
248 | # More arguments are interpreted as interleaved CONFIG-FILE and | |
249 | # OUTPUT-DOC-DIR values. | |
250 | AC_DEFUN([DX_INIT_DOXYGEN], [ | |
251 | ||
252 | # Files: | |
253 | AC_SUBST([DX_PROJECT], [$1]) | |
254 | AC_SUBST([DX_CONFIG], ['ifelse([$2], [], [$(srcdir)/Doxyfile], [$2])']) | |
255 | AC_SUBST([DX_DOCDIR], ['ifelse([$3], [], [doxygen-doc], [$3])']) | |
256 | m4_if(m4_eval(3 < m4_count($@)), 1, [m4_for([DX_i], 4, m4_count($@), 2, | |
257 | [AC_SUBST([DX_CONFIG]m4_eval(DX_i[/2]), | |
258 | 'm4_default_nblank_quoted(m4_argn(DX_i, $@), | |
259 | [$(srcdir)/Doxyfile])')])])dnl | |
260 | m4_if(m4_eval(3 < m4_count($@)), 1, [m4_for([DX_i], 5, m4_count($@,), 2, | |
261 | [AC_SUBST([DX_DOCDIR]m4_eval([(]DX_i[-1)/2]), | |
262 | 'm4_default_nblank_quoted(m4_argn(DX_i, $@), | |
263 | [doxygen-doc])')])])dnl | |
264 | m4_define([DX_loop], m4_dquote(m4_if(m4_eval(3 < m4_count($@)), 1, | |
265 | [m4_for([DX_i], 4, m4_count($@), 2, [, m4_eval(DX_i[/2])])], | |
266 | [])))dnl | |
267 | ||
268 | # Environment variables used inside doxygen.cfg: | |
269 | DX_ENV_APPEND(SRCDIR, $srcdir) | |
270 | DX_ENV_APPEND(PROJECT, $DX_PROJECT) | |
271 | DX_ENV_APPEND(VERSION, $PACKAGE_VERSION) | |
272 | ||
273 | # Doxygen itself: | |
274 | DX_ARG_ABLE(doc, [generate any doxygen documentation], | |
275 | [], | |
276 | [], | |
277 | [DX_REQUIRE_PROG([DX_DOXYGEN], doxygen) | |
278 | DX_REQUIRE_PROG([DX_PERL], perl)], | |
279 | [DX_ENV_APPEND(PERL_PATH, $DX_PERL)]) | |
280 | ||
281 | # Dot for graphics: | |
282 | DX_ARG_ABLE(dot, [generate graphics for doxygen documentation], | |
283 | [DX_CHECK_DEPEND(doc, 1)], | |
284 | [DX_CLEAR_DEPEND(doc, 1)], | |
285 | [DX_REQUIRE_PROG([DX_DOT], dot)], | |
286 | [DX_ENV_APPEND(HAVE_DOT, YES) | |
287 | DX_ENV_APPEND(DOT_PATH, [`DX_DIRNAME_EXPR($DX_DOT)`])], | |
288 | [DX_ENV_APPEND(HAVE_DOT, NO)]) | |
289 | ||
290 | # Man pages generation: | |
291 | DX_ARG_ABLE(man, [generate doxygen manual pages], | |
292 | [DX_CHECK_DEPEND(doc, 1)], | |
293 | [DX_CLEAR_DEPEND(doc, 1)], | |
294 | [], | |
295 | [DX_ENV_APPEND(GENERATE_MAN, YES)], | |
296 | [DX_ENV_APPEND(GENERATE_MAN, NO)]) | |
297 | ||
298 | # RTF file generation: | |
299 | DX_ARG_ABLE(rtf, [generate doxygen RTF documentation], | |
300 | [DX_CHECK_DEPEND(doc, 1)], | |
301 | [DX_CLEAR_DEPEND(doc, 1)], | |
302 | [], | |
303 | [DX_ENV_APPEND(GENERATE_RTF, YES)], | |
304 | [DX_ENV_APPEND(GENERATE_RTF, NO)]) | |
305 | ||
306 | # XML file generation: | |
307 | DX_ARG_ABLE(xml, [generate doxygen XML documentation], | |
308 | [DX_CHECK_DEPEND(doc, 1)], | |
309 | [DX_CLEAR_DEPEND(doc, 1)], | |
310 | [], | |
311 | [DX_ENV_APPEND(GENERATE_XML, YES)], | |
312 | [DX_ENV_APPEND(GENERATE_XML, NO)]) | |
313 | ||
314 | # (Compressed) HTML help generation: | |
315 | DX_ARG_ABLE(chm, [generate doxygen compressed HTML help documentation], | |
316 | [DX_CHECK_DEPEND(doc, 1)], | |
317 | [DX_CLEAR_DEPEND(doc, 1)], | |
318 | [DX_REQUIRE_PROG([DX_HHC], hhc)], | |
319 | [DX_ENV_APPEND(HHC_PATH, $DX_HHC) | |
320 | DX_ENV_APPEND(GENERATE_HTML, YES) | |
321 | DX_ENV_APPEND(GENERATE_HTMLHELP, YES)], | |
322 | [DX_ENV_APPEND(GENERATE_HTMLHELP, NO)]) | |
323 | ||
6e5d9dfa MJ |
324 | # Separate CHI file generation. |
325 | DX_ARG_ABLE(chi, [generate doxygen separate compressed HTML help index file], | |
d1dab1d2 PP |
326 | [DX_CHECK_DEPEND(chm, 1)], |
327 | [DX_CLEAR_DEPEND(chm, 1)], | |
328 | [], | |
329 | [DX_ENV_APPEND(GENERATE_CHI, YES)], | |
330 | [DX_ENV_APPEND(GENERATE_CHI, NO)]) | |
331 | ||
332 | # Plain HTML pages generation: | |
333 | DX_ARG_ABLE(html, [generate doxygen plain HTML documentation], | |
334 | [DX_CHECK_DEPEND(doc, 1) DX_CHECK_DEPEND(chm, 0)], | |
335 | [DX_CLEAR_DEPEND(doc, 1) DX_CLEAR_DEPEND(chm, 0)], | |
336 | [], | |
337 | [DX_ENV_APPEND(GENERATE_HTML, YES)], | |
338 | [DX_TEST_FEATURE(chm) || DX_ENV_APPEND(GENERATE_HTML, NO)]) | |
339 | ||
340 | # PostScript file generation: | |
341 | DX_ARG_ABLE(ps, [generate doxygen PostScript documentation], | |
342 | [DX_CHECK_DEPEND(doc, 1)], | |
343 | [DX_CLEAR_DEPEND(doc, 1)], | |
344 | [DX_REQUIRE_PROG([DX_LATEX], latex) | |
345 | DX_REQUIRE_PROG([DX_MAKEINDEX], makeindex) | |
346 | DX_REQUIRE_PROG([DX_DVIPS], dvips) | |
347 | DX_REQUIRE_PROG([DX_EGREP], egrep)]) | |
348 | ||
349 | # PDF file generation: | |
350 | DX_ARG_ABLE(pdf, [generate doxygen PDF documentation], | |
351 | [DX_CHECK_DEPEND(doc, 1)], | |
352 | [DX_CLEAR_DEPEND(doc, 1)], | |
353 | [DX_REQUIRE_PROG([DX_PDFLATEX], pdflatex) | |
354 | DX_REQUIRE_PROG([DX_MAKEINDEX], makeindex) | |
355 | DX_REQUIRE_PROG([DX_EGREP], egrep)]) | |
356 | ||
357 | # LaTeX generation for PS and/or PDF: | |
358 | if DX_TEST_FEATURE(ps) || DX_TEST_FEATURE(pdf); then | |
359 | DX_ENV_APPEND(GENERATE_LATEX, YES) | |
360 | else | |
361 | DX_ENV_APPEND(GENERATE_LATEX, NO) | |
362 | fi | |
363 | ||
364 | # Paper size for PS and/or PDF: | |
365 | AC_ARG_VAR(DOXYGEN_PAPER_SIZE, | |
366 | [a4wide (default), a4, letter, legal or executive]) | |
367 | case "$DOXYGEN_PAPER_SIZE" in | |
368 | #( | |
369 | "") | |
370 | AC_SUBST(DOXYGEN_PAPER_SIZE, "") | |
371 | ;; #( | |
372 | a4wide|a4|letter|legal|executive) | |
373 | DX_ENV_APPEND(PAPER_SIZE, $DOXYGEN_PAPER_SIZE) | |
374 | ;; #( | |
375 | *) | |
376 | AC_MSG_ERROR([unknown DOXYGEN_PAPER_SIZE='$DOXYGEN_PAPER_SIZE']) | |
377 | ;; | |
378 | esac | |
379 | ||
380 | # Rules: | |
381 | AS_IF([[test $DX_FLAG_html -eq 1]], | |
382 | [[DX_SNIPPET_html="## ------------------------------- ## | |
383 | ## Rules specific for HTML output. ## | |
384 | ## ------------------------------- ## | |
385 | ||
386 | DX_CLEAN_HTML = \$(DX_DOCDIR)/html]dnl | |
387 | m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\ | |
388 | \$(DX_DOCDIR]DX_i[)/html]])[ | |
389 | ||
390 | "]], | |
391 | [[DX_SNIPPET_html=""]]) | |
392 | AS_IF([[test $DX_FLAG_chi -eq 1]], | |
393 | [[DX_SNIPPET_chi=" | |
394 | DX_CLEAN_CHI = \$(DX_DOCDIR)/\$(PACKAGE).chi]dnl | |
395 | m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\ | |
396 | \$(DX_DOCDIR]DX_i[)/\$(PACKAGE).chi]])["]], | |
397 | [[DX_SNIPPET_chi=""]]) | |
398 | AS_IF([[test $DX_FLAG_chm -eq 1]], | |
399 | [[DX_SNIPPET_chm="## ------------------------------ ## | |
400 | ## Rules specific for CHM output. ## | |
401 | ## ------------------------------ ## | |
402 | ||
403 | DX_CLEAN_CHM = \$(DX_DOCDIR)/chm]dnl | |
404 | m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\ | |
405 | \$(DX_DOCDIR]DX_i[)/chm]])[\ | |
406 | ${DX_SNIPPET_chi} | |
407 | ||
408 | "]], | |
409 | [[DX_SNIPPET_chm=""]]) | |
410 | AS_IF([[test $DX_FLAG_man -eq 1]], | |
411 | [[DX_SNIPPET_man="## ------------------------------ ## | |
412 | ## Rules specific for MAN output. ## | |
413 | ## ------------------------------ ## | |
414 | ||
415 | DX_CLEAN_MAN = \$(DX_DOCDIR)/man]dnl | |
416 | m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\ | |
417 | \$(DX_DOCDIR]DX_i[)/man]])[ | |
418 | ||
419 | "]], | |
420 | [[DX_SNIPPET_man=""]]) | |
421 | AS_IF([[test $DX_FLAG_rtf -eq 1]], | |
422 | [[DX_SNIPPET_rtf="## ------------------------------ ## | |
423 | ## Rules specific for RTF output. ## | |
424 | ## ------------------------------ ## | |
425 | ||
426 | DX_CLEAN_RTF = \$(DX_DOCDIR)/rtf]dnl | |
427 | m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\ | |
428 | \$(DX_DOCDIR]DX_i[)/rtf]])[ | |
429 | ||
430 | "]], | |
431 | [[DX_SNIPPET_rtf=""]]) | |
432 | AS_IF([[test $DX_FLAG_xml -eq 1]], | |
433 | [[DX_SNIPPET_xml="## ------------------------------ ## | |
434 | ## Rules specific for XML output. ## | |
435 | ## ------------------------------ ## | |
436 | ||
437 | DX_CLEAN_XML = \$(DX_DOCDIR)/xml]dnl | |
438 | m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\ | |
439 | \$(DX_DOCDIR]DX_i[)/xml]])[ | |
440 | ||
441 | "]], | |
442 | [[DX_SNIPPET_xml=""]]) | |
443 | AS_IF([[test $DX_FLAG_ps -eq 1]], | |
444 | [[DX_SNIPPET_ps="## ----------------------------- ## | |
445 | ## Rules specific for PS output. ## | |
446 | ## ----------------------------- ## | |
447 | ||
448 | DX_CLEAN_PS = \$(DX_DOCDIR)/\$(PACKAGE).ps]dnl | |
449 | m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\ | |
450 | \$(DX_DOCDIR]DX_i[)/\$(PACKAGE).ps]])[ | |
451 | ||
452 | DX_PS_GOAL = doxygen-ps | |
453 | ||
454 | doxygen-ps: \$(DX_CLEAN_PS) | |
455 | ||
456 | ]m4_foreach([DX_i], [DX_loop], | |
457 | [[\$(DX_DOCDIR]DX_i[)/\$(PACKAGE).ps: \$(DX_DOCDIR]DX_i[)/\$(PACKAGE).tag | |
458 | \$(DX_V_LATEX)cd \$(DX_DOCDIR]DX_i[)/latex; \\ | |
459 | rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \\ | |
460 | \$(DX_LATEX) refman.tex; \\ | |
461 | \$(DX_MAKEINDEX) refman.idx; \\ | |
462 | \$(DX_LATEX) refman.tex; \\ | |
463 | countdown=5; \\ | |
464 | while \$(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \\ | |
465 | refman.log > /dev/null 2>&1 \\ | |
466 | && test \$\$countdown -gt 0; do \\ | |
467 | \$(DX_LATEX) refman.tex; \\ | |
468 | countdown=\`expr \$\$countdown - 1\`; \\ | |
469 | done; \\ | |
470 | \$(DX_DVIPS) -o ../\$(PACKAGE).ps refman.dvi | |
471 | ||
472 | ]])["]], | |
473 | [[DX_SNIPPET_ps=""]]) | |
474 | AS_IF([[test $DX_FLAG_pdf -eq 1]], | |
475 | [[DX_SNIPPET_pdf="## ------------------------------ ## | |
476 | ## Rules specific for PDF output. ## | |
477 | ## ------------------------------ ## | |
478 | ||
479 | DX_CLEAN_PDF = \$(DX_DOCDIR)/\$(PACKAGE).pdf]dnl | |
480 | m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\ | |
481 | \$(DX_DOCDIR]DX_i[)/\$(PACKAGE).pdf]])[ | |
482 | ||
483 | DX_PDF_GOAL = doxygen-pdf | |
484 | ||
485 | doxygen-pdf: \$(DX_CLEAN_PDF) | |
486 | ||
487 | ]m4_foreach([DX_i], [DX_loop], | |
488 | [[\$(DX_DOCDIR]DX_i[)/\$(PACKAGE).pdf: \$(DX_DOCDIR]DX_i[)/\$(PACKAGE).tag | |
489 | \$(DX_V_LATEX)cd \$(DX_DOCDIR]DX_i[)/latex; \\ | |
490 | rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \\ | |
491 | \$(DX_PDFLATEX) refman.tex; \\ | |
492 | \$(DX_MAKEINDEX) refman.idx; \\ | |
493 | \$(DX_PDFLATEX) refman.tex; \\ | |
494 | countdown=5; \\ | |
495 | while \$(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \\ | |
496 | refman.log > /dev/null 2>&1 \\ | |
497 | && test \$\$countdown -gt 0; do \\ | |
498 | \$(DX_PDFLATEX) refman.tex; \\ | |
499 | countdown=\`expr \$\$countdown - 1\`; \\ | |
500 | done; \\ | |
501 | mv refman.pdf ../\$(PACKAGE).pdf | |
502 | ||
503 | ]])["]], | |
504 | [[DX_SNIPPET_pdf=""]]) | |
505 | AS_IF([[test $DX_FLAG_ps -eq 1 -o $DX_FLAG_pdf -eq 1]], | |
506 | [[DX_SNIPPET_latex="## ------------------------------------------------- ## | |
507 | ## Rules specific for LaTeX (shared for PS and PDF). ## | |
508 | ## ------------------------------------------------- ## | |
509 | ||
510 | DX_V_LATEX = \$(_DX_v_LATEX_\$(V)) | |
511 | _DX_v_LATEX_ = \$(_DX_v_LATEX_\$(AM_DEFAULT_VERBOSITY)) | |
512 | _DX_v_LATEX_0 = @echo \" LATEX \" \$][@; | |
513 | ||
514 | DX_CLEAN_LATEX = \$(DX_DOCDIR)/latex]dnl | |
515 | m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\ | |
516 | \$(DX_DOCDIR]DX_i[)/latex]])[ | |
517 | ||
518 | "]], | |
519 | [[DX_SNIPPET_latex=""]]) | |
520 | ||
521 | AS_IF([[test $DX_FLAG_doc -eq 1]], | |
522 | [[DX_SNIPPET_doc="## --------------------------------- ## | |
523 | ## Format-independent Doxygen rules. ## | |
524 | ## --------------------------------- ## | |
525 | ||
526 | ${DX_SNIPPET_html}\ | |
527 | ${DX_SNIPPET_chm}\ | |
528 | ${DX_SNIPPET_man}\ | |
529 | ${DX_SNIPPET_rtf}\ | |
530 | ${DX_SNIPPET_xml}\ | |
531 | ${DX_SNIPPET_ps}\ | |
532 | ${DX_SNIPPET_pdf}\ | |
533 | ${DX_SNIPPET_latex}\ | |
534 | DX_V_DXGEN = \$(_DX_v_DXGEN_\$(V)) | |
535 | _DX_v_DXGEN_ = \$(_DX_v_DXGEN_\$(AM_DEFAULT_VERBOSITY)) | |
536 | _DX_v_DXGEN_0 = @echo \" DXGEN \" \$<; | |
537 | ||
538 | .PHONY: doxygen-run doxygen-doc \$(DX_PS_GOAL) \$(DX_PDF_GOAL) | |
539 | ||
540 | .INTERMEDIATE: doxygen-run \$(DX_PS_GOAL) \$(DX_PDF_GOAL) | |
541 | ||
542 | doxygen-run:]m4_foreach([DX_i], [DX_loop], | |
543 | [[ \$(DX_DOCDIR]DX_i[)/\$(PACKAGE).tag]])[ | |
544 | ||
545 | doxygen-doc: doxygen-run \$(DX_PS_GOAL) \$(DX_PDF_GOAL) | |
546 | ||
547 | ]m4_foreach([DX_i], [DX_loop], | |
548 | [[\$(DX_DOCDIR]DX_i[)/\$(PACKAGE).tag: \$(DX_CONFIG]DX_i[) \$(pkginclude_HEADERS) | |
549 | \$(A""M_V_at)rm -rf \$(DX_DOCDIR]DX_i[) | |
550 | \$(DX_V_DXGEN)\$(DX_ENV) DOCDIR=\$(DX_DOCDIR]DX_i[) \$(DX_DOXYGEN) \$(DX_CONFIG]DX_i[) | |
551 | \$(A""M_V_at)echo Timestamp >\$][@ | |
552 | ||
553 | ]])dnl | |
554 | [DX_CLEANFILES = \\] | |
555 | m4_foreach([DX_i], [DX_loop], | |
556 | [[ \$(DX_DOCDIR]DX_i[)/doxygen_sqlite3.db \\ | |
557 | \$(DX_DOCDIR]DX_i[)/\$(PACKAGE).tag \\ | |
558 | ]])dnl | |
559 | [ -r \\ | |
560 | \$(DX_CLEAN_HTML) \\ | |
561 | \$(DX_CLEAN_CHM) \\ | |
562 | \$(DX_CLEAN_CHI) \\ | |
563 | \$(DX_CLEAN_MAN) \\ | |
564 | \$(DX_CLEAN_RTF) \\ | |
565 | \$(DX_CLEAN_XML) \\ | |
566 | \$(DX_CLEAN_PS) \\ | |
567 | \$(DX_CLEAN_PDF) \\ | |
568 | \$(DX_CLEAN_LATEX)"]], | |
569 | [[DX_SNIPPET_doc=""]]) | |
570 | AC_SUBST([DX_RULES], | |
571 | ["${DX_SNIPPET_doc}"])dnl | |
572 | AM_SUBST_NOTMAKE([DX_RULES]) | |
573 | ||
574 | #For debugging: | |
575 | #echo DX_FLAG_doc=$DX_FLAG_doc | |
576 | #echo DX_FLAG_dot=$DX_FLAG_dot | |
577 | #echo DX_FLAG_man=$DX_FLAG_man | |
578 | #echo DX_FLAG_html=$DX_FLAG_html | |
579 | #echo DX_FLAG_chm=$DX_FLAG_chm | |
580 | #echo DX_FLAG_chi=$DX_FLAG_chi | |
581 | #echo DX_FLAG_rtf=$DX_FLAG_rtf | |
582 | #echo DX_FLAG_xml=$DX_FLAG_xml | |
583 | #echo DX_FLAG_pdf=$DX_FLAG_pdf | |
584 | #echo DX_FLAG_ps=$DX_FLAG_ps | |
585 | #echo DX_ENV=$DX_ENV | |
586 | ]) |