xorg-macros.m4.in revision 43c16309
1ffab5952Smrgdnl @configure_input@
2ffab5952Smrgdnl
3ffab5952Smrgdnl Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
443c16309Smrgdnl
5ffab5952Smrgdnl Permission is hereby granted, free of charge, to any person obtaining a
6ffab5952Smrgdnl copy of this software and associated documentation files (the "Software"),
7ffab5952Smrgdnl to deal in the Software without restriction, including without limitation
8ffab5952Smrgdnl the rights to use, copy, modify, merge, publish, distribute, sublicense,
9ffab5952Smrgdnl and/or sell copies of the Software, and to permit persons to whom the
10ffab5952Smrgdnl Software is furnished to do so, subject to the following conditions:
11ffab5952Smrgdnl
12ffab5952Smrgdnl The above copyright notice and this permission notice (including the next
13ffab5952Smrgdnl paragraph) shall be included in all copies or substantial portions of the
14ffab5952Smrgdnl Software.
15ffab5952Smrgdnl
16ffab5952Smrgdnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17ffab5952Smrgdnl IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18ffab5952Smrgdnl FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
19ffab5952Smrgdnl THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20ffab5952Smrgdnl LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21ffab5952Smrgdnl FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22ffab5952Smrgdnl DEALINGS IN THE SOFTWARE.
23ffab5952Smrg
24ffab5952Smrg# XORG_MACROS_VERSION(required-version)
25ffab5952Smrg# -------------------------------------
26ffab5952Smrg# Minimum version: 1.1.0
27ffab5952Smrg#
28ffab5952Smrg# If you're using a macro added in Version 1.1 or newer, include this in
29ffab5952Smrg# your configure.ac with the minimum required version, such as:
30ffab5952Smrg# XORG_MACROS_VERSION(1.1)
31ffab5952Smrg#
32ffab5952Smrg# To ensure that this macro is defined, also add:
33ffab5952Smrg# m4_ifndef([XORG_MACROS_VERSION],
34ffab5952Smrg#     [m4_fatal([must install xorg-macros 1.1 or later before running autoconf/autogen])])
35ffab5952Smrg#
36ffab5952Smrg#
3743c16309Smrg# See the "minimum version" comment for each macro you use to see what
38ffab5952Smrg# version you require.
39ffab5952Smrgm4_defun([XORG_MACROS_VERSION],[
40ffab5952Smrgm4_define([vers_have], [@VERSION@])
41ffab5952Smrgm4_define([maj_have], m4_substr(vers_have, 0, m4_index(vers_have, [.])))
42ffab5952Smrgm4_define([maj_needed], m4_substr([$1], 0, m4_index([$1], [.])))
43ffab5952Smrgm4_if(m4_cmp(maj_have, maj_needed), 0,,
44ffab5952Smrg    [m4_fatal([xorg-macros major version ]maj_needed[ is required but ]vers_have[ found])])
45ffab5952Smrgm4_if(m4_version_compare(vers_have, [$1]), -1,
46ffab5952Smrg    [m4_fatal([xorg-macros version $1 or higher is required but ]vers_have[ found])])
47ffab5952Smrgm4_undefine([vers_have])
48ffab5952Smrgm4_undefine([maj_have])
49ffab5952Smrgm4_undefine([maj_needed])
50ffab5952Smrg]) # XORG_MACROS_VERSION
51ffab5952Smrg
52ffab5952Smrg# XORG_PROG_RAWCPP()
53ffab5952Smrg# ------------------
54ffab5952Smrg# Minimum version: 1.0.0
55ffab5952Smrg#
56ffab5952Smrg# Find cpp program and necessary flags for use in pre-processing text files
57ffab5952Smrg# such as man pages and config files
58ffab5952SmrgAC_DEFUN([XORG_PROG_RAWCPP],[
59ffab5952SmrgAC_REQUIRE([AC_PROG_CPP])
6043c16309SmrgAC_PATH_PROGS(RAWCPP, [cpp], [${CPP}],
61ffab5952Smrg   [$PATH:/bin:/usr/bin:/usr/lib:/usr/libexec:/usr/ccs/lib:/usr/ccs/lbin:/lib])
62ffab5952Smrg
63ffab5952Smrg# Check for flag to avoid builtin definitions - assumes unix is predefined,
64ffab5952Smrg# which is not the best choice for supporting other OS'es, but covers most
65ffab5952Smrg# of the ones we need for now.
66ffab5952SmrgAC_MSG_CHECKING([if $RAWCPP requires -undef])
6762044635SmrgAC_LANG_CONFTEST([AC_LANG_SOURCE([[Does cpp redefine unix ?]])])
68ffab5952Smrgif test `${RAWCPP} < conftest.$ac_ext | grep -c 'unix'` -eq 1 ; then
69ffab5952Smrg	AC_MSG_RESULT([no])
70ffab5952Smrgelse
71ffab5952Smrg	if test `${RAWCPP} -undef < conftest.$ac_ext | grep -c 'unix'` -eq 1 ; then
72ffab5952Smrg		RAWCPPFLAGS=-undef
73ffab5952Smrg		AC_MSG_RESULT([yes])
74ffab5952Smrg	# under Cygwin unix is still defined even with -undef
75ffab5952Smrg	elif test `${RAWCPP} -undef -ansi < conftest.$ac_ext | grep -c 'unix'` -eq 1 ; then
76ffab5952Smrg		RAWCPPFLAGS="-undef -ansi"
77ffab5952Smrg		AC_MSG_RESULT([yes, with -ansi])
78ffab5952Smrg	else
79ffab5952Smrg		AC_MSG_ERROR([${RAWCPP} defines unix with or without -undef.  I don't know what to do.])
80ffab5952Smrg	fi
81ffab5952Smrgfi
82ffab5952Smrgrm -f conftest.$ac_ext
83ffab5952Smrg
84ffab5952SmrgAC_MSG_CHECKING([if $RAWCPP requires -traditional])
8562044635SmrgAC_LANG_CONFTEST([AC_LANG_SOURCE([[Does cpp preserve   "whitespace"?]])])
86ffab5952Smrgif test `${RAWCPP} < conftest.$ac_ext | grep -c 'preserve   \"'` -eq 1 ; then
87ffab5952Smrg	AC_MSG_RESULT([no])
88ffab5952Smrgelse
89ffab5952Smrg	if test `${RAWCPP} -traditional < conftest.$ac_ext | grep -c 'preserve   \"'` -eq 1 ; then
90ffab5952Smrg		RAWCPPFLAGS="${RAWCPPFLAGS} -traditional"
91ffab5952Smrg		AC_MSG_RESULT([yes])
92ffab5952Smrg	else
93ffab5952Smrg		AC_MSG_ERROR([${RAWCPP} does not preserve whitespace with or without -traditional.  I don't know what to do.])
94ffab5952Smrg	fi
95ffab5952Smrgfi
96ffab5952Smrgrm -f conftest.$ac_ext
97ffab5952SmrgAC_SUBST(RAWCPPFLAGS)
98ffab5952Smrg]) # XORG_PROG_RAWCPP
99ffab5952Smrg
100ffab5952Smrg# XORG_MANPAGE_SECTIONS()
101ffab5952Smrg# -----------------------
102ffab5952Smrg# Minimum version: 1.0.0
103ffab5952Smrg#
104ffab5952Smrg# Determine which sections man pages go in for the different man page types
105ffab5952Smrg# on this OS - replaces *ManSuffix settings in old Imake *.cf per-os files.
106ffab5952Smrg# Not sure if there's any better way than just hardcoding by OS name.
107ffab5952Smrg# Override default settings by setting environment variables
108ffab5952Smrg# Added MAN_SUBSTS in version 1.8
109ffab5952Smrg# Added AC_PROG_SED in version 1.8
110ffab5952Smrg
111ffab5952SmrgAC_DEFUN([XORG_MANPAGE_SECTIONS],[
112ffab5952SmrgAC_REQUIRE([AC_CANONICAL_HOST])
113ffab5952SmrgAC_REQUIRE([AC_PROG_SED])
114ffab5952Smrg
115ffab5952Smrgif test x$APP_MAN_SUFFIX = x    ; then
116ffab5952Smrg    APP_MAN_SUFFIX=1
117ffab5952Smrgfi
118ffab5952Smrgif test x$APP_MAN_DIR = x    ; then
119ffab5952Smrg    APP_MAN_DIR='$(mandir)/man$(APP_MAN_SUFFIX)'
120ffab5952Smrgfi
121ffab5952Smrg
122ffab5952Smrgif test x$LIB_MAN_SUFFIX = x    ; then
123ffab5952Smrg    LIB_MAN_SUFFIX=3
124ffab5952Smrgfi
125ffab5952Smrgif test x$LIB_MAN_DIR = x    ; then
126ffab5952Smrg    LIB_MAN_DIR='$(mandir)/man$(LIB_MAN_SUFFIX)'
127ffab5952Smrgfi
128ffab5952Smrg
129ffab5952Smrgif test x$FILE_MAN_SUFFIX = x    ; then
130ffab5952Smrg    case $host_os in
131ffab5952Smrg	solaris*)	FILE_MAN_SUFFIX=4  ;;
132ffab5952Smrg	*)		FILE_MAN_SUFFIX=5  ;;
133ffab5952Smrg    esac
134ffab5952Smrgfi
135ffab5952Smrgif test x$FILE_MAN_DIR = x    ; then
136ffab5952Smrg    FILE_MAN_DIR='$(mandir)/man$(FILE_MAN_SUFFIX)'
137ffab5952Smrgfi
138ffab5952Smrg
139ffab5952Smrgif test x$MISC_MAN_SUFFIX = x    ; then
140ffab5952Smrg    case $host_os in
141ffab5952Smrg	solaris*)	MISC_MAN_SUFFIX=5  ;;
142ffab5952Smrg	*)		MISC_MAN_SUFFIX=7  ;;
143ffab5952Smrg    esac
144ffab5952Smrgfi
145ffab5952Smrgif test x$MISC_MAN_DIR = x    ; then
146ffab5952Smrg    MISC_MAN_DIR='$(mandir)/man$(MISC_MAN_SUFFIX)'
147ffab5952Smrgfi
148ffab5952Smrg
149ffab5952Smrgif test x$DRIVER_MAN_SUFFIX = x    ; then
150ffab5952Smrg    case $host_os in
151ffab5952Smrg	solaris*)	DRIVER_MAN_SUFFIX=7  ;;
152ffab5952Smrg	*)		DRIVER_MAN_SUFFIX=4  ;;
153ffab5952Smrg    esac
154ffab5952Smrgfi
155ffab5952Smrgif test x$DRIVER_MAN_DIR = x    ; then
156ffab5952Smrg    DRIVER_MAN_DIR='$(mandir)/man$(DRIVER_MAN_SUFFIX)'
157ffab5952Smrgfi
158ffab5952Smrg
159ffab5952Smrgif test x$ADMIN_MAN_SUFFIX = x    ; then
160ffab5952Smrg    case $host_os in
161ffab5952Smrg	solaris*)	ADMIN_MAN_SUFFIX=1m ;;
162ffab5952Smrg	*)		ADMIN_MAN_SUFFIX=8  ;;
163ffab5952Smrg    esac
164ffab5952Smrgfi
165ffab5952Smrgif test x$ADMIN_MAN_DIR = x    ; then
166ffab5952Smrg    ADMIN_MAN_DIR='$(mandir)/man$(ADMIN_MAN_SUFFIX)'
167ffab5952Smrgfi
168ffab5952Smrg
169ffab5952Smrg
170ffab5952SmrgAC_SUBST([APP_MAN_SUFFIX])
171ffab5952SmrgAC_SUBST([LIB_MAN_SUFFIX])
172ffab5952SmrgAC_SUBST([FILE_MAN_SUFFIX])
173ffab5952SmrgAC_SUBST([MISC_MAN_SUFFIX])
174ffab5952SmrgAC_SUBST([DRIVER_MAN_SUFFIX])
175ffab5952SmrgAC_SUBST([ADMIN_MAN_SUFFIX])
176ffab5952SmrgAC_SUBST([APP_MAN_DIR])
177ffab5952SmrgAC_SUBST([LIB_MAN_DIR])
178ffab5952SmrgAC_SUBST([FILE_MAN_DIR])
179ffab5952SmrgAC_SUBST([MISC_MAN_DIR])
180ffab5952SmrgAC_SUBST([DRIVER_MAN_DIR])
181ffab5952SmrgAC_SUBST([ADMIN_MAN_DIR])
182ffab5952Smrg
183ffab5952SmrgXORG_MAN_PAGE="X Version 11"
184ffab5952SmrgAC_SUBST([XORG_MAN_PAGE])
185ffab5952SmrgMAN_SUBSTS="\
186ffab5952Smrg	-e 's|__vendorversion__|\"\$(PACKAGE_STRING)\" \"\$(XORG_MAN_PAGE)\"|' \
187ffab5952Smrg	-e 's|__xorgversion__|\"\$(PACKAGE_STRING)\" \"\$(XORG_MAN_PAGE)\"|' \
188ffab5952Smrg	-e 's|__xservername__|Xorg|g' \
189ffab5952Smrg	-e 's|__xconfigfile__|xorg.conf|g' \
190ffab5952Smrg	-e 's|__projectroot__|\$(prefix)|g' \
191ffab5952Smrg	-e 's|__apploaddir__|\$(appdefaultdir)|g' \
192ffab5952Smrg	-e 's|__appmansuffix__|\$(APP_MAN_SUFFIX)|g' \
193ffab5952Smrg	-e 's|__drivermansuffix__|\$(DRIVER_MAN_SUFFIX)|g' \
194ffab5952Smrg	-e 's|__adminmansuffix__|\$(ADMIN_MAN_SUFFIX)|g' \
195ffab5952Smrg	-e 's|__libmansuffix__|\$(LIB_MAN_SUFFIX)|g' \
196ffab5952Smrg	-e 's|__miscmansuffix__|\$(MISC_MAN_SUFFIX)|g' \
197ffab5952Smrg	-e 's|__filemansuffix__|\$(FILE_MAN_SUFFIX)|g'"
198ffab5952SmrgAC_SUBST([MAN_SUBSTS])
199ffab5952Smrg
200ffab5952Smrg]) # XORG_MANPAGE_SECTIONS
201ffab5952Smrg
202ffab5952Smrg# XORG_CHECK_SGML_DOCTOOLS([MIN-VERSION])
203ffab5952Smrg# ------------------------
204ffab5952Smrg# Minimum version: 1.7.0
205ffab5952Smrg#
206ffab5952Smrg# Defines the variable XORG_SGML_PATH containing the location of X11/defs.ent
207ffab5952Smrg# provided by xorg-sgml-doctools, if installed.
208ffab5952SmrgAC_DEFUN([XORG_CHECK_SGML_DOCTOOLS],[
209ffab5952SmrgAC_MSG_CHECKING([for X.Org SGML entities m4_ifval([$1],[>= $1])])
210ffab5952SmrgXORG_SGML_PATH=
211ffab5952SmrgPKG_CHECK_EXISTS([xorg-sgml-doctools m4_ifval([$1],[>= $1])],
212ffab5952Smrg    [XORG_SGML_PATH=`$PKG_CONFIG --variable=sgmlrootdir xorg-sgml-doctools`],
213ffab5952Smrg    [m4_ifval([$1],[:],
214ffab5952Smrg        [if test x"$cross_compiling" != x"yes" ; then
215ffab5952Smrg            AC_CHECK_FILE([$prefix/share/sgml/X11/defs.ent],
216ffab5952Smrg                          [XORG_SGML_PATH=$prefix/share/sgml])
217ffab5952Smrg         fi])
218ffab5952Smrg    ])
219ffab5952Smrg
220ffab5952Smrg# Define variables STYLESHEET_SRCDIR and XSL_STYLESHEET containing
221ffab5952Smrg# the path and the name of the doc stylesheet
222ffab5952Smrgif test "x$XORG_SGML_PATH" != "x" ; then
223ffab5952Smrg   AC_MSG_RESULT([$XORG_SGML_PATH])
224ffab5952Smrg   STYLESHEET_SRCDIR=$XORG_SGML_PATH/X11
225ffab5952Smrg   XSL_STYLESHEET=$STYLESHEET_SRCDIR/xorg.xsl
226ffab5952Smrgelse
227ffab5952Smrg   AC_MSG_RESULT([no])
228ffab5952Smrgfi
229ffab5952Smrg
230ffab5952SmrgAC_SUBST(XORG_SGML_PATH)
231ffab5952SmrgAC_SUBST(STYLESHEET_SRCDIR)
232ffab5952SmrgAC_SUBST(XSL_STYLESHEET)
233ffab5952SmrgAM_CONDITIONAL([HAVE_STYLESHEETS], [test "x$XSL_STYLESHEET" != "x"])
234ffab5952Smrg]) # XORG_CHECK_SGML_DOCTOOLS
235ffab5952Smrg
236ffab5952Smrg# XORG_CHECK_LINUXDOC
237ffab5952Smrg# -------------------
238ffab5952Smrg# Minimum version: 1.0.0
239ffab5952Smrg#
240ffab5952Smrg# Defines the variable MAKE_TEXT if the necessary tools and
241ffab5952Smrg# files are found. $(MAKE_TEXT) blah.sgml will then produce blah.txt.
242ffab5952Smrg# Whether or not the necessary tools and files are found can be checked
243ffab5952Smrg# with the AM_CONDITIONAL "BUILD_LINUXDOC"
244ffab5952SmrgAC_DEFUN([XORG_CHECK_LINUXDOC],[
245ffab5952SmrgAC_REQUIRE([XORG_CHECK_SGML_DOCTOOLS])
246ffab5952SmrgAC_REQUIRE([XORG_WITH_PS2PDF])
247ffab5952Smrg
248ffab5952SmrgAC_PATH_PROG(LINUXDOC, linuxdoc)
249ffab5952Smrg
250ffab5952SmrgAC_MSG_CHECKING([whether to build documentation])
251ffab5952Smrg
252ffab5952Smrgif test x$XORG_SGML_PATH != x && test x$LINUXDOC != x ; then
253ffab5952Smrg   BUILDDOC=yes
254ffab5952Smrgelse
255ffab5952Smrg   BUILDDOC=no
256ffab5952Smrgfi
257ffab5952Smrg
258ffab5952SmrgAM_CONDITIONAL(BUILD_LINUXDOC, [test x$BUILDDOC = xyes])
259ffab5952Smrg
260ffab5952SmrgAC_MSG_RESULT([$BUILDDOC])
261ffab5952Smrg
262ffab5952SmrgAC_MSG_CHECKING([whether to build pdf documentation])
263ffab5952Smrg
264ffab5952Smrgif test x$have_ps2pdf != xno && test x$BUILD_PDFDOC != xno; then
265ffab5952Smrg   BUILDPDFDOC=yes
266ffab5952Smrgelse
267ffab5952Smrg   BUILDPDFDOC=no
268ffab5952Smrgfi
269ffab5952Smrg
270ffab5952SmrgAM_CONDITIONAL(BUILD_PDFDOC, [test x$BUILDPDFDOC = xyes])
271ffab5952Smrg
272ffab5952SmrgAC_MSG_RESULT([$BUILDPDFDOC])
273ffab5952Smrg
274ffab5952SmrgMAKE_TEXT="SGML_SEARCH_PATH=$XORG_SGML_PATH GROFF_NO_SGR=y $LINUXDOC -B txt -f"
275ffab5952SmrgMAKE_PS="SGML_SEARCH_PATH=$XORG_SGML_PATH $LINUXDOC -B latex --papersize=letter --output=ps"
276ffab5952SmrgMAKE_PDF="$PS2PDF"
277ffab5952SmrgMAKE_HTML="SGML_SEARCH_PATH=$XORG_SGML_PATH $LINUXDOC  -B html --split=0"
278ffab5952Smrg
279ffab5952SmrgAC_SUBST(MAKE_TEXT)
280ffab5952SmrgAC_SUBST(MAKE_PS)
281ffab5952SmrgAC_SUBST(MAKE_PDF)
282ffab5952SmrgAC_SUBST(MAKE_HTML)
283ffab5952Smrg]) # XORG_CHECK_LINUXDOC
284ffab5952Smrg
285ffab5952Smrg# XORG_CHECK_DOCBOOK
286ffab5952Smrg# -------------------
287ffab5952Smrg# Minimum version: 1.0.0
288ffab5952Smrg#
289ffab5952Smrg# Checks for the ability to build output formats from SGML DocBook source.
290ffab5952Smrg# For XXX in {TXT, PDF, PS, HTML}, the AM_CONDITIONAL "BUILD_XXXDOC"
291ffab5952Smrg# indicates whether the necessary tools and files are found and, if set,
292ffab5952Smrg# $(MAKE_XXX) blah.sgml will produce blah.xxx.
293ffab5952SmrgAC_DEFUN([XORG_CHECK_DOCBOOK],[
294ffab5952SmrgAC_REQUIRE([XORG_CHECK_SGML_DOCTOOLS])
295ffab5952Smrg
296ffab5952SmrgBUILDTXTDOC=no
297ffab5952SmrgBUILDPDFDOC=no
298ffab5952SmrgBUILDPSDOC=no
299ffab5952SmrgBUILDHTMLDOC=no
300ffab5952Smrg
301ffab5952SmrgAC_PATH_PROG(DOCBOOKPS, docbook2ps)
302ffab5952SmrgAC_PATH_PROG(DOCBOOKPDF, docbook2pdf)
303ffab5952SmrgAC_PATH_PROG(DOCBOOKHTML, docbook2html)
304ffab5952SmrgAC_PATH_PROG(DOCBOOKTXT, docbook2txt)
305ffab5952Smrg
306ffab5952SmrgAC_MSG_CHECKING([whether to build text documentation])
307ffab5952Smrgif test x$XORG_SGML_PATH != x && test x$DOCBOOKTXT != x &&
308ffab5952Smrg   test x$BUILD_TXTDOC != xno; then
309ffab5952Smrg	BUILDTXTDOC=yes
310ffab5952Smrgfi
311ffab5952SmrgAM_CONDITIONAL(BUILD_TXTDOC, [test x$BUILDTXTDOC = xyes])
312ffab5952SmrgAC_MSG_RESULT([$BUILDTXTDOC])
313ffab5952Smrg
314ffab5952SmrgAC_MSG_CHECKING([whether to build PDF documentation])
315ffab5952Smrgif test x$XORG_SGML_PATH != x && test x$DOCBOOKPDF != x &&
316ffab5952Smrg   test x$BUILD_PDFDOC != xno; then
317ffab5952Smrg	BUILDPDFDOC=yes
318ffab5952Smrgfi
319ffab5952SmrgAM_CONDITIONAL(BUILD_PDFDOC, [test x$BUILDPDFDOC = xyes])
320ffab5952SmrgAC_MSG_RESULT([$BUILDPDFDOC])
321ffab5952Smrg
322ffab5952SmrgAC_MSG_CHECKING([whether to build PostScript documentation])
323ffab5952Smrgif test x$XORG_SGML_PATH != x && test x$DOCBOOKPS != x &&
324ffab5952Smrg   test x$BUILD_PSDOC != xno; then
325ffab5952Smrg	BUILDPSDOC=yes
326ffab5952Smrgfi
327ffab5952SmrgAM_CONDITIONAL(BUILD_PSDOC, [test x$BUILDPSDOC = xyes])
328ffab5952SmrgAC_MSG_RESULT([$BUILDPSDOC])
329ffab5952Smrg
330ffab5952SmrgAC_MSG_CHECKING([whether to build HTML documentation])
331ffab5952Smrgif test x$XORG_SGML_PATH != x && test x$DOCBOOKHTML != x &&
332ffab5952Smrg   test x$BUILD_HTMLDOC != xno; then
333ffab5952Smrg	BUILDHTMLDOC=yes
334ffab5952Smrgfi
335ffab5952SmrgAM_CONDITIONAL(BUILD_HTMLDOC, [test x$BUILDHTMLDOC = xyes])
336ffab5952SmrgAC_MSG_RESULT([$BUILDHTMLDOC])
337ffab5952Smrg
338ffab5952SmrgMAKE_TEXT="SGML_SEARCH_PATH=$XORG_SGML_PATH $DOCBOOKTXT"
339ffab5952SmrgMAKE_PS="SGML_SEARCH_PATH=$XORG_SGML_PATH $DOCBOOKPS"
340ffab5952SmrgMAKE_PDF="SGML_SEARCH_PATH=$XORG_SGML_PATH $DOCBOOKPDF"
341ffab5952SmrgMAKE_HTML="SGML_SEARCH_PATH=$XORG_SGML_PATH $DOCBOOKHTML"
342ffab5952Smrg
343ffab5952SmrgAC_SUBST(MAKE_TEXT)
344ffab5952SmrgAC_SUBST(MAKE_PS)
345ffab5952SmrgAC_SUBST(MAKE_PDF)
346ffab5952SmrgAC_SUBST(MAKE_HTML)
347ffab5952Smrg]) # XORG_CHECK_DOCBOOK
348ffab5952Smrg
349ffab5952Smrg# XORG_WITH_XMLTO([MIN-VERSION], [DEFAULT])
350ffab5952Smrg# ----------------
351ffab5952Smrg# Minimum version: 1.5.0
352ffab5952Smrg# Minimum version for optional DEFAULT argument: 1.11.0
353ffab5952Smrg#
354ffab5952Smrg# Documentation tools are not always available on all platforms and sometimes
355ffab5952Smrg# not at the appropriate level. This macro enables a module to test for the
356ffab5952Smrg# presence of the tool and obtain it's path in separate variables. Coupled with
357ffab5952Smrg# the --with-xmlto option, it allows maximum flexibilty in making decisions
358ffab5952Smrg# as whether or not to use the xmlto package. When DEFAULT is not specified,
359ffab5952Smrg# --with-xmlto assumes 'auto'.
360ffab5952Smrg#
361ffab5952Smrg# Interface to module:
362ffab5952Smrg# HAVE_XMLTO: 	used in makefiles to conditionally generate documentation
363ffab5952Smrg# XMLTO:	returns the path of the xmlto program found
364ffab5952Smrg#		returns the path set by the user in the environment
365ffab5952Smrg# --with-xmlto:	'yes' user instructs the module to use xmlto
366ffab5952Smrg#		'no' user instructs the module not to use xmlto
367ffab5952Smrg#
368ffab5952Smrg# Added in version 1.10.0
369ffab5952Smrg# HAVE_XMLTO_TEXT: used in makefiles to conditionally generate text documentation
370ffab5952Smrg#                  xmlto for text output requires either lynx, links, or w3m browsers
371ffab5952Smrg#
372ffab5952Smrg# If the user sets the value of XMLTO, AC_PATH_PROG skips testing the path.
373ffab5952Smrg#
374ffab5952SmrgAC_DEFUN([XORG_WITH_XMLTO],[
375ffab5952SmrgAC_ARG_VAR([XMLTO], [Path to xmlto command])
376ffab5952Smrgm4_define([_defopt], m4_default([$2], [auto]))
377ffab5952SmrgAC_ARG_WITH(xmlto,
378ffab5952Smrg	AS_HELP_STRING([--with-xmlto],
379ffab5952Smrg	   [Use xmlto to regenerate documentation (default: ]_defopt[)]),
380ffab5952Smrg	   [use_xmlto=$withval], [use_xmlto=]_defopt)
381ffab5952Smrgm4_undefine([_defopt])
382ffab5952Smrg
383ffab5952Smrgif test "x$use_xmlto" = x"auto"; then
384ffab5952Smrg   AC_PATH_PROG([XMLTO], [xmlto])
385ffab5952Smrg   if test "x$XMLTO" = "x"; then
386ffab5952Smrg        AC_MSG_WARN([xmlto not found - documentation targets will be skipped])
387ffab5952Smrg	have_xmlto=no
388ffab5952Smrg   else
389ffab5952Smrg        have_xmlto=yes
390ffab5952Smrg   fi
391ffab5952Smrgelif test "x$use_xmlto" = x"yes" ; then
392ffab5952Smrg   AC_PATH_PROG([XMLTO], [xmlto])
393ffab5952Smrg   if test "x$XMLTO" = "x"; then
394ffab5952Smrg        AC_MSG_ERROR([--with-xmlto=yes specified but xmlto not found in PATH])
395ffab5952Smrg   fi
396ffab5952Smrg   have_xmlto=yes
397ffab5952Smrgelif test "x$use_xmlto" = x"no" ; then
398ffab5952Smrg   if test "x$XMLTO" != "x"; then
399ffab5952Smrg      AC_MSG_WARN([ignoring XMLTO environment variable since --with-xmlto=no was specified])
400ffab5952Smrg   fi
401ffab5952Smrg   have_xmlto=no
402ffab5952Smrgelse
403ffab5952Smrg   AC_MSG_ERROR([--with-xmlto expects 'yes' or 'no'])
404ffab5952Smrgfi
405ffab5952Smrg
406ffab5952Smrg# Test for a minimum version of xmlto, if provided.
407ffab5952Smrgm4_ifval([$1],
408ffab5952Smrg[if test "$have_xmlto" = yes; then
409ffab5952Smrg    # scrape the xmlto version
410ffab5952Smrg    AC_MSG_CHECKING([the xmlto version])
411ffab5952Smrg    xmlto_version=`$XMLTO --version 2>/dev/null | cut -d' ' -f3`
412ffab5952Smrg    AC_MSG_RESULT([$xmlto_version])
413ffab5952Smrg    AS_VERSION_COMPARE([$xmlto_version], [$1],
414ffab5952Smrg        [if test "x$use_xmlto" = xauto; then
415ffab5952Smrg            AC_MSG_WARN([xmlto version $xmlto_version found, but $1 needed])
416ffab5952Smrg            have_xmlto=no
417ffab5952Smrg        else
418ffab5952Smrg            AC_MSG_ERROR([xmlto version $xmlto_version found, but $1 needed])
419ffab5952Smrg        fi])
420ffab5952Smrgfi])
421ffab5952Smrg
422ffab5952Smrg# Test for the ability of xmlto to generate a text target
423ffab5952Smrghave_xmlto_text=no
424ffab5952Smrgcat > conftest.xml << "EOF"
425ffab5952SmrgEOF
426ffab5952SmrgAS_IF([test "$have_xmlto" = yes],
427ffab5952Smrg      [AS_IF([$XMLTO --skip-validation txt conftest.xml >/dev/null 2>&1],
428ffab5952Smrg             [have_xmlto_text=yes],
429ffab5952Smrg             [AC_MSG_WARN([xmlto cannot generate text format, this format skipped])])])
430ffab5952Smrgrm -f conftest.xml
431ffab5952SmrgAM_CONDITIONAL([HAVE_XMLTO_TEXT], [test $have_xmlto_text = yes])
432ffab5952SmrgAM_CONDITIONAL([HAVE_XMLTO], [test "$have_xmlto" = yes])
433ffab5952Smrg]) # XORG_WITH_XMLTO
434ffab5952Smrg
43562044635Smrg# XORG_WITH_XSLTPROC([MIN-VERSION], [DEFAULT])
43662044635Smrg# --------------------------------------------
43762044635Smrg# Minimum version: 1.12.0
43862044635Smrg# Minimum version for optional DEFAULT argument: 1.12.0
43962044635Smrg#
44062044635Smrg# XSLT (Extensible Stylesheet Language Transformations) is a declarative,
44162044635Smrg# XML-based language used for the transformation of XML documents.
44262044635Smrg# The xsltproc command line tool is for applying XSLT stylesheets to XML documents.
44362044635Smrg# It is used under the cover by xmlto to generate html files from DocBook/XML.
44462044635Smrg# The XSLT processor is often used as a standalone tool for transformations.
44562044635Smrg# It should not be assumed that this tool is used only to work with documnetation.
44662044635Smrg# When DEFAULT is not specified, --with-xsltproc assumes 'auto'.
44762044635Smrg#
44862044635Smrg# Interface to module:
44962044635Smrg# HAVE_XSLTPROC: used in makefiles to conditionally generate documentation
45062044635Smrg# XSLTPROC:	 returns the path of the xsltproc program found
45162044635Smrg#		 returns the path set by the user in the environment
45262044635Smrg# --with-xsltproc: 'yes' user instructs the module to use xsltproc
45362044635Smrg#		  'no' user instructs the module not to use xsltproc
45462044635Smrg# have_xsltproc: returns yes if xsltproc found in PATH or no
45562044635Smrg#
45662044635Smrg# If the user sets the value of XSLTPROC, AC_PATH_PROG skips testing the path.
45762044635Smrg#
45862044635SmrgAC_DEFUN([XORG_WITH_XSLTPROC],[
45962044635SmrgAC_ARG_VAR([XSLTPROC], [Path to xsltproc command])
46062044635Smrg# Preserves the interface, should it be implemented later
46162044635Smrgm4_ifval([$1], [m4_warn([syntax], [Checking for xsltproc MIN-VERSION is not implemented])])
46262044635Smrgm4_define([_defopt], m4_default([$2], [auto]))
46362044635SmrgAC_ARG_WITH(xsltproc,
46462044635Smrg	AS_HELP_STRING([--with-xsltproc],
46562044635Smrg	   [Use xsltproc for the transformation of XML documents (default: ]_defopt[)]),
46662044635Smrg	   [use_xsltproc=$withval], [use_xsltproc=]_defopt)
46762044635Smrgm4_undefine([_defopt])
46862044635Smrg
46962044635Smrgif test "x$use_xsltproc" = x"auto"; then
47062044635Smrg   AC_PATH_PROG([XSLTPROC], [xsltproc])
47162044635Smrg   if test "x$XSLTPROC" = "x"; then
47262044635Smrg        AC_MSG_WARN([xsltproc not found - cannot transform XML documents])
47362044635Smrg	have_xsltproc=no
47462044635Smrg   else
47562044635Smrg        have_xsltproc=yes
47662044635Smrg   fi
47762044635Smrgelif test "x$use_xsltproc" = x"yes" ; then
47862044635Smrg   AC_PATH_PROG([XSLTPROC], [xsltproc])
47962044635Smrg   if test "x$XSLTPROC" = "x"; then
48062044635Smrg        AC_MSG_ERROR([--with-xsltproc=yes specified but xsltproc not found in PATH])
48162044635Smrg   fi
48262044635Smrg   have_xsltproc=yes
48362044635Smrgelif test "x$use_xsltproc" = x"no" ; then
48462044635Smrg   if test "x$XSLTPROC" != "x"; then
48562044635Smrg      AC_MSG_WARN([ignoring XSLTPROC environment variable since --with-xsltproc=no was specified])
48662044635Smrg   fi
48762044635Smrg   have_xsltproc=no
48862044635Smrgelse
48962044635Smrg   AC_MSG_ERROR([--with-xsltproc expects 'yes' or 'no'])
49062044635Smrgfi
49162044635Smrg
49262044635SmrgAM_CONDITIONAL([HAVE_XSLTPROC], [test "$have_xsltproc" = yes])
49362044635Smrg]) # XORG_WITH_XSLTPROC
49462044635Smrg
49562044635Smrg# XORG_WITH_PERL([MIN-VERSION], [DEFAULT])
49662044635Smrg# ----------------------------------------
49762044635Smrg# Minimum version: 1.15.0
49862044635Smrg#
49962044635Smrg# PERL (Practical Extraction and Report Language) is a language optimized for
50062044635Smrg# scanning arbitrary text files, extracting information from those text files,
50162044635Smrg# and printing reports based on that information.
50262044635Smrg#
50362044635Smrg# When DEFAULT is not specified, --with-perl assumes 'auto'.
50462044635Smrg#
50562044635Smrg# Interface to module:
50662044635Smrg# HAVE_PERL: used in makefiles to conditionally scan text files
50762044635Smrg# PERL:	     returns the path of the perl program found
50862044635Smrg#	     returns the path set by the user in the environment
50962044635Smrg# --with-perl: 'yes' user instructs the module to use perl
51062044635Smrg#	       'no' user instructs the module not to use perl
51162044635Smrg# have_perl: returns yes if perl found in PATH or no
51262044635Smrg#
51362044635Smrg# If the user sets the value of PERL, AC_PATH_PROG skips testing the path.
51462044635Smrg#
51562044635SmrgAC_DEFUN([XORG_WITH_PERL],[
51662044635SmrgAC_ARG_VAR([PERL], [Path to perl command])
51762044635Smrg# Preserves the interface, should it be implemented later
51862044635Smrgm4_ifval([$1], [m4_warn([syntax], [Checking for perl MIN-VERSION is not implemented])])
51962044635Smrgm4_define([_defopt], m4_default([$2], [auto]))
52062044635SmrgAC_ARG_WITH(perl,
52162044635Smrg	AS_HELP_STRING([--with-perl],
52262044635Smrg	   [Use perl for extracting information from files (default: ]_defopt[)]),
52362044635Smrg	   [use_perl=$withval], [use_perl=]_defopt)
52462044635Smrgm4_undefine([_defopt])
52562044635Smrg
52662044635Smrgif test "x$use_perl" = x"auto"; then
52762044635Smrg   AC_PATH_PROG([PERL], [perl])
52862044635Smrg   if test "x$PERL" = "x"; then
52962044635Smrg        AC_MSG_WARN([perl not found - cannot extract information and report])
53062044635Smrg	have_perl=no
53162044635Smrg   else
53262044635Smrg        have_perl=yes
53362044635Smrg   fi
53462044635Smrgelif test "x$use_perl" = x"yes" ; then
53562044635Smrg   AC_PATH_PROG([PERL], [perl])
53662044635Smrg   if test "x$PERL" = "x"; then
53762044635Smrg        AC_MSG_ERROR([--with-perl=yes specified but perl not found in PATH])
53862044635Smrg   fi
53962044635Smrg   have_perl=yes
54062044635Smrgelif test "x$use_perl" = x"no" ; then
54162044635Smrg   if test "x$PERL" != "x"; then
54262044635Smrg      AC_MSG_WARN([ignoring PERL environment variable since --with-perl=no was specified])
54362044635Smrg   fi
54462044635Smrg   have_perl=no
54562044635Smrgelse
54662044635Smrg   AC_MSG_ERROR([--with-perl expects 'yes' or 'no'])
54762044635Smrgfi
54862044635Smrg
54962044635SmrgAM_CONDITIONAL([HAVE_PERL], [test "$have_perl" = yes])
55062044635Smrg]) # XORG_WITH_PERL
55162044635Smrg
552ffab5952Smrg# XORG_WITH_ASCIIDOC([MIN-VERSION], [DEFAULT])
553ffab5952Smrg# ----------------
554ffab5952Smrg# Minimum version: 1.5.0
555ffab5952Smrg# Minimum version for optional DEFAULT argument: 1.11.0
556ffab5952Smrg#
557ffab5952Smrg# Documentation tools are not always available on all platforms and sometimes
558ffab5952Smrg# not at the appropriate level. This macro enables a module to test for the
559ffab5952Smrg# presence of the tool and obtain it's path in separate variables. Coupled with
560ffab5952Smrg# the --with-asciidoc option, it allows maximum flexibilty in making decisions
561ffab5952Smrg# as whether or not to use the asciidoc package. When DEFAULT is not specified,
562ffab5952Smrg# --with-asciidoc assumes 'auto'.
563ffab5952Smrg#
564ffab5952Smrg# Interface to module:
565ffab5952Smrg# HAVE_ASCIIDOC: used in makefiles to conditionally generate documentation
566ffab5952Smrg# ASCIIDOC:	 returns the path of the asciidoc program found
567ffab5952Smrg#		 returns the path set by the user in the environment
568ffab5952Smrg# --with-asciidoc: 'yes' user instructs the module to use asciidoc
569ffab5952Smrg#		  'no' user instructs the module not to use asciidoc
570ffab5952Smrg#
571ffab5952Smrg# If the user sets the value of ASCIIDOC, AC_PATH_PROG skips testing the path.
572ffab5952Smrg#
573ffab5952SmrgAC_DEFUN([XORG_WITH_ASCIIDOC],[
574ffab5952SmrgAC_ARG_VAR([ASCIIDOC], [Path to asciidoc command])
575ffab5952Smrgm4_define([_defopt], m4_default([$2], [auto]))
576ffab5952SmrgAC_ARG_WITH(asciidoc,
577ffab5952Smrg	AS_HELP_STRING([--with-asciidoc],
578ffab5952Smrg	   [Use asciidoc to regenerate documentation (default: ]_defopt[)]),
579ffab5952Smrg	   [use_asciidoc=$withval], [use_asciidoc=]_defopt)
580ffab5952Smrgm4_undefine([_defopt])
581ffab5952Smrg
582ffab5952Smrgif test "x$use_asciidoc" = x"auto"; then
583ffab5952Smrg   AC_PATH_PROG([ASCIIDOC], [asciidoc])
584ffab5952Smrg   if test "x$ASCIIDOC" = "x"; then
585ffab5952Smrg        AC_MSG_WARN([asciidoc not found - documentation targets will be skipped])
586ffab5952Smrg	have_asciidoc=no
587ffab5952Smrg   else
588ffab5952Smrg        have_asciidoc=yes
589ffab5952Smrg   fi
590ffab5952Smrgelif test "x$use_asciidoc" = x"yes" ; then
591ffab5952Smrg   AC_PATH_PROG([ASCIIDOC], [asciidoc])
592ffab5952Smrg   if test "x$ASCIIDOC" = "x"; then
593ffab5952Smrg        AC_MSG_ERROR([--with-asciidoc=yes specified but asciidoc not found in PATH])
594ffab5952Smrg   fi
595ffab5952Smrg   have_asciidoc=yes
596ffab5952Smrgelif test "x$use_asciidoc" = x"no" ; then
597ffab5952Smrg   if test "x$ASCIIDOC" != "x"; then
598ffab5952Smrg      AC_MSG_WARN([ignoring ASCIIDOC environment variable since --with-asciidoc=no was specified])
599ffab5952Smrg   fi
600ffab5952Smrg   have_asciidoc=no
601ffab5952Smrgelse
602ffab5952Smrg   AC_MSG_ERROR([--with-asciidoc expects 'yes' or 'no'])
603ffab5952Smrgfi
604ffab5952Smrgm4_ifval([$1],
605ffab5952Smrg[if test "$have_asciidoc" = yes; then
606ffab5952Smrg    # scrape the asciidoc version
607ffab5952Smrg    AC_MSG_CHECKING([the asciidoc version])
608ffab5952Smrg    asciidoc_version=`$ASCIIDOC --version 2>/dev/null | cut -d' ' -f2`
609ffab5952Smrg    AC_MSG_RESULT([$asciidoc_version])
610ffab5952Smrg    AS_VERSION_COMPARE([$asciidoc_version], [$1],
611ffab5952Smrg        [if test "x$use_asciidoc" = xauto; then
612ffab5952Smrg            AC_MSG_WARN([asciidoc version $asciidoc_version found, but $1 needed])
613ffab5952Smrg            have_asciidoc=no
614ffab5952Smrg        else
615ffab5952Smrg            AC_MSG_ERROR([asciidoc version $asciidoc_version found, but $1 needed])
616ffab5952Smrg        fi])
617ffab5952Smrgfi])
618ffab5952SmrgAM_CONDITIONAL([HAVE_ASCIIDOC], [test "$have_asciidoc" = yes])
619ffab5952Smrg]) # XORG_WITH_ASCIIDOC
620ffab5952Smrg
621ffab5952Smrg# XORG_WITH_DOXYGEN([MIN-VERSION], [DEFAULT])
62243c16309Smrg# -------------------------------------------
623ffab5952Smrg# Minimum version: 1.5.0
624ffab5952Smrg# Minimum version for optional DEFAULT argument: 1.11.0
62543c16309Smrg# Minimum version for optional DOT checking: 1.18.0
626ffab5952Smrg#
627ffab5952Smrg# Documentation tools are not always available on all platforms and sometimes
628ffab5952Smrg# not at the appropriate level. This macro enables a module to test for the
629ffab5952Smrg# presence of the tool and obtain it's path in separate variables. Coupled with
630ffab5952Smrg# the --with-doxygen option, it allows maximum flexibilty in making decisions
631ffab5952Smrg# as whether or not to use the doxygen package. When DEFAULT is not specified,
632ffab5952Smrg# --with-doxygen assumes 'auto'.
633ffab5952Smrg#
634ffab5952Smrg# Interface to module:
635ffab5952Smrg# HAVE_DOXYGEN: used in makefiles to conditionally generate documentation
636ffab5952Smrg# DOXYGEN:	 returns the path of the doxygen program found
637ffab5952Smrg#		 returns the path set by the user in the environment
638ffab5952Smrg# --with-doxygen: 'yes' user instructs the module to use doxygen
639ffab5952Smrg#		  'no' user instructs the module not to use doxygen
640ffab5952Smrg#
641ffab5952Smrg# If the user sets the value of DOXYGEN, AC_PATH_PROG skips testing the path.
642ffab5952Smrg#
643ffab5952SmrgAC_DEFUN([XORG_WITH_DOXYGEN],[
644ffab5952SmrgAC_ARG_VAR([DOXYGEN], [Path to doxygen command])
64543c16309SmrgAC_ARG_VAR([DOT], [Path to the dot graphics utility])
646ffab5952Smrgm4_define([_defopt], m4_default([$2], [auto]))
647ffab5952SmrgAC_ARG_WITH(doxygen,
648ffab5952Smrg	AS_HELP_STRING([--with-doxygen],
649ffab5952Smrg	   [Use doxygen to regenerate documentation (default: ]_defopt[)]),
650ffab5952Smrg	   [use_doxygen=$withval], [use_doxygen=]_defopt)
651ffab5952Smrgm4_undefine([_defopt])
652ffab5952Smrg
653ffab5952Smrgif test "x$use_doxygen" = x"auto"; then
654ffab5952Smrg   AC_PATH_PROG([DOXYGEN], [doxygen])
655ffab5952Smrg   if test "x$DOXYGEN" = "x"; then
656ffab5952Smrg        AC_MSG_WARN([doxygen not found - documentation targets will be skipped])
657ffab5952Smrg	have_doxygen=no
658ffab5952Smrg   else
659ffab5952Smrg        have_doxygen=yes
660ffab5952Smrg   fi
661ffab5952Smrgelif test "x$use_doxygen" = x"yes" ; then
662ffab5952Smrg   AC_PATH_PROG([DOXYGEN], [doxygen])
663ffab5952Smrg   if test "x$DOXYGEN" = "x"; then
664ffab5952Smrg        AC_MSG_ERROR([--with-doxygen=yes specified but doxygen not found in PATH])
665ffab5952Smrg   fi
666ffab5952Smrg   have_doxygen=yes
667ffab5952Smrgelif test "x$use_doxygen" = x"no" ; then
668ffab5952Smrg   if test "x$DOXYGEN" != "x"; then
669ffab5952Smrg      AC_MSG_WARN([ignoring DOXYGEN environment variable since --with-doxygen=no was specified])
670ffab5952Smrg   fi
671ffab5952Smrg   have_doxygen=no
672ffab5952Smrgelse
673ffab5952Smrg   AC_MSG_ERROR([--with-doxygen expects 'yes' or 'no'])
674ffab5952Smrgfi
675ffab5952Smrgm4_ifval([$1],
676ffab5952Smrg[if test "$have_doxygen" = yes; then
677ffab5952Smrg    # scrape the doxygen version
678ffab5952Smrg    AC_MSG_CHECKING([the doxygen version])
679ffab5952Smrg    doxygen_version=`$DOXYGEN --version 2>/dev/null`
680ffab5952Smrg    AC_MSG_RESULT([$doxygen_version])
681ffab5952Smrg    AS_VERSION_COMPARE([$doxygen_version], [$1],
682ffab5952Smrg        [if test "x$use_doxygen" = xauto; then
683ffab5952Smrg            AC_MSG_WARN([doxygen version $doxygen_version found, but $1 needed])
684ffab5952Smrg            have_doxygen=no
685ffab5952Smrg        else
686ffab5952Smrg            AC_MSG_ERROR([doxygen version $doxygen_version found, but $1 needed])
687ffab5952Smrg        fi])
688ffab5952Smrgfi])
68943c16309Smrg
69043c16309Smrgdnl Check for DOT if we have doxygen. The caller decides if it is mandatory
69143c16309Smrgdnl HAVE_DOT is a variable that can be used in your doxygen.in config file:
69243c16309Smrgdnl 	HAVE_DOT = @HAVE_DOT@
69343c16309SmrgHAVE_DOT=no
69443c16309Smrgif test "x$have_doxygen" = "xyes"; then
69543c16309Smrg  AC_PATH_PROG([DOT], [dot])
69643c16309Smrg    if test "x$DOT" != "x"; then
69743c16309Smrg      HAVE_DOT=yes
69843c16309Smrg    fi
69943c16309Smrgfi
70043c16309Smrg
70143c16309SmrgAC_SUBST([HAVE_DOT])
70243c16309SmrgAM_CONDITIONAL([HAVE_DOT], [test "$HAVE_DOT" = "yes"])
703ffab5952SmrgAM_CONDITIONAL([HAVE_DOXYGEN], [test "$have_doxygen" = yes])
704ffab5952Smrg]) # XORG_WITH_DOXYGEN
705ffab5952Smrg
706ffab5952Smrg# XORG_WITH_GROFF([DEFAULT])
707ffab5952Smrg# ----------------
708ffab5952Smrg# Minimum version: 1.6.0
709ffab5952Smrg# Minimum version for optional DEFAULT argument: 1.11.0
710ffab5952Smrg#
711ffab5952Smrg# Documentation tools are not always available on all platforms and sometimes
712ffab5952Smrg# not at the appropriate level. This macro enables a module to test for the
713ffab5952Smrg# presence of the tool and obtain it's path in separate variables. Coupled with
714ffab5952Smrg# the --with-groff option, it allows maximum flexibilty in making decisions
715ffab5952Smrg# as whether or not to use the groff package. When DEFAULT is not specified,
716ffab5952Smrg# --with-groff assumes 'auto'.
717ffab5952Smrg#
718ffab5952Smrg# Interface to module:
719ffab5952Smrg# HAVE_GROFF:	 used in makefiles to conditionally generate documentation
720ffab5952Smrg# HAVE_GROFF_MM: the memorandum macros (-mm) package
721ffab5952Smrg# HAVE_GROFF_MS: the -ms macros package
722ffab5952Smrg# GROFF:	 returns the path of the groff program found
723ffab5952Smrg#		 returns the path set by the user in the environment
724ffab5952Smrg# --with-groff:	 'yes' user instructs the module to use groff
725ffab5952Smrg#		 'no' user instructs the module not to use groff
726ffab5952Smrg#
727ffab5952Smrg# Added in version 1.9.0:
728ffab5952Smrg# HAVE_GROFF_HTML: groff has dependencies to output HTML format:
729ffab5952Smrg#		   pnmcut pnmcrop pnmtopng pnmtops from the netpbm package.
730ffab5952Smrg#		   psselect from the psutils package.
731ffab5952Smrg#		   the ghostcript package. Refer to the grohtml man pages
732ffab5952Smrg#
733ffab5952Smrg# If the user sets the value of GROFF, AC_PATH_PROG skips testing the path.
734ffab5952Smrg#
735ffab5952Smrg# OS and distros often splits groff in a basic and full package, the former
736ffab5952Smrg# having the groff program and the later having devices, fonts and macros
737ffab5952Smrg# Checking for the groff executable is not enough.
738ffab5952Smrg#
739ffab5952Smrg# If macros are missing, we cannot assume that groff is useless, so we don't
740ffab5952Smrg# unset HAVE_GROFF or GROFF env variables.
741ffab5952Smrg# HAVE_GROFF_?? can never be true while HAVE_GROFF is false.
742ffab5952Smrg#
743ffab5952SmrgAC_DEFUN([XORG_WITH_GROFF],[
744ffab5952SmrgAC_ARG_VAR([GROFF], [Path to groff command])
745ffab5952Smrgm4_define([_defopt], m4_default([$1], [auto]))
746ffab5952SmrgAC_ARG_WITH(groff,
747ffab5952Smrg	AS_HELP_STRING([--with-groff],
748ffab5952Smrg	   [Use groff to regenerate documentation (default: ]_defopt[)]),
749ffab5952Smrg	   [use_groff=$withval], [use_groff=]_defopt)
750ffab5952Smrgm4_undefine([_defopt])
751ffab5952Smrg
752ffab5952Smrgif test "x$use_groff" = x"auto"; then
753ffab5952Smrg   AC_PATH_PROG([GROFF], [groff])
754ffab5952Smrg   if test "x$GROFF" = "x"; then
755ffab5952Smrg        AC_MSG_WARN([groff not found - documentation targets will be skipped])
756ffab5952Smrg	have_groff=no
757ffab5952Smrg   else
758ffab5952Smrg        have_groff=yes
759ffab5952Smrg   fi
760ffab5952Smrgelif test "x$use_groff" = x"yes" ; then
761ffab5952Smrg   AC_PATH_PROG([GROFF], [groff])
762ffab5952Smrg   if test "x$GROFF" = "x"; then
763ffab5952Smrg        AC_MSG_ERROR([--with-groff=yes specified but groff not found in PATH])
764ffab5952Smrg   fi
765ffab5952Smrg   have_groff=yes
766ffab5952Smrgelif test "x$use_groff" = x"no" ; then
767ffab5952Smrg   if test "x$GROFF" != "x"; then
768ffab5952Smrg      AC_MSG_WARN([ignoring GROFF environment variable since --with-groff=no was specified])
769ffab5952Smrg   fi
770ffab5952Smrg   have_groff=no
771ffab5952Smrgelse
772ffab5952Smrg   AC_MSG_ERROR([--with-groff expects 'yes' or 'no'])
773ffab5952Smrgfi
774ffab5952Smrg
775ffab5952Smrg# We have groff, test for the presence of the macro packages
776ffab5952Smrgif test "x$have_groff" = x"yes"; then
777ffab5952Smrg    AC_MSG_CHECKING([for ${GROFF} -ms macros])
778ffab5952Smrg    if ${GROFF} -ms -I. /dev/null >/dev/null 2>&1 ; then
779ffab5952Smrg        groff_ms_works=yes
780ffab5952Smrg    else
781ffab5952Smrg        groff_ms_works=no
782ffab5952Smrg    fi
783ffab5952Smrg    AC_MSG_RESULT([$groff_ms_works])
784ffab5952Smrg    AC_MSG_CHECKING([for ${GROFF} -mm macros])
785ffab5952Smrg    if ${GROFF} -mm -I. /dev/null >/dev/null 2>&1 ; then
786ffab5952Smrg        groff_mm_works=yes
787ffab5952Smrg    else
788ffab5952Smrg        groff_mm_works=no
789ffab5952Smrg    fi
790ffab5952Smrg    AC_MSG_RESULT([$groff_mm_works])
791ffab5952Smrgfi
792ffab5952Smrg
793ffab5952Smrg# We have groff, test for HTML dependencies, one command per package
794ffab5952Smrgif test "x$have_groff" = x"yes"; then
795ffab5952Smrg   AC_PATH_PROGS(GS_PATH, [gs gswin32c])
796ffab5952Smrg   AC_PATH_PROG(PNMTOPNG_PATH, [pnmtopng])
797ffab5952Smrg   AC_PATH_PROG(PSSELECT_PATH, [psselect])
798ffab5952Smrg   if test "x$GS_PATH" != "x" -a "x$PNMTOPNG_PATH" != "x" -a "x$PSSELECT_PATH" != "x"; then
799ffab5952Smrg      have_groff_html=yes
800ffab5952Smrg   else
801ffab5952Smrg      have_groff_html=no
802ffab5952Smrg      AC_MSG_WARN([grohtml dependencies not found - HTML Documentation skipped. Refer to grohtml man pages])
803ffab5952Smrg   fi
804ffab5952Smrgfi
805ffab5952Smrg
806ffab5952Smrg# Set Automake conditionals for Makefiles
807ffab5952SmrgAM_CONDITIONAL([HAVE_GROFF], [test "$have_groff" = yes])
808ffab5952SmrgAM_CONDITIONAL([HAVE_GROFF_MS], [test "$groff_ms_works" = yes])
809ffab5952SmrgAM_CONDITIONAL([HAVE_GROFF_MM], [test "$groff_mm_works" = yes])
810ffab5952SmrgAM_CONDITIONAL([HAVE_GROFF_HTML], [test "$have_groff_html" = yes])
811ffab5952Smrg]) # XORG_WITH_GROFF
812ffab5952Smrg
81362044635Smrg# XORG_WITH_FOP([MIN-VERSION], [DEFAULT])
81462044635Smrg# ---------------------------------------
815ffab5952Smrg# Minimum version: 1.6.0
816ffab5952Smrg# Minimum version for optional DEFAULT argument: 1.11.0
81762044635Smrg# Minimum version for optional MIN-VERSION argument: 1.15.0
818ffab5952Smrg#
819ffab5952Smrg# Documentation tools are not always available on all platforms and sometimes
820ffab5952Smrg# not at the appropriate level. This macro enables a module to test for the
821ffab5952Smrg# presence of the tool and obtain it's path in separate variables. Coupled with
822ffab5952Smrg# the --with-fop option, it allows maximum flexibilty in making decisions
823ffab5952Smrg# as whether or not to use the fop package. When DEFAULT is not specified,
824ffab5952Smrg# --with-fop assumes 'auto'.
825ffab5952Smrg#
826ffab5952Smrg# Interface to module:
827ffab5952Smrg# HAVE_FOP: 	used in makefiles to conditionally generate documentation
828ffab5952Smrg# FOP:	 	returns the path of the fop program found
829ffab5952Smrg#		returns the path set by the user in the environment
830ffab5952Smrg# --with-fop: 	'yes' user instructs the module to use fop
831ffab5952Smrg#		'no' user instructs the module not to use fop
832ffab5952Smrg#
833ffab5952Smrg# If the user sets the value of FOP, AC_PATH_PROG skips testing the path.
834ffab5952Smrg#
835ffab5952SmrgAC_DEFUN([XORG_WITH_FOP],[
836ffab5952SmrgAC_ARG_VAR([FOP], [Path to fop command])
83762044635Smrgm4_define([_defopt], m4_default([$2], [auto]))
838ffab5952SmrgAC_ARG_WITH(fop,
839ffab5952Smrg	AS_HELP_STRING([--with-fop],
840ffab5952Smrg	   [Use fop to regenerate documentation (default: ]_defopt[)]),
841ffab5952Smrg	   [use_fop=$withval], [use_fop=]_defopt)
842ffab5952Smrgm4_undefine([_defopt])
843ffab5952Smrg
844ffab5952Smrgif test "x$use_fop" = x"auto"; then
845ffab5952Smrg   AC_PATH_PROG([FOP], [fop])
846ffab5952Smrg   if test "x$FOP" = "x"; then
847ffab5952Smrg        AC_MSG_WARN([fop not found - documentation targets will be skipped])
848ffab5952Smrg	have_fop=no
849ffab5952Smrg   else
850ffab5952Smrg        have_fop=yes
851ffab5952Smrg   fi
852ffab5952Smrgelif test "x$use_fop" = x"yes" ; then
853ffab5952Smrg   AC_PATH_PROG([FOP], [fop])
854ffab5952Smrg   if test "x$FOP" = "x"; then
855ffab5952Smrg        AC_MSG_ERROR([--with-fop=yes specified but fop not found in PATH])
856ffab5952Smrg   fi
857ffab5952Smrg   have_fop=yes
858ffab5952Smrgelif test "x$use_fop" = x"no" ; then
859ffab5952Smrg   if test "x$FOP" != "x"; then
860ffab5952Smrg      AC_MSG_WARN([ignoring FOP environment variable since --with-fop=no was specified])
861ffab5952Smrg   fi
862ffab5952Smrg   have_fop=no
863ffab5952Smrgelse
864ffab5952Smrg   AC_MSG_ERROR([--with-fop expects 'yes' or 'no'])
865ffab5952Smrgfi
86662044635Smrg
86762044635Smrg# Test for a minimum version of fop, if provided.
86862044635Smrgm4_ifval([$1],
86962044635Smrg[if test "$have_fop" = yes; then
87062044635Smrg    # scrape the fop version
87162044635Smrg    AC_MSG_CHECKING([for fop minimum version])
87262044635Smrg    fop_version=`$FOP -version 2>/dev/null | cut -d' ' -f3`
87362044635Smrg    AC_MSG_RESULT([$fop_version])
87462044635Smrg    AS_VERSION_COMPARE([$fop_version], [$1],
87562044635Smrg        [if test "x$use_fop" = xauto; then
87662044635Smrg            AC_MSG_WARN([fop version $fop_version found, but $1 needed])
87762044635Smrg            have_fop=no
87862044635Smrg        else
87962044635Smrg            AC_MSG_ERROR([fop version $fop_version found, but $1 needed])
88062044635Smrg        fi])
88162044635Smrgfi])
882ffab5952SmrgAM_CONDITIONAL([HAVE_FOP], [test "$have_fop" = yes])
883ffab5952Smrg]) # XORG_WITH_FOP
884ffab5952Smrg
885ffab5952Smrg# XORG_WITH_PS2PDF([DEFAULT])
886ffab5952Smrg# ----------------
887ffab5952Smrg# Minimum version: 1.6.0
888ffab5952Smrg# Minimum version for optional DEFAULT argument: 1.11.0
889ffab5952Smrg#
890ffab5952Smrg# Documentation tools are not always available on all platforms and sometimes
891ffab5952Smrg# not at the appropriate level. This macro enables a module to test for the
892ffab5952Smrg# presence of the tool and obtain it's path in separate variables. Coupled with
893ffab5952Smrg# the --with-ps2pdf option, it allows maximum flexibilty in making decisions
894ffab5952Smrg# as whether or not to use the ps2pdf package. When DEFAULT is not specified,
895ffab5952Smrg# --with-ps2pdf assumes 'auto'.
896ffab5952Smrg#
897ffab5952Smrg# Interface to module:
898ffab5952Smrg# HAVE_PS2PDF: 	used in makefiles to conditionally generate documentation
899ffab5952Smrg# PS2PDF:	returns the path of the ps2pdf program found
900ffab5952Smrg#		returns the path set by the user in the environment
901ffab5952Smrg# --with-ps2pdf: 'yes' user instructs the module to use ps2pdf
902ffab5952Smrg#		 'no' user instructs the module not to use ps2pdf
903ffab5952Smrg#
904ffab5952Smrg# If the user sets the value of PS2PDF, AC_PATH_PROG skips testing the path.
905ffab5952Smrg#
906ffab5952SmrgAC_DEFUN([XORG_WITH_PS2PDF],[
907ffab5952SmrgAC_ARG_VAR([PS2PDF], [Path to ps2pdf command])
908ffab5952Smrgm4_define([_defopt], m4_default([$1], [auto]))
909ffab5952SmrgAC_ARG_WITH(ps2pdf,
910ffab5952Smrg	AS_HELP_STRING([--with-ps2pdf],
911ffab5952Smrg	   [Use ps2pdf to regenerate documentation (default: ]_defopt[)]),
912ffab5952Smrg	   [use_ps2pdf=$withval], [use_ps2pdf=]_defopt)
913ffab5952Smrgm4_undefine([_defopt])
914ffab5952Smrg
915ffab5952Smrgif test "x$use_ps2pdf" = x"auto"; then
916ffab5952Smrg   AC_PATH_PROG([PS2PDF], [ps2pdf])
917ffab5952Smrg   if test "x$PS2PDF" = "x"; then
918ffab5952Smrg        AC_MSG_WARN([ps2pdf not found - documentation targets will be skipped])
919ffab5952Smrg	have_ps2pdf=no
920ffab5952Smrg   else
921ffab5952Smrg        have_ps2pdf=yes
922ffab5952Smrg   fi
923ffab5952Smrgelif test "x$use_ps2pdf" = x"yes" ; then
924ffab5952Smrg   AC_PATH_PROG([PS2PDF], [ps2pdf])
925ffab5952Smrg   if test "x$PS2PDF" = "x"; then
926ffab5952Smrg        AC_MSG_ERROR([--with-ps2pdf=yes specified but ps2pdf not found in PATH])
927ffab5952Smrg   fi
928ffab5952Smrg   have_ps2pdf=yes
929ffab5952Smrgelif test "x$use_ps2pdf" = x"no" ; then
930ffab5952Smrg   if test "x$PS2PDF" != "x"; then
931ffab5952Smrg      AC_MSG_WARN([ignoring PS2PDF environment variable since --with-ps2pdf=no was specified])
932ffab5952Smrg   fi
933ffab5952Smrg   have_ps2pdf=no
934ffab5952Smrgelse
935ffab5952Smrg   AC_MSG_ERROR([--with-ps2pdf expects 'yes' or 'no'])
936ffab5952Smrgfi
937ffab5952SmrgAM_CONDITIONAL([HAVE_PS2PDF], [test "$have_ps2pdf" = yes])
938ffab5952Smrg]) # XORG_WITH_PS2PDF
939ffab5952Smrg
940ffab5952Smrg# XORG_ENABLE_DOCS (enable_docs=yes)
941ffab5952Smrg# ----------------
942ffab5952Smrg# Minimum version: 1.6.0
943ffab5952Smrg#
944ffab5952Smrg# Documentation tools are not always available on all platforms and sometimes
945ffab5952Smrg# not at the appropriate level. This macro enables a builder to skip all
946ffab5952Smrg# documentation targets except traditional man pages.
947ffab5952Smrg# Combined with the specific tool checking macros XORG_WITH_*, it provides
948ffab5952Smrg# maximum flexibilty in controlling documentation building.
949ffab5952Smrg# Refer to:
950ffab5952Smrg# XORG_WITH_XMLTO         --with-xmlto
951ffab5952Smrg# XORG_WITH_ASCIIDOC      --with-asciidoc
952ffab5952Smrg# XORG_WITH_DOXYGEN       --with-doxygen
953ffab5952Smrg# XORG_WITH_FOP           --with-fop
954ffab5952Smrg# XORG_WITH_GROFF         --with-groff
955ffab5952Smrg# XORG_WITH_PS2PDF        --with-ps2pdf
956ffab5952Smrg#
957ffab5952Smrg# Interface to module:
958ffab5952Smrg# ENABLE_DOCS: 	  used in makefiles to conditionally generate documentation
959ffab5952Smrg# --enable-docs: 'yes' user instructs the module to generate docs
960ffab5952Smrg#		 'no' user instructs the module not to generate docs
961ffab5952Smrg# parm1:	specify the default value, yes or no.
962ffab5952Smrg#
963ffab5952SmrgAC_DEFUN([XORG_ENABLE_DOCS],[
96462044635Smrgm4_define([docs_default], m4_default([$1], [yes]))
965ffab5952SmrgAC_ARG_ENABLE(docs,
966ffab5952Smrg	AS_HELP_STRING([--enable-docs],
96762044635Smrg	   [Enable building the documentation (default: ]docs_default[)]),
96862044635Smrg	   [build_docs=$enableval], [build_docs=]docs_default)
96962044635Smrgm4_undefine([docs_default])
970ffab5952SmrgAM_CONDITIONAL(ENABLE_DOCS, [test x$build_docs = xyes])
971ffab5952SmrgAC_MSG_CHECKING([whether to build documentation])
972ffab5952SmrgAC_MSG_RESULT([$build_docs])
973ffab5952Smrg]) # XORG_ENABLE_DOCS
974ffab5952Smrg
975ffab5952Smrg# XORG_ENABLE_DEVEL_DOCS (enable_devel_docs=yes)
976ffab5952Smrg# ----------------
977ffab5952Smrg# Minimum version: 1.6.0
978ffab5952Smrg#
979ffab5952Smrg# This macro enables a builder to skip all developer documentation.
980ffab5952Smrg# Combined with the specific tool checking macros XORG_WITH_*, it provides
981ffab5952Smrg# maximum flexibilty in controlling documentation building.
982ffab5952Smrg# Refer to:
983ffab5952Smrg# XORG_WITH_XMLTO         --with-xmlto
984ffab5952Smrg# XORG_WITH_ASCIIDOC      --with-asciidoc
985ffab5952Smrg# XORG_WITH_DOXYGEN       --with-doxygen
986ffab5952Smrg# XORG_WITH_FOP           --with-fop
987ffab5952Smrg# XORG_WITH_GROFF         --with-groff
988ffab5952Smrg# XORG_WITH_PS2PDF        --with-ps2pdf
989ffab5952Smrg#
990ffab5952Smrg# Interface to module:
991ffab5952Smrg# ENABLE_DEVEL_DOCS:	used in makefiles to conditionally generate developer docs
992ffab5952Smrg# --enable-devel-docs:	'yes' user instructs the module to generate developer docs
993ffab5952Smrg#			'no' user instructs the module not to generate developer docs
994ffab5952Smrg# parm1:		specify the default value, yes or no.
995ffab5952Smrg#
996ffab5952SmrgAC_DEFUN([XORG_ENABLE_DEVEL_DOCS],[
997ffab5952Smrgm4_define([devel_default], m4_default([$1], [yes]))
998ffab5952SmrgAC_ARG_ENABLE(devel-docs,
999ffab5952Smrg	AS_HELP_STRING([--enable-devel-docs],
1000ffab5952Smrg	   [Enable building the developer documentation (default: ]devel_default[)]),
1001ffab5952Smrg	   [build_devel_docs=$enableval], [build_devel_docs=]devel_default)
1002ffab5952Smrgm4_undefine([devel_default])
1003ffab5952SmrgAM_CONDITIONAL(ENABLE_DEVEL_DOCS, [test x$build_devel_docs = xyes])
1004ffab5952SmrgAC_MSG_CHECKING([whether to build developer documentation])
1005ffab5952SmrgAC_MSG_RESULT([$build_devel_docs])
1006ffab5952Smrg]) # XORG_ENABLE_DEVEL_DOCS
1007ffab5952Smrg
1008ffab5952Smrg# XORG_ENABLE_SPECS (enable_specs=yes)
1009ffab5952Smrg# ----------------
1010ffab5952Smrg# Minimum version: 1.6.0
1011ffab5952Smrg#
1012ffab5952Smrg# This macro enables a builder to skip all functional specification targets.
1013ffab5952Smrg# Combined with the specific tool checking macros XORG_WITH_*, it provides
1014ffab5952Smrg# maximum flexibilty in controlling documentation building.
1015ffab5952Smrg# Refer to:
1016ffab5952Smrg# XORG_WITH_XMLTO         --with-xmlto
1017ffab5952Smrg# XORG_WITH_ASCIIDOC      --with-asciidoc
1018ffab5952Smrg# XORG_WITH_DOXYGEN       --with-doxygen
1019ffab5952Smrg# XORG_WITH_FOP           --with-fop
1020ffab5952Smrg# XORG_WITH_GROFF         --with-groff
1021ffab5952Smrg# XORG_WITH_PS2PDF        --with-ps2pdf
1022ffab5952Smrg#
1023ffab5952Smrg# Interface to module:
1024ffab5952Smrg# ENABLE_SPECS:		used in makefiles to conditionally generate specs
1025ffab5952Smrg# --enable-specs:	'yes' user instructs the module to generate specs
1026ffab5952Smrg#			'no' user instructs the module not to generate specs
1027ffab5952Smrg# parm1:		specify the default value, yes or no.
1028ffab5952Smrg#
1029ffab5952SmrgAC_DEFUN([XORG_ENABLE_SPECS],[
1030ffab5952Smrgm4_define([spec_default], m4_default([$1], [yes]))
1031ffab5952SmrgAC_ARG_ENABLE(specs,
1032ffab5952Smrg	AS_HELP_STRING([--enable-specs],
1033ffab5952Smrg	   [Enable building the specs (default: ]spec_default[)]),
1034ffab5952Smrg	   [build_specs=$enableval], [build_specs=]spec_default)
1035ffab5952Smrgm4_undefine([spec_default])
1036ffab5952SmrgAM_CONDITIONAL(ENABLE_SPECS, [test x$build_specs = xyes])
1037ffab5952SmrgAC_MSG_CHECKING([whether to build functional specifications])
1038ffab5952SmrgAC_MSG_RESULT([$build_specs])
1039ffab5952Smrg]) # XORG_ENABLE_SPECS
1040ffab5952Smrg
104162044635Smrg# XORG_ENABLE_UNIT_TESTS (enable_unit_tests=auto)
104262044635Smrg# ----------------------------------------------
104362044635Smrg# Minimum version: 1.13.0
104462044635Smrg#
104562044635Smrg# This macro enables a builder to enable/disable unit testing
104662044635Smrg# It makes no assumption about the test cases implementation
104762044635Smrg# Test cases may or may not use Automake "Support for test suites"
104862044635Smrg# They may or may not use the software utility library GLib
104962044635Smrg#
105062044635Smrg# When used in conjunction with XORG_WITH_GLIB, use both AM_CONDITIONAL
105162044635Smrg# ENABLE_UNIT_TESTS and HAVE_GLIB. Not all unit tests may use glib.
105262044635Smrg# The variable enable_unit_tests is used by other macros in this file.
105362044635Smrg#
105462044635Smrg# Interface to module:
105562044635Smrg# ENABLE_UNIT_TESTS:	used in makefiles to conditionally build tests
105662044635Smrg# enable_unit_tests:    used in configure.ac for additional configuration
105762044635Smrg# --enable-unit-tests:	'yes' user instructs the module to build tests
105862044635Smrg#			'no' user instructs the module not to build tests
105962044635Smrg# parm1:		specify the default value, yes or no.
106062044635Smrg#
106162044635SmrgAC_DEFUN([XORG_ENABLE_UNIT_TESTS],[
106262044635SmrgAC_BEFORE([$0], [XORG_WITH_GLIB])
106362044635SmrgAC_BEFORE([$0], [XORG_LD_WRAP])
10643ae17ff1SmrgAC_REQUIRE([XORG_MEMORY_CHECK_FLAGS])
106562044635Smrgm4_define([_defopt], m4_default([$1], [auto]))
106662044635SmrgAC_ARG_ENABLE(unit-tests, AS_HELP_STRING([--enable-unit-tests],
106762044635Smrg	[Enable building unit test cases (default: ]_defopt[)]),
106862044635Smrg	[enable_unit_tests=$enableval], [enable_unit_tests=]_defopt)
106962044635Smrgm4_undefine([_defopt])
107062044635SmrgAM_CONDITIONAL(ENABLE_UNIT_TESTS, [test "x$enable_unit_tests" != xno])
107162044635SmrgAC_MSG_CHECKING([whether to build unit test cases])
107262044635SmrgAC_MSG_RESULT([$enable_unit_tests])
107362044635Smrg]) # XORG_ENABLE_UNIT_TESTS
107462044635Smrg
10753ae17ff1Smrg# XORG_ENABLE_INTEGRATION_TESTS (enable_unit_tests=auto)
10763ae17ff1Smrg# ------------------------------------------------------
10773ae17ff1Smrg# Minimum version: 1.17.0
10783ae17ff1Smrg#
10793ae17ff1Smrg# This macro enables a builder to enable/disable integration testing
10803ae17ff1Smrg# It makes no assumption about the test cases' implementation
10813ae17ff1Smrg# Test cases may or may not use Automake "Support for test suites"
10823ae17ff1Smrg#
10833ae17ff1Smrg# Please see XORG_ENABLE_UNIT_TESTS for unit test support. Unit test support
10843ae17ff1Smrg# usually requires less dependencies and may be built and run under less
10853ae17ff1Smrg# stringent environments than integration tests.
10863ae17ff1Smrg#
10873ae17ff1Smrg# Interface to module:
10883ae17ff1Smrg# ENABLE_INTEGRATION_TESTS:   used in makefiles to conditionally build tests
10893ae17ff1Smrg# enable_integration_tests:   used in configure.ac for additional configuration
10903ae17ff1Smrg# --enable-integration-tests: 'yes' user instructs the module to build tests
10913ae17ff1Smrg#                             'no' user instructs the module not to build tests
10923ae17ff1Smrg# parm1:                      specify the default value, yes or no.
10933ae17ff1Smrg#
10943ae17ff1SmrgAC_DEFUN([XORG_ENABLE_INTEGRATION_TESTS],[
10953ae17ff1SmrgAC_REQUIRE([XORG_MEMORY_CHECK_FLAGS])
10963ae17ff1Smrgm4_define([_defopt], m4_default([$1], [auto]))
10973ae17ff1SmrgAC_ARG_ENABLE(integration-tests, AS_HELP_STRING([--enable-integration-tests],
10983ae17ff1Smrg	[Enable building integration test cases (default: ]_defopt[)]),
10993ae17ff1Smrg	[enable_integration_tests=$enableval],
11003ae17ff1Smrg	[enable_integration_tests=]_defopt)
11013ae17ff1Smrgm4_undefine([_defopt])
11023ae17ff1SmrgAM_CONDITIONAL([ENABLE_INTEGRATION_TESTS],
11033ae17ff1Smrg	[test "x$enable_integration_tests" != xno])
11043ae17ff1SmrgAC_MSG_CHECKING([whether to build unit test cases])
11053ae17ff1SmrgAC_MSG_RESULT([$enable_integration_tests])
11063ae17ff1Smrg]) # XORG_ENABLE_INTEGRATION_TESTS
11073ae17ff1Smrg
110862044635Smrg# XORG_WITH_GLIB([MIN-VERSION], [DEFAULT])
110962044635Smrg# ----------------------------------------
111062044635Smrg# Minimum version: 1.13.0
111162044635Smrg#
111262044635Smrg# GLib is a library which provides advanced data structures and functions.
111362044635Smrg# This macro enables a module to test for the presence of Glib.
111462044635Smrg#
111562044635Smrg# When used with ENABLE_UNIT_TESTS, it is assumed GLib is used for unit testing.
111662044635Smrg# Otherwise the value of $enable_unit_tests is blank.
111762044635Smrg#
11183ae17ff1Smrg# Please see XORG_ENABLE_INTEGRATION_TESTS for integration test support. Unit
11193ae17ff1Smrg# test support usually requires less dependencies and may be built and run under
11203ae17ff1Smrg# less stringent environments than integration tests.
11213ae17ff1Smrg#
112262044635Smrg# Interface to module:
112362044635Smrg# HAVE_GLIB: used in makefiles to conditionally build targets
112462044635Smrg# with_glib: used in configure.ac to know if GLib has been found
112562044635Smrg# --with-glib:	'yes' user instructs the module to use glib
112662044635Smrg#		'no' user instructs the module not to use glib
112762044635Smrg#
112862044635SmrgAC_DEFUN([XORG_WITH_GLIB],[
112962044635SmrgAC_REQUIRE([PKG_PROG_PKG_CONFIG])
113062044635Smrgm4_define([_defopt], m4_default([$2], [auto]))
113162044635SmrgAC_ARG_WITH(glib, AS_HELP_STRING([--with-glib],
113262044635Smrg	[Use GLib library for unit testing (default: ]_defopt[)]),
113362044635Smrg	[with_glib=$withval], [with_glib=]_defopt)
113462044635Smrgm4_undefine([_defopt])
113562044635Smrg
113662044635Smrghave_glib=no
113762044635Smrg# Do not probe GLib if user explicitly disabled unit testing
113862044635Smrgif test "x$enable_unit_tests" != x"no"; then
113962044635Smrg  # Do not probe GLib if user explicitly disabled it
114062044635Smrg  if test "x$with_glib" != x"no"; then
114162044635Smrg    m4_ifval(
114262044635Smrg      [$1],
114362044635Smrg      [PKG_CHECK_MODULES([GLIB], [glib-2.0 >= $1], [have_glib=yes], [have_glib=no])],
114462044635Smrg      [PKG_CHECK_MODULES([GLIB], [glib-2.0], [have_glib=yes], [have_glib=no])]
114562044635Smrg    )
114662044635Smrg  fi
114762044635Smrgfi
114862044635Smrg
114962044635Smrg# Not having GLib when unit testing has been explicitly requested is an error
115062044635Smrgif test "x$enable_unit_tests" = x"yes"; then
115162044635Smrg  if test "x$have_glib" = x"no"; then
115262044635Smrg    AC_MSG_ERROR([--enable-unit-tests=yes specified but glib-2.0 not found])
115362044635Smrg  fi
115462044635Smrgfi
115562044635Smrg
115662044635Smrg# Having unit testing disabled when GLib has been explicitly requested is an error
115762044635Smrgif test "x$enable_unit_tests" = x"no"; then
115862044635Smrg  if test "x$with_glib" = x"yes"; then
115962044635Smrg    AC_MSG_ERROR([--enable-unit-tests=yes specified but glib-2.0 not found])
116062044635Smrg  fi
116162044635Smrgfi
116262044635Smrg
116362044635Smrg# Not having GLib when it has been explicitly requested is an error
116462044635Smrgif test "x$with_glib" = x"yes"; then
116562044635Smrg  if test "x$have_glib" = x"no"; then
116662044635Smrg    AC_MSG_ERROR([--with-glib=yes specified but glib-2.0 not found])
116762044635Smrg  fi
116862044635Smrgfi
116962044635Smrg
117062044635SmrgAM_CONDITIONAL([HAVE_GLIB], [test "$have_glib" = yes])
117162044635Smrg]) # XORG_WITH_GLIB
117262044635Smrg
11733ae17ff1Smrg# XORG_LD_WRAP([required|optional])
11743ae17ff1Smrg# ---------------------------------
117562044635Smrg# Minimum version: 1.13.0
117662044635Smrg#
117762044635Smrg# Check if linker supports -wrap, passed via compiler flags
117862044635Smrg#
117962044635Smrg# When used with ENABLE_UNIT_TESTS, it is assumed -wrap is used for unit testing.
118062044635Smrg# Otherwise the value of $enable_unit_tests is blank.
118162044635Smrg#
11823ae17ff1Smrg# Argument added in 1.16.0 - default is "required", to match existing behavior
11833ae17ff1Smrg# of returning an error if enable_unit_tests is yes, and ld -wrap is not
11843ae17ff1Smrg# available, an argument of "optional" allows use when some unit tests require
11853ae17ff1Smrg# ld -wrap and others do not.
11863ae17ff1Smrg#
118762044635SmrgAC_DEFUN([XORG_LD_WRAP],[
11883ae17ff1SmrgXORG_CHECK_LINKER_FLAGS([-Wl,-wrap,exit],[have_ld_wrap=yes],[have_ld_wrap=no],
11893ae17ff1Smrg    [AC_LANG_PROGRAM([#include <stdlib.h>
11903ae17ff1Smrg                      void __wrap_exit(int status) { return; }],
11913ae17ff1Smrg                     [exit(0);])])
119262044635Smrg# Not having ld wrap when unit testing has been explicitly requested is an error
11933ae17ff1Smrgif test "x$enable_unit_tests" = x"yes" -a "x$1" != "xoptional"; then
119462044635Smrg  if test "x$have_ld_wrap" = x"no"; then
119562044635Smrg    AC_MSG_ERROR([--enable-unit-tests=yes specified but ld -wrap support is not available])
119662044635Smrg  fi
119762044635Smrgfi
119862044635SmrgAM_CONDITIONAL([HAVE_LD_WRAP], [test "$have_ld_wrap" = yes])
119962044635Smrg#
120062044635Smrg]) # XORG_LD_WRAP
120162044635Smrg
120262044635Smrg# XORG_CHECK_LINKER_FLAGS
120362044635Smrg# -----------------------
120462044635Smrg# SYNOPSIS
120562044635Smrg#
12063ae17ff1Smrg#   XORG_CHECK_LINKER_FLAGS(FLAGS, [ACTION-SUCCESS], [ACTION-FAILURE], [PROGRAM-SOURCE])
120762044635Smrg#
120862044635Smrg# DESCRIPTION
120962044635Smrg#
121062044635Smrg#   Check whether the given linker FLAGS work with the current language's
121162044635Smrg#   linker, or whether they give an error.
121262044635Smrg#
121362044635Smrg#   ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
121462044635Smrg#   success/failure.
121562044635Smrg#
12163ae17ff1Smrg#   PROGRAM-SOURCE is the program source to link with, if needed
12173ae17ff1Smrg#
121862044635Smrg#   NOTE: Based on AX_CHECK_COMPILER_FLAGS.
121962044635Smrg#
122062044635Smrg# LICENSE
122162044635Smrg#
122262044635Smrg#   Copyright (c) 2009 Mike Frysinger <vapier@gentoo.org>
122362044635Smrg#   Copyright (c) 2009 Steven G. Johnson <stevenj@alum.mit.edu>
122462044635Smrg#   Copyright (c) 2009 Matteo Frigo
122562044635Smrg#
122662044635Smrg#   This program is free software: you can redistribute it and/or modify it
122762044635Smrg#   under the terms of the GNU General Public License as published by the
122862044635Smrg#   Free Software Foundation, either version 3 of the License, or (at your
122962044635Smrg#   option) any later version.
123062044635Smrg#
123162044635Smrg#   This program is distributed in the hope that it will be useful, but
123262044635Smrg#   WITHOUT ANY WARRANTY; without even the implied warranty of
123362044635Smrg#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
123462044635Smrg#   Public License for more details.
123562044635Smrg#
123662044635Smrg#   You should have received a copy of the GNU General Public License along
123762044635Smrg#   with this program. If not, see <http://www.gnu.org/licenses/>.
123862044635Smrg#
123962044635Smrg#   As a special exception, the respective Autoconf Macro's copyright owner
124062044635Smrg#   gives unlimited permission to copy, distribute and modify the configure
124162044635Smrg#   scripts that are the output of Autoconf when processing the Macro. You
124262044635Smrg#   need not follow the terms of the GNU General Public License when using
124362044635Smrg#   or distributing such scripts, even though portions of the text of the
124462044635Smrg#   Macro appear in them. The GNU General Public License (GPL) does govern
124562044635Smrg#   all other use of the material that constitutes the Autoconf Macro.
124662044635Smrg#
124762044635Smrg#   This special exception to the GPL applies to versions of the Autoconf
124862044635Smrg#   Macro released by the Autoconf Archive. When you make and distribute a
124962044635Smrg#   modified version of the Autoconf Macro, you may extend this special
125062044635Smrg#   exception to the GPL to apply to your modified version as well.#
125162044635SmrgAC_DEFUN([XORG_CHECK_LINKER_FLAGS],
125262044635Smrg[AC_MSG_CHECKING([whether the linker accepts $1])
125362044635Smrgdnl Some hackery here since AC_CACHE_VAL can't handle a non-literal varname:
125462044635SmrgAS_LITERAL_IF([$1],
125562044635Smrg  [AC_CACHE_VAL(AS_TR_SH(xorg_cv_linker_flags_[$1]), [
125662044635Smrg      ax_save_FLAGS=$LDFLAGS
125762044635Smrg      LDFLAGS="$1"
12583ae17ff1Smrg      AC_LINK_IFELSE([m4_default([$4],[AC_LANG_PROGRAM()])],
125962044635Smrg        AS_TR_SH(xorg_cv_linker_flags_[$1])=yes,
126062044635Smrg        AS_TR_SH(xorg_cv_linker_flags_[$1])=no)
126162044635Smrg      LDFLAGS=$ax_save_FLAGS])],
126262044635Smrg  [ax_save_FLAGS=$LDFLAGS
126362044635Smrg   LDFLAGS="$1"
126462044635Smrg   AC_LINK_IFELSE([AC_LANG_PROGRAM()],
126562044635Smrg     eval AS_TR_SH(xorg_cv_linker_flags_[$1])=yes,
126662044635Smrg     eval AS_TR_SH(xorg_cv_linker_flags_[$1])=no)
126762044635Smrg   LDFLAGS=$ax_save_FLAGS])
126862044635Smrgeval xorg_check_linker_flags=$AS_TR_SH(xorg_cv_linker_flags_[$1])
126962044635SmrgAC_MSG_RESULT($xorg_check_linker_flags)
127062044635Smrgif test "x$xorg_check_linker_flags" = xyes; then
127162044635Smrg	m4_default([$2], :)
127262044635Smrgelse
127362044635Smrg	m4_default([$3], :)
127462044635Smrgfi
127562044635Smrg]) # XORG_CHECK_LINKER_FLAGS
127662044635Smrg
12773ae17ff1Smrg# XORG_MEMORY_CHECK_FLAGS
12783ae17ff1Smrg# -----------------------
12793ae17ff1Smrg# Minimum version: 1.16.0
12803ae17ff1Smrg#
12813ae17ff1Smrg# This macro attempts to find appropriate memory checking functionality
12823ae17ff1Smrg# for various platforms which unit testing code may use to catch various
12833ae17ff1Smrg# forms of memory allocation and access errors in testing.
12843ae17ff1Smrg#
12853ae17ff1Smrg# Interface to module:
12863ae17ff1Smrg# XORG_MALLOC_DEBUG_ENV - environment variables to set to enable debugging
12873ae17ff1Smrg#                         Usually added to TESTS_ENVIRONMENT in Makefile.am
12883ae17ff1Smrg#
12893ae17ff1Smrg# If the user sets the value of XORG_MALLOC_DEBUG_ENV, it is used verbatim.
12903ae17ff1Smrg#
12913ae17ff1SmrgAC_DEFUN([XORG_MEMORY_CHECK_FLAGS],[
12923ae17ff1Smrg
12933ae17ff1SmrgAC_REQUIRE([AC_CANONICAL_HOST])
12943ae17ff1SmrgAC_ARG_VAR([XORG_MALLOC_DEBUG_ENV],
12953ae17ff1Smrg           [Environment variables to enable memory checking in tests])
12963ae17ff1Smrg
12973ae17ff1Smrg# Check for different types of support on different platforms
12983ae17ff1Smrgcase $host_os in
12993ae17ff1Smrg    solaris*)
13003ae17ff1Smrg        AC_CHECK_LIB([umem], [umem_alloc],
13013ae17ff1Smrg            [malloc_debug_env='LD_PRELOAD=libumem.so UMEM_DEBUG=default'])
13023ae17ff1Smrg        ;;
13033ae17ff1Smrg    *-gnu*) # GNU libc - Value is used as a single byte bit pattern,
13043ae17ff1Smrg        # both directly and inverted, so should not be 0 or 255.
13053ae17ff1Smrg        malloc_debug_env='MALLOC_PERTURB_=15'
13063ae17ff1Smrg        ;;
13073ae17ff1Smrg    darwin*)
13083ae17ff1Smrg        malloc_debug_env='MallocPreScribble=1 MallocScribble=1 DYLD_INSERT_LIBRARIES=/usr/lib/libgmalloc.dylib'
13093ae17ff1Smrg        ;;
13103ae17ff1Smrg    *bsd*)
13113ae17ff1Smrg        malloc_debug_env='MallocPreScribble=1 MallocScribble=1'
13123ae17ff1Smrg        ;;
13133ae17ff1Smrgesac
13143ae17ff1Smrg
13153ae17ff1Smrg# User supplied flags override default flags
13163ae17ff1Smrgif test "x$XORG_MALLOC_DEBUG_ENV" != "x"; then
13173ae17ff1Smrg    malloc_debug_env="$XORG_MALLOC_DEBUG_ENV"
13183ae17ff1Smrgfi
13193ae17ff1Smrg
13203ae17ff1SmrgAC_SUBST([XORG_MALLOC_DEBUG_ENV],[$malloc_debug_env])
13213ae17ff1Smrg]) # XORG_WITH_LINT
13223ae17ff1Smrg
1323ffab5952Smrg# XORG_CHECK_MALLOC_ZERO
1324ffab5952Smrg# ----------------------
1325ffab5952Smrg# Minimum version: 1.0.0
1326ffab5952Smrg#
1327ffab5952Smrg# Defines {MALLOC,XMALLOC,XTMALLOC}_ZERO_CFLAGS appropriately if
1328ffab5952Smrg# malloc(0) returns NULL.  Packages should add one of these cflags to
1329ffab5952Smrg# their AM_CFLAGS (or other appropriate *_CFLAGS) to use them.
1330ffab5952SmrgAC_DEFUN([XORG_CHECK_MALLOC_ZERO],[
1331ffab5952SmrgAC_ARG_ENABLE(malloc0returnsnull,
1332ffab5952Smrg	AS_HELP_STRING([--enable-malloc0returnsnull],
1333ffab5952Smrg		       [malloc(0) returns NULL (default: auto)]),
1334ffab5952Smrg	[MALLOC_ZERO_RETURNS_NULL=$enableval],
1335ffab5952Smrg	[MALLOC_ZERO_RETURNS_NULL=auto])
1336ffab5952Smrg
1337ffab5952SmrgAC_MSG_CHECKING([whether malloc(0) returns NULL])
1338ffab5952Smrgif test "x$MALLOC_ZERO_RETURNS_NULL" = xauto; then
133943c16309SmrgAC_CACHE_VAL([xorg_cv_malloc0_returns_null],
134043c16309Smrg	[AC_RUN_IFELSE([AC_LANG_PROGRAM([
134162044635Smrg#include <stdlib.h>
134262044635Smrg],[
1343ffab5952Smrg    char *m0, *r0, *c0, *p;
1344ffab5952Smrg    m0 = malloc(0);
1345ffab5952Smrg    p = malloc(10);
1346ffab5952Smrg    r0 = realloc(p,0);
134762044635Smrg    c0 = calloc(0,10);
134862044635Smrg    exit((m0 == 0 || r0 == 0 || c0 == 0) ? 0 : 1);
134962044635Smrg])],
135043c16309Smrg		[xorg_cv_malloc0_returns_null=yes],
135143c16309Smrg		[xorg_cv_malloc0_returns_null=no])])
135243c16309SmrgMALLOC_ZERO_RETURNS_NULL=$xorg_cv_malloc0_returns_null
1353ffab5952Smrgfi
1354ffab5952SmrgAC_MSG_RESULT([$MALLOC_ZERO_RETURNS_NULL])
1355ffab5952Smrg
1356ffab5952Smrgif test "x$MALLOC_ZERO_RETURNS_NULL" = xyes; then
1357ffab5952Smrg	MALLOC_ZERO_CFLAGS="-DMALLOC_0_RETURNS_NULL"
1358ffab5952Smrg	XMALLOC_ZERO_CFLAGS=$MALLOC_ZERO_CFLAGS
1359ffab5952Smrg	XTMALLOC_ZERO_CFLAGS="$MALLOC_ZERO_CFLAGS -DXTMALLOC_BC"
1360ffab5952Smrgelse
1361ffab5952Smrg	MALLOC_ZERO_CFLAGS=""
1362ffab5952Smrg	XMALLOC_ZERO_CFLAGS=""
1363ffab5952Smrg	XTMALLOC_ZERO_CFLAGS=""
1364ffab5952Smrgfi
1365ffab5952Smrg
1366ffab5952SmrgAC_SUBST([MALLOC_ZERO_CFLAGS])
1367ffab5952SmrgAC_SUBST([XMALLOC_ZERO_CFLAGS])
1368ffab5952SmrgAC_SUBST([XTMALLOC_ZERO_CFLAGS])
1369ffab5952Smrg]) # XORG_CHECK_MALLOC_ZERO
1370ffab5952Smrg
1371ffab5952Smrg# XORG_WITH_LINT()
1372ffab5952Smrg# ----------------
1373ffab5952Smrg# Minimum version: 1.1.0
1374ffab5952Smrg#
1375ffab5952Smrg# This macro enables the use of a tool that flags some suspicious and
1376ffab5952Smrg# non-portable constructs (likely to be bugs) in C language source code.
1377ffab5952Smrg# It will attempt to locate the tool and use appropriate options.
1378ffab5952Smrg# There are various lint type tools on different platforms.
1379ffab5952Smrg#
1380ffab5952Smrg# Interface to module:
1381ffab5952Smrg# LINT:		returns the path to the tool found on the platform
1382ffab5952Smrg#		or the value set to LINT on the configure cmd line
1383ffab5952Smrg#		also an Automake conditional
1384ffab5952Smrg# LINT_FLAGS:	an Automake variable with appropriate flags
1385ffab5952Smrg#
1386ffab5952Smrg# --with-lint:	'yes' user instructs the module to use lint
1387ffab5952Smrg#		'no' user instructs the module not to use lint (default)
1388ffab5952Smrg#
1389ffab5952Smrg# If the user sets the value of LINT, AC_PATH_PROG skips testing the path.
1390ffab5952Smrg# If the user sets the value of LINT_FLAGS, they are used verbatim.
1391ffab5952Smrg#
1392ffab5952SmrgAC_DEFUN([XORG_WITH_LINT],[
1393ffab5952Smrg
1394ffab5952SmrgAC_ARG_VAR([LINT], [Path to a lint-style command])
1395ffab5952SmrgAC_ARG_VAR([LINT_FLAGS], [Flags for the lint-style command])
1396ffab5952SmrgAC_ARG_WITH(lint, [AS_HELP_STRING([--with-lint],
1397ffab5952Smrg		[Use a lint-style source code checker (default: disabled)])],
1398ffab5952Smrg		[use_lint=$withval], [use_lint=no])
1399ffab5952Smrg
1400ffab5952Smrg# Obtain platform specific info like program name and options
1401ffab5952Smrg# The lint program on FreeBSD and NetBSD is different from the one on Solaris
1402ffab5952Smrgcase $host_os in
1403ffab5952Smrg  *linux* | *openbsd* | kfreebsd*-gnu | darwin* | cygwin*)
1404ffab5952Smrg	lint_name=splint
1405ffab5952Smrg	lint_options="-badflag"
1406ffab5952Smrg	;;
1407ffab5952Smrg  *freebsd* | *netbsd*)
1408ffab5952Smrg	lint_name=lint
1409ffab5952Smrg	lint_options="-u -b"
1410ffab5952Smrg	;;
1411ffab5952Smrg  *solaris*)
1412ffab5952Smrg	lint_name=lint
1413ffab5952Smrg	lint_options="-u -b -h -erroff=E_INDISTING_FROM_TRUNC2"
1414ffab5952Smrg	;;
1415ffab5952Smrgesac
1416ffab5952Smrg
1417ffab5952Smrg# Test for the presence of the program (either guessed by the code or spelled out by the user)
1418ffab5952Smrgif test "x$use_lint" = x"yes" ; then
1419ffab5952Smrg   AC_PATH_PROG([LINT], [$lint_name])
1420ffab5952Smrg   if test "x$LINT" = "x"; then
1421ffab5952Smrg        AC_MSG_ERROR([--with-lint=yes specified but lint-style tool not found in PATH])
1422ffab5952Smrg   fi
1423ffab5952Smrgelif test "x$use_lint" = x"no" ; then
1424ffab5952Smrg   if test "x$LINT" != "x"; then
1425ffab5952Smrg      AC_MSG_WARN([ignoring LINT environment variable since --with-lint=no was specified])
1426ffab5952Smrg   fi
1427ffab5952Smrgelse
1428ffab5952Smrg   AC_MSG_ERROR([--with-lint expects 'yes' or 'no'. Use LINT variable to specify path.])
1429ffab5952Smrgfi
1430ffab5952Smrg
1431ffab5952Smrg# User supplied flags override default flags
1432ffab5952Smrgif test "x$LINT_FLAGS" != "x"; then
1433ffab5952Smrg   lint_options=$LINT_FLAGS
1434ffab5952Smrgfi
1435ffab5952Smrg
1436ffab5952SmrgAC_SUBST([LINT_FLAGS],[$lint_options])
1437ffab5952SmrgAM_CONDITIONAL(LINT, [test "x$LINT" != x])
1438ffab5952Smrg
1439ffab5952Smrg]) # XORG_WITH_LINT
1440ffab5952Smrg
1441ffab5952Smrg# XORG_LINT_LIBRARY(LIBNAME)
1442ffab5952Smrg# --------------------------
1443ffab5952Smrg# Minimum version: 1.1.0
1444ffab5952Smrg#
1445ffab5952Smrg# Sets up flags for building lint libraries for checking programs that call
1446ffab5952Smrg# functions in the library.
1447ffab5952Smrg#
1448ffab5952Smrg# Interface to module:
1449ffab5952Smrg# LINTLIB		- Automake variable with the name of lint library file to make
1450ffab5952Smrg# MAKE_LINT_LIB		- Automake conditional
1451ffab5952Smrg#
1452ffab5952Smrg# --enable-lint-library:  - 'yes' user instructs the module to created a lint library
1453ffab5952Smrg#			  - 'no' user instructs the module not to create a lint library (default)
1454ffab5952Smrg
1455ffab5952SmrgAC_DEFUN([XORG_LINT_LIBRARY],[
1456ffab5952SmrgAC_REQUIRE([XORG_WITH_LINT])
1457ffab5952SmrgAC_ARG_ENABLE(lint-library, [AS_HELP_STRING([--enable-lint-library],
1458ffab5952Smrg	[Create lint library (default: disabled)])],
1459ffab5952Smrg	[make_lint_lib=$enableval], [make_lint_lib=no])
1460ffab5952Smrg
1461ffab5952Smrgif test "x$make_lint_lib" = x"yes" ; then
1462ffab5952Smrg   LINTLIB=llib-l$1.ln
1463ffab5952Smrg   if test "x$LINT" = "x"; then
1464ffab5952Smrg        AC_MSG_ERROR([Cannot make lint library without --with-lint])
1465ffab5952Smrg   fi
1466ffab5952Smrgelif test "x$make_lint_lib" != x"no" ; then
1467ffab5952Smrg   AC_MSG_ERROR([--enable-lint-library expects 'yes' or 'no'.])
1468ffab5952Smrgfi
1469ffab5952Smrg
1470ffab5952SmrgAC_SUBST(LINTLIB)
1471ffab5952SmrgAM_CONDITIONAL(MAKE_LINT_LIB, [test x$make_lint_lib != xno])
1472ffab5952Smrg
1473ffab5952Smrg]) # XORG_LINT_LIBRARY
1474ffab5952Smrg
147562044635Smrg# XORG_COMPILER_BRAND
147662044635Smrg# -------------------
147762044635Smrg# Minimum version: 1.14.0
147862044635Smrg#
147962044635Smrg# Checks for various brands of compilers and sets flags as appropriate:
148062044635Smrg#   GNU gcc - relies on AC_PROG_CC (via AC_PROG_CC_C99) to set GCC to "yes"
14813ae17ff1Smrg#   GNU g++ - relies on AC_PROG_CXX to set GXX to "yes"
148262044635Smrg#   clang compiler - sets CLANGCC to "yes"
148362044635Smrg#   Intel compiler - sets INTELCC to "yes"
148462044635Smrg#   Sun/Oracle Solaris Studio cc - sets SUNCC to "yes"
148562044635Smrg#
148662044635SmrgAC_DEFUN([XORG_COMPILER_BRAND], [
14873ae17ff1SmrgAC_LANG_CASE(
14883ae17ff1Smrg	[C], [
14893ae17ff1Smrg		AC_REQUIRE([AC_PROG_CC_C99])
14903ae17ff1Smrg	],
14913ae17ff1Smrg	[C++], [
14923ae17ff1Smrg		AC_REQUIRE([AC_PROG_CXX])
14933ae17ff1Smrg	]
14943ae17ff1Smrg)
149562044635SmrgAC_CHECK_DECL([__clang__], [CLANGCC="yes"], [CLANGCC="no"])
149662044635SmrgAC_CHECK_DECL([__INTEL_COMPILER], [INTELCC="yes"], [INTELCC="no"])
149762044635SmrgAC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"])
149862044635Smrg]) # XORG_COMPILER_BRAND
149962044635Smrg
15003ae17ff1Smrg# XORG_TESTSET_CFLAG(<variable>, <flag>, [<alternative flag>, ...])
15013ae17ff1Smrg# ---------------
15023ae17ff1Smrg# Minimum version: 1.16.0
15033ae17ff1Smrg#
15043ae17ff1Smrg# Test if the compiler works when passed the given flag as a command line argument.
15053ae17ff1Smrg# If it succeeds, the flag is appeneded to the given variable.  If not, it tries the
15063ae17ff1Smrg# next flag in the list until there are no more options.
15073ae17ff1Smrg#
15083ae17ff1Smrg# Note that this does not guarantee that the compiler supports the flag as some
15093ae17ff1Smrg# compilers will simply ignore arguments that they do not understand, but we do
15103ae17ff1Smrg# attempt to weed out false positives by using -Werror=unknown-warning-option and
15113ae17ff1Smrg# -Werror=unused-command-line-argument
15123ae17ff1Smrg#
15133ae17ff1SmrgAC_DEFUN([XORG_TESTSET_CFLAG], [
15143ae17ff1Smrgm4_if([$#], 0, [m4_fatal([XORG_TESTSET_CFLAG was given with an unsupported number of arguments])])
15153ae17ff1Smrgm4_if([$#], 1, [m4_fatal([XORG_TESTSET_CFLAG was given with an unsupported number of arguments])])
15163ae17ff1Smrg
15173ae17ff1SmrgAC_LANG_COMPILER_REQUIRE
15183ae17ff1Smrg
15193ae17ff1SmrgAC_LANG_CASE(
15203ae17ff1Smrg	[C], [
15213ae17ff1Smrg		AC_REQUIRE([AC_PROG_CC_C99])
15223ae17ff1Smrg		define([PREFIX], [C])
15233ae17ff1Smrg		define([CACHE_PREFIX], [cc])
15243ae17ff1Smrg		define([COMPILER], [$CC])
15253ae17ff1Smrg	],
15263ae17ff1Smrg	[C++], [
15273ae17ff1Smrg		define([PREFIX], [CXX])
15283ae17ff1Smrg		define([CACHE_PREFIX], [cxx])
15293ae17ff1Smrg		define([COMPILER], [$CXX])
15303ae17ff1Smrg	]
15313ae17ff1Smrg)
15323ae17ff1Smrg
15333ae17ff1Smrg[xorg_testset_save_]PREFIX[FLAGS]="$PREFIX[FLAGS]"
15343ae17ff1Smrg
15353ae17ff1Smrgif test "x$[xorg_testset_]CACHE_PREFIX[_unknown_warning_option]" = "x" ; then
15363ae17ff1Smrg	PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unknown-warning-option"
15373ae17ff1Smrg	AC_CACHE_CHECK([if ]COMPILER[ supports -Werror=unknown-warning-option],
15383ae17ff1Smrg			[xorg_cv_]CACHE_PREFIX[_flag_unknown_warning_option],
15393ae17ff1Smrg			AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])],
15403ae17ff1Smrg					  [xorg_cv_]CACHE_PREFIX[_flag_unknown_warning_option=yes],
15413ae17ff1Smrg					  [xorg_cv_]CACHE_PREFIX[_flag_unknown_warning_option=no]))
15423ae17ff1Smrg	[xorg_testset_]CACHE_PREFIX[_unknown_warning_option]=$[xorg_cv_]CACHE_PREFIX[_flag_unknown_warning_option]
15433ae17ff1Smrg	PREFIX[FLAGS]="$[xorg_testset_save_]PREFIX[FLAGS]"
15443ae17ff1Smrgfi
15453ae17ff1Smrg
15463ae17ff1Smrgif test "x$[xorg_testset_]CACHE_PREFIX[_unused_command_line_argument]" = "x" ; then
15473ae17ff1Smrg	if test "x$[xorg_testset_]CACHE_PREFIX[_unknown_warning_option]" = "xyes" ; then
15483ae17ff1Smrg		PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unknown-warning-option"
15493ae17ff1Smrg	fi
15503ae17ff1Smrg	PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unused-command-line-argument"
15513ae17ff1Smrg	AC_CACHE_CHECK([if ]COMPILER[ supports -Werror=unused-command-line-argument],
15523ae17ff1Smrg			[xorg_cv_]CACHE_PREFIX[_flag_unused_command_line_argument],
15533ae17ff1Smrg			AC_COMPILE_IFELSE([AC_LANG_SOURCE([int i;])],
15543ae17ff1Smrg					  [xorg_cv_]CACHE_PREFIX[_flag_unused_command_line_argument=yes],
15553ae17ff1Smrg					  [xorg_cv_]CACHE_PREFIX[_flag_unused_command_line_argument=no]))
15563ae17ff1Smrg	[xorg_testset_]CACHE_PREFIX[_unused_command_line_argument]=$[xorg_cv_]CACHE_PREFIX[_flag_unused_command_line_argument]
15573ae17ff1Smrg	PREFIX[FLAGS]="$[xorg_testset_save_]PREFIX[FLAGS]"
15583ae17ff1Smrgfi
15593ae17ff1Smrg
15603ae17ff1Smrgfound="no"
15613ae17ff1Smrgm4_foreach([flag], m4_cdr($@), [
15623ae17ff1Smrg	if test $found = "no" ; then
156343c16309Smrg		if test "x$xorg_testset_]CACHE_PREFIX[_unknown_warning_option" = "xyes" ; then
15643ae17ff1Smrg			PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unknown-warning-option"
15653ae17ff1Smrg		fi
15663ae17ff1Smrg
156743c16309Smrg		if test "x$xorg_testset_]CACHE_PREFIX[_unused_command_line_argument" = "xyes" ; then
15683ae17ff1Smrg			PREFIX[FLAGS]="$PREFIX[FLAGS] -Werror=unused-command-line-argument"
15693ae17ff1Smrg		fi
15703ae17ff1Smrg
15713ae17ff1Smrg		PREFIX[FLAGS]="$PREFIX[FLAGS] ]flag["
15723ae17ff1Smrg
15733ae17ff1Smrgdnl Some hackery here since AC_CACHE_VAL can't handle a non-literal varname
157443c16309Smrg		AC_MSG_CHECKING([if ]COMPILER[ supports ]flag[])
15753ae17ff1Smrg		cacheid=AS_TR_SH([xorg_cv_]CACHE_PREFIX[_flag_]flag[])
15763ae17ff1Smrg		AC_CACHE_VAL($cacheid,
15773ae17ff1Smrg			     [AC_LINK_IFELSE([AC_LANG_PROGRAM([int i;])],
15783ae17ff1Smrg					     [eval $cacheid=yes],
15793ae17ff1Smrg					     [eval $cacheid=no])])
15803ae17ff1Smrg
15813ae17ff1Smrg		PREFIX[FLAGS]="$[xorg_testset_save_]PREFIX[FLAGS]"
15823ae17ff1Smrg
15833ae17ff1Smrg		eval supported=\$$cacheid
15843ae17ff1Smrg		AC_MSG_RESULT([$supported])
15853ae17ff1Smrg		if test "$supported" = "yes" ; then
15863ae17ff1Smrg			$1="$$1 ]flag["
15873ae17ff1Smrg			found="yes"
15883ae17ff1Smrg		fi
15893ae17ff1Smrg	fi
15903ae17ff1Smrg])
15913ae17ff1Smrg]) # XORG_TESTSET_CFLAG
15923ae17ff1Smrg
15933ae17ff1Smrg# XORG_COMPILER_FLAGS
15943ae17ff1Smrg# ---------------
15953ae17ff1Smrg# Minimum version: 1.16.0
15963ae17ff1Smrg#
15973ae17ff1Smrg# Defines BASE_CFLAGS or BASE_CXXFLAGS to contain a set of command line
15983ae17ff1Smrg# arguments supported by the selected compiler which do NOT alter the generated
15993ae17ff1Smrg# code.  These arguments will cause the compiler to print various warnings
16003ae17ff1Smrg# during compilation AND turn a conservative set of warnings into errors.
16013ae17ff1Smrg#
16023ae17ff1Smrg# The set of flags supported by BASE_CFLAGS and BASE_CXXFLAGS will grow in
16033ae17ff1Smrg# future versions of util-macros as options are added to new compilers.
16043ae17ff1Smrg#
16053ae17ff1SmrgAC_DEFUN([XORG_COMPILER_FLAGS], [
16063ae17ff1SmrgAC_REQUIRE([XORG_COMPILER_BRAND])
16073ae17ff1Smrg
16083ae17ff1SmrgAC_ARG_ENABLE(selective-werror,
16093ae17ff1Smrg              AS_HELP_STRING([--disable-selective-werror],
16103ae17ff1Smrg                             [Turn off selective compiler errors. (default: enabled)]),
16113ae17ff1Smrg              [SELECTIVE_WERROR=$enableval],
16123ae17ff1Smrg              [SELECTIVE_WERROR=yes])
16133ae17ff1Smrg
16143ae17ff1SmrgAC_LANG_CASE(
16153ae17ff1Smrg        [C], [
16163ae17ff1Smrg                define([PREFIX], [C])
16173ae17ff1Smrg        ],
16183ae17ff1Smrg        [C++], [
16193ae17ff1Smrg                define([PREFIX], [CXX])
16203ae17ff1Smrg        ]
16213ae17ff1Smrg)
16223ae17ff1Smrg# -v is too short to test reliably with XORG_TESTSET_CFLAG
16233ae17ff1Smrgif test "x$SUNCC" = "xyes"; then
16243ae17ff1Smrg    [BASE_]PREFIX[FLAGS]="-v"
16253ae17ff1Smrgelse
16263ae17ff1Smrg    [BASE_]PREFIX[FLAGS]=""
16273ae17ff1Smrgfi
16283ae17ff1Smrg
16293ae17ff1Smrg# This chunk of warnings were those that existed in the legacy CWARNFLAGS
16303ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wall])
16313ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wpointer-arith])
16323ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-declarations])
16333ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wformat=2], [-Wformat])
16343ae17ff1Smrg
16353ae17ff1SmrgAC_LANG_CASE(
16363ae17ff1Smrg	[C], [
16373ae17ff1Smrg		XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wstrict-prototypes])
16383ae17ff1Smrg		XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-prototypes])
16393ae17ff1Smrg		XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wnested-externs])
16403ae17ff1Smrg		XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wbad-function-cast])
164143c16309Smrg		XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wold-style-definition], [-fd])
16423ae17ff1Smrg		XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wdeclaration-after-statement])
16433ae17ff1Smrg	]
16443ae17ff1Smrg)
16453ae17ff1Smrg
16463ae17ff1Smrg# This chunk adds additional warnings that could catch undesired effects.
16473ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wunused])
16483ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wuninitialized])
16493ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wshadow])
16503ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-noreturn])
16513ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-format-attribute])
16523ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wredundant-decls])
16533ae17ff1Smrg
16543ae17ff1Smrg# These are currently disabled because they are noisy.  They will be enabled
16553ae17ff1Smrg# in the future once the codebase is sufficiently modernized to silence
16563ae17ff1Smrg# them.  For now, I don't want them to drown out the other warnings.
16573ae17ff1Smrg# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wlogical-op])
16583ae17ff1Smrg# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wparentheses])
16593ae17ff1Smrg# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wcast-align])
166043c16309Smrg# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wcast-qual])
16613ae17ff1Smrg
16623ae17ff1Smrg# Turn some warnings into errors, so we don't accidently get successful builds
16633ae17ff1Smrg# when there are problems that should be fixed.
16643ae17ff1Smrg
16653ae17ff1Smrgif test "x$SELECTIVE_WERROR" = "xyes" ; then
16663ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=implicit], [-errwarn=E_NO_EXPLICIT_TYPE_GIVEN -errwarn=E_NO_IMPLICIT_DECL_ALLOWED])
16673ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=nonnull])
16683ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=init-self])
16693ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=main])
16703ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=missing-braces])
16713ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=sequence-point])
16723ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=return-type], [-errwarn=E_FUNC_HAS_NO_RETURN_STMT])
16733ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=trigraphs])
16743ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=array-bounds])
16753ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=write-strings])
16763ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=address])
16773ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=int-to-pointer-cast], [-errwarn=E_BAD_PTR_INT_COMBINATION])
16783ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Werror=pointer-to-int-cast]) # Also -errwarn=E_BAD_PTR_INT_COMBINATION
16793ae17ff1Smrgelse
16803ae17ff1SmrgAC_MSG_WARN([You have chosen not to turn some select compiler warnings into errors.  This should not be necessary.  Please report why you needed to do so in a bug report at $PACKAGE_BUGREPORT])
16813ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wimplicit])
16823ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wnonnull])
16833ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Winit-self])
16843ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmain])
16853ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wmissing-braces])
16863ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wsequence-point])
16873ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wreturn-type])
16883ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wtrigraphs])
16893ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Warray-bounds])
16903ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wwrite-strings])
16913ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Waddress])
16923ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wint-to-pointer-cast])
16933ae17ff1SmrgXORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wpointer-to-int-cast])
16943ae17ff1Smrgfi
16953ae17ff1Smrg
16963ae17ff1SmrgAC_SUBST([BASE_]PREFIX[FLAGS])
16973ae17ff1Smrg]) # XORG_COMPILER_FLAGS
16983ae17ff1Smrg
1699ffab5952Smrg# XORG_CWARNFLAGS
1700ffab5952Smrg# ---------------
1701ffab5952Smrg# Minimum version: 1.2.0
17023ae17ff1Smrg# Deprecated since: 1.16.0 (Use XORG_COMPILER_FLAGS instead)
1703ffab5952Smrg#
1704ffab5952Smrg# Defines CWARNFLAGS to enable C compiler warnings.
1705ffab5952Smrg#
17063ae17ff1Smrg# This function is deprecated because it defines -fno-strict-aliasing
17073ae17ff1Smrg# which alters the code generated by the compiler.  If -fno-strict-aliasing
17083ae17ff1Smrg# is needed, then it should be added explicitly in the module when
17093ae17ff1Smrg# it is updated to use BASE_CFLAGS.
17103ae17ff1Smrg#
1711ffab5952SmrgAC_DEFUN([XORG_CWARNFLAGS], [
17123ae17ff1SmrgAC_REQUIRE([XORG_COMPILER_FLAGS])
171362044635SmrgAC_REQUIRE([XORG_COMPILER_BRAND])
17143ae17ff1SmrgAC_LANG_CASE(
17153ae17ff1Smrg	[C], [
17163ae17ff1Smrg		CWARNFLAGS="$BASE_CFLAGS"
17173ae17ff1Smrg		if  test "x$GCC" = xyes ; then
17183ae17ff1Smrg		    CWARNFLAGS="$CWARNFLAGS -fno-strict-aliasing"
17193ae17ff1Smrg		fi
17203ae17ff1Smrg		AC_SUBST(CWARNFLAGS)
17213ae17ff1Smrg	]
17223ae17ff1Smrg)
1723ffab5952Smrg]) # XORG_CWARNFLAGS
1724ffab5952Smrg
1725ffab5952Smrg# XORG_STRICT_OPTION
1726ffab5952Smrg# -----------------------
1727ffab5952Smrg# Minimum version: 1.3.0
1728ffab5952Smrg#
172962044635Smrg# Add configure option to enable strict compilation flags, such as treating
173062044635Smrg# warnings as fatal errors.
173162044635Smrg# If --enable-strict-compilation is passed to configure, adds strict flags to
17323ae17ff1Smrg# $BASE_CFLAGS or $BASE_CXXFLAGS and the deprecated $CWARNFLAGS.
173362044635Smrg#
173462044635Smrg# Starting in 1.14.0 also exports $STRICT_CFLAGS for use in other tests or
173562044635Smrg# when strict compilation is unconditionally desired.
1736ffab5952SmrgAC_DEFUN([XORG_STRICT_OPTION], [
1737ffab5952SmrgAC_REQUIRE([XORG_CWARNFLAGS])
17383ae17ff1SmrgAC_REQUIRE([XORG_COMPILER_FLAGS])
1739ffab5952Smrg
1740ffab5952SmrgAC_ARG_ENABLE(strict-compilation,
1741ffab5952Smrg			  AS_HELP_STRING([--enable-strict-compilation],
1742ffab5952Smrg			  [Enable all warnings from compiler and make them errors (default: disabled)]),
1743ffab5952Smrg			  [STRICT_COMPILE=$enableval], [STRICT_COMPILE=no])
17443ae17ff1Smrg
17453ae17ff1SmrgAC_LANG_CASE(
17463ae17ff1Smrg        [C], [
17473ae17ff1Smrg                define([PREFIX], [C])
17483ae17ff1Smrg        ],
17493ae17ff1Smrg        [C++], [
17503ae17ff1Smrg                define([PREFIX], [CXX])
17513ae17ff1Smrg        ]
17523ae17ff1Smrg)
17533ae17ff1Smrg
17543ae17ff1Smrg[STRICT_]PREFIX[FLAGS]=""
17553ae17ff1SmrgXORG_TESTSET_CFLAG([[STRICT_]PREFIX[FLAGS]], [-pedantic])
17563ae17ff1SmrgXORG_TESTSET_CFLAG([[STRICT_]PREFIX[FLAGS]], [-Werror], [-errwarn])
17573ae17ff1Smrg
17583ae17ff1Smrg# Earlier versions of gcc (eg: 4.2) support -Werror=attributes, but do not
17593ae17ff1Smrg# activate it with -Werror, so we add it here explicitly.
17603ae17ff1SmrgXORG_TESTSET_CFLAG([[STRICT_]PREFIX[FLAGS]], [-Werror=attributes])
17613ae17ff1Smrg
1762ffab5952Smrgif test "x$STRICT_COMPILE" = "xyes"; then
17633ae17ff1Smrg    [BASE_]PREFIX[FLAGS]="$[BASE_]PREFIX[FLAGS] $[STRICT_]PREFIX[FLAGS]"
17643ae17ff1Smrg    AC_LANG_CASE([C], [CWARNFLAGS="$CWARNFLAGS $STRICT_CFLAGS"])
1765ffab5952Smrgfi
17663ae17ff1SmrgAC_SUBST([STRICT_]PREFIX[FLAGS])
17673ae17ff1SmrgAC_SUBST([BASE_]PREFIX[FLAGS])
17683ae17ff1SmrgAC_LANG_CASE([C], AC_SUBST([CWARNFLAGS]))
1769ffab5952Smrg]) # XORG_STRICT_OPTION
1770ffab5952Smrg
1771ffab5952Smrg# XORG_DEFAULT_OPTIONS
1772ffab5952Smrg# --------------------
1773ffab5952Smrg# Minimum version: 1.3.0
1774ffab5952Smrg#
1775ffab5952Smrg# Defines default options for X.Org modules.
1776ffab5952Smrg#
1777ffab5952SmrgAC_DEFUN([XORG_DEFAULT_OPTIONS], [
1778ffab5952SmrgAC_REQUIRE([AC_PROG_INSTALL])
17793ae17ff1SmrgXORG_COMPILER_FLAGS
1780ffab5952SmrgXORG_CWARNFLAGS
1781ffab5952SmrgXORG_STRICT_OPTION
1782ffab5952SmrgXORG_RELEASE_VERSION
1783ffab5952SmrgXORG_CHANGELOG
1784ffab5952SmrgXORG_INSTALL
1785ffab5952SmrgXORG_MANPAGE_SECTIONS
1786ffab5952Smrgm4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])],
1787ffab5952Smrg    [AC_SUBST([AM_DEFAULT_VERBOSITY], [1])])
1788ffab5952Smrg]) # XORG_DEFAULT_OPTIONS
1789ffab5952Smrg
1790ffab5952Smrg# XORG_INSTALL()
1791ffab5952Smrg# ----------------
1792ffab5952Smrg# Minimum version: 1.4.0
1793ffab5952Smrg#
1794ffab5952Smrg# Defines the variable INSTALL_CMD as the command to copy
1795ffab5952Smrg# INSTALL from $prefix/share/util-macros.
1796ffab5952Smrg#
1797ffab5952SmrgAC_DEFUN([XORG_INSTALL], [
1798ffab5952SmrgAC_REQUIRE([PKG_PROG_PKG_CONFIG])
1799ffab5952Smrgmacros_datadir=`$PKG_CONFIG --print-errors --variable=pkgdatadir xorg-macros`
1800ffab5952SmrgINSTALL_CMD="(cp -f "$macros_datadir/INSTALL" \$(top_srcdir)/.INSTALL.tmp && \
1801ffab5952Smrgmv \$(top_srcdir)/.INSTALL.tmp \$(top_srcdir)/INSTALL) \
1802ffab5952Smrg|| (rm -f \$(top_srcdir)/.INSTALL.tmp; touch \$(top_srcdir)/INSTALL; \
1803ffab5952Smrgecho 'util-macros \"pkgdatadir\" from xorg-macros.pc not found: installing possibly empty INSTALL.' >&2)"
1804ffab5952SmrgAC_SUBST([INSTALL_CMD])
1805ffab5952Smrg]) # XORG_INSTALL
1806