Annotation of embedaddon/libnet/m4/ax_prog_doxygen.m4, revision 1.1.1.1
1.1 misho 1: # ===========================================================================
2: # http://www.gnu.org/software/autoconf-archive/ax_prog_doxygen.html
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
24: # help (for MS users), 'CHI' for generating a seperate .chi file by the
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:
100: #serial 20
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,
167: requires, contradicts) doxygen-DX_CURRENT_FEATURE])
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:
324: # Seperate CHI file generation.
325: DX_ARG_ABLE(chi, [generate doxygen seperate compressed HTML help index file],
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: \$(DX_V_DXGEN)\$(DX_ENV) DOCDIR=\$(DX_DOCDIR]DX_i[) \$(DX_DOXYGEN) \$(DX_CONFIG]DX_i[)
550: \$(A""M_V_at)echo Timestamp >\$][@
551:
552: ]])dnl
553: [DX_CLEANFILES = \\]
554: m4_foreach([DX_i], [DX_loop],
555: [[ \$(DX_DOCDIR]DX_i[)/doxygen_sqlite3.db \\
556: \$(DX_DOCDIR]DX_i[)/\$(PACKAGE).tag \\
557: ]])dnl
558: [ -r \\
559: \$(DX_CLEAN_HTML) \\
560: \$(DX_CLEAN_CHM) \\
561: \$(DX_CLEAN_CHI) \\
562: \$(DX_CLEAN_MAN) \\
563: \$(DX_CLEAN_RTF) \\
564: \$(DX_CLEAN_XML) \\
565: \$(DX_CLEAN_PS) \\
566: \$(DX_CLEAN_PDF) \\
567: \$(DX_CLEAN_LATEX)"]],
568: [[DX_SNIPPET_doc=""]])
569: AC_SUBST([DX_RULES],
570: ["${DX_SNIPPET_doc}"])dnl
571: AM_SUBST_NOTMAKE([DX_RULES])
572:
573: #For debugging:
574: #echo DX_FLAG_doc=$DX_FLAG_doc
575: #echo DX_FLAG_dot=$DX_FLAG_dot
576: #echo DX_FLAG_man=$DX_FLAG_man
577: #echo DX_FLAG_html=$DX_FLAG_html
578: #echo DX_FLAG_chm=$DX_FLAG_chm
579: #echo DX_FLAG_chi=$DX_FLAG_chi
580: #echo DX_FLAG_rtf=$DX_FLAG_rtf
581: #echo DX_FLAG_xml=$DX_FLAG_xml
582: #echo DX_FLAG_pdf=$DX_FLAG_pdf
583: #echo DX_FLAG_ps=$DX_FLAG_ps
584: #echo DX_ENV=$DX_ENV
585: ])
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>