source: mod_gnutls/m4/ax_prog_doxygen.m4 @ e9e89b4

debian/masterdebian/stretch-backportsproxy-ticketupstream
Last change on this file since e9e89b4 was 9a18e30, checked in by Thomas Klute <thomas2.klute@…>, 4 years ago

Support basic Doxygen calls

Doxygen targets are included in the generated Makefile. Note that
Doxygen is not called by any of the default targets, nor have any
comments been updated to work well with the Doxygen format.

  • Property mode set to 100644
File size: 20.0 KB
RevLine 
[9a18e30]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
106DX_ENV=""
107AC_DEFUN([DX_FEATURE_doc],  ON)
108AC_DEFUN([DX_FEATURE_dot],  OFF)
109AC_DEFUN([DX_FEATURE_man],  OFF)
110AC_DEFUN([DX_FEATURE_html], ON)
111AC_DEFUN([DX_FEATURE_chm],  OFF)
112AC_DEFUN([DX_FEATURE_chi],  OFF)
113AC_DEFUN([DX_FEATURE_rtf],  OFF)
114AC_DEFUN([DX_FEATURE_xml],  OFF)
115AC_DEFUN([DX_FEATURE_pdf],  ON)
116AC_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.
127AC_DEFUN([DX_ENV_APPEND],
128[AC_SUBST([DX_ENV], ["$DX_ENV $1='$2'"])dnl
129m4_if([$1], [VERSION], [], [AC_SUBST([$1], [$2])dnl
130AM_SUBST_NOTMAKE([$1])])dnl
131])
132
133# DX_DIRNAME_EXPR
134# ---------------
135# Expand into a shell expression prints the directory part of a path.
136AC_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.
142AC_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.
147AC_DEFUN([DX_REQUIRE_PROG], [
148AC_PATH_TOOL([$1], [$2])
149if 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)
152fi
153])
154
155# DX_TEST_FEATURE(FEATURE)
156# ------------------------
157# Expand to a shell expression testing whether the feature is active.
158AC_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.
164AC_DEFUN([DX_CHECK_DEPEND], [
165test "$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.
173AC_DEFUN([DX_CLEAR_DEPEND], [
174test "$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.
187AC_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                  [
195case "$enableval" in
196#(
197y|Y|yes|Yes|YES)
198    AC_SUBST([DX_FLAG_$1], 1)
199    $3
200;; #(
201n|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;;
207esac
208], [
209AC_SUBST([DX_FLAG_$1], [DX_IF_FEATURE([$1], 1, 0)])
210$4
211])
212if DX_TEST_FEATURE([$1]); then
213    $5
214    :
215fi
216if DX_TEST_FEATURE([$1]); then
217    $6
218    :
219else
220    $7
221    :
222fi
223])
224
225## -------------- ##
226## Public macros. ##
227## -------------- ##
228
229# DX_XXX_FEATURE(DEFAULT_STATE)
230# -----------------------------
231AC_DEFUN([DX_DOXYGEN_FEATURE], [AC_DEFUN([DX_FEATURE_doc],  [$1])])
232AC_DEFUN([DX_DOT_FEATURE],     [AC_DEFUN([DX_FEATURE_dot], [$1])])
233AC_DEFUN([DX_MAN_FEATURE],     [AC_DEFUN([DX_FEATURE_man],  [$1])])
234AC_DEFUN([DX_HTML_FEATURE],    [AC_DEFUN([DX_FEATURE_html], [$1])])
235AC_DEFUN([DX_CHM_FEATURE],     [AC_DEFUN([DX_FEATURE_chm],  [$1])])
236AC_DEFUN([DX_CHI_FEATURE],     [AC_DEFUN([DX_FEATURE_chi],  [$1])])
237AC_DEFUN([DX_RTF_FEATURE],     [AC_DEFUN([DX_FEATURE_rtf],  [$1])])
238AC_DEFUN([DX_XML_FEATURE],     [AC_DEFUN([DX_FEATURE_xml],  [$1])])
239AC_DEFUN([DX_XML_FEATURE],     [AC_DEFUN([DX_FEATURE_xml],  [$1])])
240AC_DEFUN([DX_PDF_FEATURE],     [AC_DEFUN([DX_FEATURE_pdf],  [$1])])
241AC_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.
250AC_DEFUN([DX_INIT_DOXYGEN], [
251
252# Files:
253AC_SUBST([DX_PROJECT], [$1])
254AC_SUBST([DX_CONFIG], ['ifelse([$2], [], [$(srcdir)/Doxyfile], [$2])'])
255AC_SUBST([DX_DOCDIR], ['ifelse([$3], [], [doxygen-doc], [$3])'])
256m4_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
260m4_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
264m4_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:
269DX_ENV_APPEND(SRCDIR, $srcdir)
270DX_ENV_APPEND(PROJECT, $DX_PROJECT)
271DX_ENV_APPEND(VERSION, $PACKAGE_VERSION)
272
273# Doxygen itself:
274DX_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:
282DX_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:
291DX_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:
299DX_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:
307DX_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:
315DX_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.
325DX_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:
333DX_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:
341DX_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:
350DX_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:
358if DX_TEST_FEATURE(ps) || DX_TEST_FEATURE(pdf); then
359    DX_ENV_APPEND(GENERATE_LATEX, YES)
360else
361    DX_ENV_APPEND(GENERATE_LATEX, NO)
362fi
363
364# Paper size for PS and/or PDF:
365AC_ARG_VAR(DOXYGEN_PAPER_SIZE,
366           [a4wide (default), a4, letter, legal or executive])
367case "$DOXYGEN_PAPER_SIZE" in
368#(
369"")
370    AC_SUBST(DOXYGEN_PAPER_SIZE, "")
371;; #(
372a4wide|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;;
378esac
379
380# Rules:
381AS_IF([[test $DX_FLAG_html -eq 1]],
382[[DX_SNIPPET_html="## ------------------------------- ##
383## Rules specific for HTML output. ##
384## ------------------------------- ##
385
386DX_CLEAN_HTML = \$(DX_DOCDIR)/html]dnl
387m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\
388                \$(DX_DOCDIR]DX_i[)/html]])[
389
390"]],
391[[DX_SNIPPET_html=""]])
392AS_IF([[test $DX_FLAG_chi -eq 1]],
393[[DX_SNIPPET_chi="
394DX_CLEAN_CHI = \$(DX_DOCDIR)/\$(PACKAGE).chi]dnl
395m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\
396               \$(DX_DOCDIR]DX_i[)/\$(PACKAGE).chi]])["]],
397[[DX_SNIPPET_chi=""]])
398AS_IF([[test $DX_FLAG_chm -eq 1]],
399[[DX_SNIPPET_chm="## ------------------------------ ##
400## Rules specific for CHM output. ##
401## ------------------------------ ##
402
403DX_CLEAN_CHM = \$(DX_DOCDIR)/chm]dnl
404m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\
405               \$(DX_DOCDIR]DX_i[)/chm]])[\
406${DX_SNIPPET_chi}
407
408"]],
409[[DX_SNIPPET_chm=""]])
410AS_IF([[test $DX_FLAG_man -eq 1]],
411[[DX_SNIPPET_man="## ------------------------------ ##
412## Rules specific for MAN output. ##
413## ------------------------------ ##
414
415DX_CLEAN_MAN = \$(DX_DOCDIR)/man]dnl
416m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\
417               \$(DX_DOCDIR]DX_i[)/man]])[
418
419"]],
420[[DX_SNIPPET_man=""]])
421AS_IF([[test $DX_FLAG_rtf -eq 1]],
422[[DX_SNIPPET_rtf="## ------------------------------ ##
423## Rules specific for RTF output. ##
424## ------------------------------ ##
425
426DX_CLEAN_RTF = \$(DX_DOCDIR)/rtf]dnl
427m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\
428               \$(DX_DOCDIR]DX_i[)/rtf]])[
429
430"]],
431[[DX_SNIPPET_rtf=""]])
432AS_IF([[test $DX_FLAG_xml -eq 1]],
433[[DX_SNIPPET_xml="## ------------------------------ ##
434## Rules specific for XML output. ##
435## ------------------------------ ##
436
437DX_CLEAN_XML = \$(DX_DOCDIR)/xml]dnl
438m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\
439               \$(DX_DOCDIR]DX_i[)/xml]])[
440
441"]],
442[[DX_SNIPPET_xml=""]])
443AS_IF([[test $DX_FLAG_ps -eq 1]],
444[[DX_SNIPPET_ps="## ----------------------------- ##
445## Rules specific for PS output. ##
446## ----------------------------- ##
447
448DX_CLEAN_PS = \$(DX_DOCDIR)/\$(PACKAGE).ps]dnl
449m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\
450              \$(DX_DOCDIR]DX_i[)/\$(PACKAGE).ps]])[
451
452DX_PS_GOAL = doxygen-ps
453
454doxygen-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=""]])
474AS_IF([[test $DX_FLAG_pdf -eq 1]],
475[[DX_SNIPPET_pdf="## ------------------------------ ##
476## Rules specific for PDF output. ##
477## ------------------------------ ##
478
479DX_CLEAN_PDF = \$(DX_DOCDIR)/\$(PACKAGE).pdf]dnl
480m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\
481               \$(DX_DOCDIR]DX_i[)/\$(PACKAGE).pdf]])[
482
483DX_PDF_GOAL = doxygen-pdf
484
485doxygen-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=""]])
505AS_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
510DX_V_LATEX = \$(_DX_v_LATEX_\$(V))
511_DX_v_LATEX_ = \$(_DX_v_LATEX_\$(AM_DEFAULT_VERBOSITY))
512_DX_v_LATEX_0 = @echo \"  LATEX \" \$][@;
513
514DX_CLEAN_LATEX = \$(DX_DOCDIR)/latex]dnl
515m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\
516                 \$(DX_DOCDIR]DX_i[)/latex]])[
517
518"]],
519[[DX_SNIPPET_latex=""]])
520
521AS_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}\
534DX_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
542doxygen-run:]m4_foreach([DX_i], [DX_loop],
543                         [[ \$(DX_DOCDIR]DX_i[)/\$(PACKAGE).tag]])[
544
545doxygen-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 = \\]
555m4_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=""]])
570AC_SUBST([DX_RULES],
571["${DX_SNIPPET_doc}"])dnl
572AM_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])
Note: See TracBrowser for help on using the repository browser.