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