Skip to content

Commit 7c9e4b5

Browse files
author
Sebastiano Merlino
committed
Added support to doxygen compilation.
1 parent 1908f50 commit 7c9e4b5

File tree

4 files changed

+403
-39
lines changed

4 files changed

+403
-39
lines changed

Makefile.am

+4-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ AUTOMAKE_OPTIONS = foreign 1.4
2222

2323
SUBDIRS = src $(PYTHON_DIR) $(JAVA_DIR) $(PHP_DIR) $(LUA_DIR) $(PERL_DIR) $(RUBY_DIR) $(GUILE_DIR)
2424
DIST_SUBDIRS = src $(PYTHON_DIR) $(JAVA_DIR) $(PHP_DIR) $(LUA_DIR) $(PERL_DIR) $(RUBY_DIR) $(GUILE_DIR)
25-
EXTRA_DIST = libhttpserver.pc.in
25+
EXTRA_DIST = libhttpserver.pc.in $(DOXYFILE)
2626

2727
pkgconfigdir = $(libdir)/pkgconfig
2828
pkgconfig_DATA = libhttpserver.pc
@@ -54,3 +54,6 @@ endif
5454
if GUILE
5555
GUILE_DIR = src/guile
5656
endif
57+
58+
include $(top_srcdir)/aminclude.am
59+
DOXYFILE = doxyconfig

acinclude.m4

+321
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,321 @@
1+
# This file is part of Autoconf. -*- Autoconf -*-
2+
3+
# Copyright (C) 2004 Oren Ben-Kiki
4+
# This file is distributed under the same terms as the Autoconf macro files.
5+
6+
########## CHANGELOG ##################
7+
# 2009-01-14 Martin Mann
8+
# * DX_ARG_ABLE : new variable 'DX_FLAG_DX_CURRENT_FEATURE'
9+
# * DX_CLEAR_DEPEND : use of explicit variable 'DX_FLAG_DX_CURRENT_FEATURE'
10+
# in AC_SUBST instead of 'DX_FLAG[]DX_CURRENT_FEATURE' which is rejected by
11+
# newer autotools
12+
13+
# Generate automatic documentation using Doxygen. Works in concert with the
14+
# aminclude.m4 file and a compatible doxygen configuration file. Defines the
15+
# following public macros:
16+
#
17+
# DX_???_FEATURE(ON|OFF) - control the default setting fo a Doxygen feature.
18+
# Supported features are 'DOXYGEN' itself, 'DOT' for generating graphics,
19+
# 'HTML' for plain HTML, 'CHM' for compressed HTML help (for MS users), 'CHI'
20+
# for generating a seperate .chi file by the .chm file, and 'MAN', 'RTF',
21+
# 'XML', 'PDF' and 'PS' for the appropriate output formats. The environment
22+
# variable DOXYGEN_PAPER_SIZE may be specified to override the default 'a4wide'
23+
# paper size.
24+
#
25+
# By default, HTML, PDF and PS documentation is generated as this seems to be
26+
# the most popular and portable combination. MAN pages created by Doxygen are
27+
# usually problematic, though by picking an appropriate subset and doing some
28+
# massaging they might be better than nothing. CHM and RTF are specific for MS
29+
# (note that you can't generate both HTML and CHM at the same time). The XML is
30+
# rather useless unless you apply specialized post-processing to it.
31+
#
32+
# The macro mainly controls the default state of the feature. The use can
33+
# override the default by specifying --enable or --disable. The macros ensure
34+
# that contradictory flags are not given (e.g., --enable-doxygen-html and
35+
# --enable-doxygen-chm, --enable-doxygen-anything with --disable-doxygen, etc.)
36+
# Finally, each feature will be automatically disabled (with a warning) if the
37+
# required programs are missing.
38+
#
39+
# Once all the feature defaults have been specified, call DX_INIT_DOXYGEN with
40+
# the following parameters: a one-word name for the project for use as a
41+
# filename base etc., an optional configuration file name (the default is
42+
# 'Doxyfile', the same as Doxygen's default), and an optional output directory
43+
# name (the default is 'doxygen-doc').
44+
45+
## ----------##
46+
## Defaults. ##
47+
## ----------##
48+
49+
DX_ENV=""
50+
AC_DEFUN([DX_FEATURE_doc], ON)
51+
AC_DEFUN([DX_FEATURE_dot], ON)
52+
AC_DEFUN([DX_FEATURE_man], OFF)
53+
AC_DEFUN([DX_FEATURE_html], ON)
54+
AC_DEFUN([DX_FEATURE_chm], OFF)
55+
AC_DEFUN([DX_FEATURE_chi], OFF)
56+
AC_DEFUN([DX_FEATURE_rtf], OFF)
57+
AC_DEFUN([DX_FEATURE_xml], OFF)
58+
AC_DEFUN([DX_FEATURE_pdf], ON)
59+
AC_DEFUN([DX_FEATURE_ps], ON)
60+
61+
## --------------- ##
62+
## Private macros. ##
63+
## --------------- ##
64+
65+
# DX_ENV_APPEND(VARIABLE, VALUE)
66+
# ------------------------------
67+
# Append VARIABLE="VALUE" to DX_ENV for invoking doxygen.
68+
AC_DEFUN([DX_ENV_APPEND], [AC_SUBST([DX_ENV], ["$DX_ENV $1='$2'"])])
69+
70+
# DX_DIRNAME_EXPR
71+
# ---------------
72+
# Expand into a shell expression prints the directory part of a path.
73+
AC_DEFUN([DX_DIRNAME_EXPR],
74+
[[expr ".$1" : '\(\.\)[^/]*$' \| "x$1" : 'x\(.*\)/[^/]*$']])
75+
76+
# DX_IF_FEATURE(FEATURE, IF-ON, IF-OFF)
77+
# -------------------------------------
78+
# Expands according to the M4 (static) status of the feature.
79+
AC_DEFUN([DX_IF_FEATURE], [ifelse(DX_FEATURE_$1, ON, [$2], [$3])])
80+
81+
# DX_REQUIRE_PROG(VARIABLE, PROGRAM)
82+
# ----------------------------------
83+
# Require the specified program to be found for the DX_CURRENT_FEATURE to work.
84+
AC_DEFUN([DX_REQUIRE_PROG], [
85+
AC_PATH_TOOL([$1], [$2])
86+
if test "$DX_FLAG_DX_CURRENT_FEATURE$$1" = 1; then
87+
AC_MSG_WARN([$2 not found - will not DX_CURRENT_DESCRIPTION])
88+
AC_SUBST([DX_FLAG_DX_CURRENT_FEATURE], 0)
89+
fi
90+
])
91+
92+
# DX_TEST_FEATURE(FEATURE)
93+
# ------------------------
94+
# Expand to a shell expression testing whether the feature is active.
95+
AC_DEFUN([DX_TEST_FEATURE], [test "$DX_FLAG_$1" = 1])
96+
97+
# DX_CHECK_DEPEND(REQUIRED_FEATURE, REQUIRED_STATE)
98+
# -------------------------------------------------
99+
# Verify that a required features has the right state before trying to turn on
100+
# the DX_CURRENT_FEATURE.
101+
AC_DEFUN([DX_CHECK_DEPEND], [
102+
test "$DX_FLAG_$1" = "$2" \
103+
|| AC_MSG_ERROR([doxygen-DX_CURRENT_FEATURE ifelse([$2], 1,
104+
requires, contradicts) doxygen-DX_CURRENT_FEATURE])
105+
])
106+
107+
# DX_CLEAR_DEPEND(FEATURE, REQUIRED_FEATURE, REQUIRED_STATE)
108+
# ----------------------------------------------------------
109+
# Turn off the DX_CURRENT_FEATURE if the required feature is off.
110+
AC_DEFUN([DX_CLEAR_DEPEND], [
111+
test "$DX_FLAG_$1" = "$2" || AC_SUBST([DX_FLAG_DX_CURRENT_FEATURE], 0)
112+
])
113+
114+
115+
# DX_FEATURE_ARG(FEATURE, DESCRIPTION,
116+
# CHECK_DEPEND, CLEAR_DEPEND,
117+
# REQUIRE, DO-IF-ON, DO-IF-OFF)
118+
# --------------------------------------------
119+
# Parse the command-line option controlling a feature. CHECK_DEPEND is called
120+
# if the user explicitly turns the feature on (and invokes DX_CHECK_DEPEND),
121+
# otherwise CLEAR_DEPEND is called to turn off the default state if a required
122+
# feature is disabled (using DX_CLEAR_DEPEND). REQUIRE performs additional
123+
# requirement tests (DX_REQUIRE_PROG). Finally, an automake flag is set and
124+
# DO-IF-ON or DO-IF-OFF are called according to the final state of the feature.
125+
AC_DEFUN([DX_ARG_ABLE], [
126+
AC_DEFUN([DX_CURRENT_FEATURE], [$1])
127+
AC_DEFUN([DX_FLAG_DX_CURRENT_FEATURE], [DX_FLAG_$1])
128+
AC_DEFUN([DX_CURRENT_DESCRIPTION], [$2])
129+
AC_ARG_ENABLE(doxygen-$1,
130+
[AS_HELP_STRING(DX_IF_FEATURE([$1], [--disable-doxygen-$1],
131+
[--enable-doxygen-$1]),
132+
DX_IF_FEATURE([$1], [don't $2], [$2]))],
133+
[
134+
case "$enableval" in
135+
#(
136+
y|Y|yes|Yes|YES)
137+
AC_SUBST([DX_FLAG_$1], 1)
138+
$3
139+
;; #(
140+
n|N|no|No|NO)
141+
AC_SUBST([DX_FLAG_$1], 0)
142+
;; #(
143+
*)
144+
AC_MSG_ERROR([invalid value '$enableval' given to doxygen-$1])
145+
;;
146+
esac
147+
], [
148+
AC_SUBST([DX_FLAG_$1], [DX_IF_FEATURE([$1], 1, 0)])
149+
$4
150+
])
151+
if DX_TEST_FEATURE([$1]); then
152+
$5
153+
:
154+
fi
155+
if DX_TEST_FEATURE([$1]); then
156+
AM_CONDITIONAL(DX_COND_$1, :)
157+
$6
158+
:
159+
else
160+
AM_CONDITIONAL(DX_COND_$1, false)
161+
$7
162+
:
163+
fi
164+
])
165+
166+
## -------------- ##
167+
## Public macros. ##
168+
## -------------- ##
169+
170+
# DX_XXX_FEATURE(DEFAULT_STATE)
171+
# -----------------------------
172+
AC_DEFUN([DX_DOXYGEN_FEATURE], [AC_DEFUN([DX_FEATURE_doc], [$1])])
173+
AC_DEFUN([DX_MAN_FEATURE], [AC_DEFUN([DX_FEATURE_man], [$1])])
174+
AC_DEFUN([DX_HTML_FEATURE], [AC_DEFUN([DX_FEATURE_html], [$1])])
175+
AC_DEFUN([DX_CHM_FEATURE], [AC_DEFUN([DX_FEATURE_chm], [$1])])
176+
AC_DEFUN([DX_CHI_FEATURE], [AC_DEFUN([DX_FEATURE_chi], [$1])])
177+
AC_DEFUN([DX_RTF_FEATURE], [AC_DEFUN([DX_FEATURE_rtf], [$1])])
178+
AC_DEFUN([DX_XML_FEATURE], [AC_DEFUN([DX_FEATURE_xml], [$1])])
179+
AC_DEFUN([DX_XML_FEATURE], [AC_DEFUN([DX_FEATURE_xml], [$1])])
180+
AC_DEFUN([DX_PDF_FEATURE], [AC_DEFUN([DX_FEATURE_pdf], [$1])])
181+
AC_DEFUN([DX_PS_FEATURE], [AC_DEFUN([DX_FEATURE_ps], [$1])])
182+
183+
# DX_INIT_DOXYGEN(PROJECT, [CONFIG-FILE], [OUTPUT-DOC-DIR])
184+
# ---------------------------------------------------------
185+
# PROJECT also serves as the base name for the documentation files.
186+
# The default CONFIG-FILE is "Doxyfile" and OUTPUT-DOC-DIR is "doxygen-doc".
187+
AC_DEFUN([DX_INIT_DOXYGEN], [
188+
189+
# Files:
190+
AC_SUBST([DX_PROJECT], [$1])
191+
AC_SUBST([DX_CONFIG], [ifelse([$2], [], Doxyfile, [$2])])
192+
AC_SUBST([DX_DOCDIR], [ifelse([$3], [], doxygen-doc, [$3])])
193+
194+
# Environment variables used inside doxygen.cfg:
195+
DX_ENV_APPEND(SRCDIR, $srcdir)
196+
DX_ENV_APPEND(PROJECT, $DX_PROJECT)
197+
DX_ENV_APPEND(DOCDIR, $DX_DOCDIR)
198+
DX_ENV_APPEND(VERSION, $PACKAGE_VERSION)
199+
200+
# Doxygen itself:
201+
DX_ARG_ABLE(doc, [generate any doxygen documentation],
202+
[],
203+
[],
204+
[DX_REQUIRE_PROG([DX_DOXYGEN], doxygen)
205+
DX_REQUIRE_PROG([DX_PERL], perl)],
206+
[DX_ENV_APPEND(PERL_PATH, $DX_PERL)])
207+
208+
# Dot for graphics:
209+
DX_ARG_ABLE(dot, [generate graphics for doxygen documentation],
210+
[DX_CHECK_DEPEND(doc, 1)],
211+
[DX_CLEAR_DEPEND(doc, 1)],
212+
[DX_REQUIRE_PROG([DX_DOT], dot)],
213+
[DX_ENV_APPEND(HAVE_DOT, YES)
214+
DX_ENV_APPEND(DOT_PATH, [`DX_DIRNAME_EXPR($DX_DOT)`])],
215+
[DX_ENV_APPEND(HAVE_DOT, NO)])
216+
217+
# Man pages generation:
218+
DX_ARG_ABLE(man, [generate doxygen manual pages],
219+
[DX_CHECK_DEPEND(doc, 1)],
220+
[DX_CLEAR_DEPEND(doc, 1)],
221+
[],
222+
[DX_ENV_APPEND(GENERATE_MAN, YES)],
223+
[DX_ENV_APPEND(GENERATE_MAN, NO)])
224+
225+
# RTF file generation:
226+
DX_ARG_ABLE(rtf, [generate doxygen RTF documentation],
227+
[DX_CHECK_DEPEND(doc, 1)],
228+
[DX_CLEAR_DEPEND(doc, 1)],
229+
[],
230+
[DX_ENV_APPEND(GENERATE_RTF, YES)],
231+
[DX_ENV_APPEND(GENERATE_RTF, NO)])
232+
233+
# XML file generation:
234+
DX_ARG_ABLE(xml, [generate doxygen XML documentation],
235+
[DX_CHECK_DEPEND(doc, 1)],
236+
[DX_CLEAR_DEPEND(doc, 1)],
237+
[],
238+
[DX_ENV_APPEND(GENERATE_XML, YES)],
239+
[DX_ENV_APPEND(GENERATE_XML, NO)])
240+
241+
# (Compressed) HTML help generation:
242+
DX_ARG_ABLE(chm, [generate doxygen compressed HTML help documentation],
243+
[DX_CHECK_DEPEND(doc, 1)],
244+
[DX_CLEAR_DEPEND(doc, 1)],
245+
[DX_REQUIRE_PROG([DX_HHC], hhc)],
246+
[DX_ENV_APPEND(HHC_PATH, $DX_HHC)
247+
DX_ENV_APPEND(GENERATE_HTML, YES)
248+
DX_ENV_APPEND(GENERATE_HTMLHELP, YES)],
249+
[DX_ENV_APPEND(GENERATE_HTMLHELP, NO)])
250+
251+
# Seperate CHI file generation.
252+
DX_ARG_ABLE(chi, [generate doxygen seperate compressed HTML help index file],
253+
[DX_CHECK_DEPEND(chm, 1)],
254+
[DX_CLEAR_DEPEND(chm, 1)],
255+
[],
256+
[DX_ENV_APPEND(GENERATE_CHI, YES)],
257+
[DX_ENV_APPEND(GENERATE_CHI, NO)])
258+
259+
# Plain HTML pages generation:
260+
DX_ARG_ABLE(html, [generate doxygen plain HTML documentation],
261+
[DX_CHECK_DEPEND(doc, 1) DX_CHECK_DEPEND(chm, 0)],
262+
[DX_CLEAR_DEPEND(doc, 1) DX_CLEAR_DEPEND(chm, 0)],
263+
[],
264+
[DX_ENV_APPEND(GENERATE_HTML, YES)],
265+
[DX_TEST_FEATURE(chm) || DX_ENV_APPEND(GENERATE_HTML, NO)])
266+
267+
# PostScript file generation:
268+
DX_ARG_ABLE(ps, [generate doxygen PostScript documentation],
269+
[DX_CHECK_DEPEND(doc, 1)],
270+
[DX_CLEAR_DEPEND(doc, 1)],
271+
[DX_REQUIRE_PROG([DX_LATEX], latex)
272+
DX_REQUIRE_PROG([DX_MAKEINDEX], makeindex)
273+
DX_REQUIRE_PROG([DX_DVIPS], dvips)
274+
DX_REQUIRE_PROG([DX_EGREP], egrep)])
275+
276+
# PDF file generation:
277+
DX_ARG_ABLE(pdf, [generate doxygen PDF documentation],
278+
[DX_CHECK_DEPEND(doc, 1)],
279+
[DX_CLEAR_DEPEND(doc, 1)],
280+
[DX_REQUIRE_PROG([DX_PDFLATEX], pdflatex)
281+
DX_REQUIRE_PROG([DX_MAKEINDEX], makeindex)
282+
DX_REQUIRE_PROG([DX_EGREP], egrep)])
283+
284+
# LaTeX generation for PS and/or PDF:
285+
if DX_TEST_FEATURE(ps) || DX_TEST_FEATURE(pdf); then
286+
AM_CONDITIONAL(DX_COND_latex, :)
287+
DX_ENV_APPEND(GENERATE_LATEX, YES)
288+
else
289+
AM_CONDITIONAL(DX_COND_latex, false)
290+
DX_ENV_APPEND(GENERATE_LATEX, NO)
291+
fi
292+
293+
# Paper size for PS and/or PDF:
294+
AC_ARG_VAR(DOXYGEN_PAPER_SIZE,
295+
[a4wide (default), a4, letter, legal or executive])
296+
case "$DOXYGEN_PAPER_SIZE" in
297+
#(
298+
"")
299+
AC_SUBST(DOXYGEN_PAPER_SIZE, "")
300+
;; #(
301+
a4wide|a4|letter|legal|executive)
302+
DX_ENV_APPEND(PAPER_SIZE, $DOXYGEN_PAPER_SIZE)
303+
;; #(
304+
*)
305+
AC_MSG_ERROR([unknown DOXYGEN_PAPER_SIZE='$DOXYGEN_PAPER_SIZE'])
306+
;;
307+
esac
308+
309+
#For debugging:
310+
#echo DX_FLAG_doc=$DX_FLAG_doc
311+
#echo DX_FLAG_dot=$DX_FLAG_dot
312+
#echo DX_FLAG_man=$DX_FLAG_man
313+
#echo DX_FLAG_html=$DX_FLAG_html
314+
#echo DX_FLAG_chm=$DX_FLAG_chm
315+
#echo DX_FLAG_chi=$DX_FLAG_chi
316+
#echo DX_FLAG_rtf=$DX_FLAG_rtf
317+
#echo DX_FLAG_xml=$DX_FLAG_xml
318+
#echo DX_FLAG_pdf=$DX_FLAG_pdf
319+
#echo DX_FLAG_ps=$DX_FLAG_ps
320+
#echo DX_ENV=$DX_ENV
321+
])

0 commit comments

Comments
 (0)