1 ##### http://autoconf-archive.cryp.to/ac_check_docbook_dtd.html
5 # AC_CHECK_DOCBOOK_DTD([dtd-version])
9 # Check for access to a docbook DTD of a particular revision.
11 # This macro can be used for multiple versions within the same script.
14 # $1 is the version of docbook to search for; default 'current'
16 # $HAVE_DOCBOOK_DTD_VERS will be set to 'yes' or 'no' depending
17 # on the results of the test, where VERS is $1, with '_' substituted
18 # for '.' $HAVE_DOCBOOK_DTD will also be set to the same value.
21 # AC_CHECK_DOCBOOK_DTD(4.3)
22 # if test "x$HAVE_DOCBOOK_DTD_4_3" = "xyes"; then
31 # Dustin J. Mitchell <dustin@zmanda.com>
35 # Copyright (c) 2007,2008 Zmanda, Inc. All Rights Reserved.
37 # This program is free software; you can redistribute it and/or modify it
38 # under the terms of the GNU General Public License version 2 as published
39 # by the Free Software Foundation.
41 # This program is distributed in the hope that it will be useful, but
42 # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
43 # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
46 # You should have received a copy of the GNU General Public License along
47 # with this program; if not, write to the Free Software Foundation, Inc.,
48 # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
50 # This special exception to the GPL applies to versions of the
51 # Autoconf Macro released by the Autoconf Macro Archive. When you
52 # make and distribute a modified version of the Autoconf Macro, you
53 # may extend this special exception to the GPL to apply to your
54 # modified version as well.
56 # Contact information: Zmanda Inc., 465 S. Mathilda Ave., Suite 300
57 # Sunnyvale, CA 94086, USA, or: http://www.zmanda.com
59 AC_DEFUN([AC_CHECK_DOCBOOK_DTD],
61 AC_REQUIRE([AC_PROG_XSLTPROC])
63 dnl define a temporary variable for the version, so this macro can be
64 dnl used with multiple versions
66 ifelse(_VERS, [], [define([_VERS], [current])])
68 dnl define variable names ending in _VERS which will actually have the
69 dnl version number as a suffix
70 define([ac_cv_docbook_dtd_VERS], patsubst([ac_cv_docbook_dtd_]_VERS, [\.], [_]))
71 define([HAVE_DOCBOOK_DTD_VERS], patsubst([HAVE_DOCBOOK_DTD_]_VERS, [\.], [_]))
73 AC_CACHE_CHECK([for Docbook DTD version ]_VERS, [ac_cv_docbook_dtd_VERS],
75 ac_cv_docbook_dtd_VERS=no
76 if test -n "$XSLTPROC"; then
77 MY_XSLTPROC_FLAGS=`echo "" $XSLTPROC_FLAGS|sed -e s/--novalid//g`
78 cat <<EOF >conftest.xml
79 <?xml version="1.0" encoding='ISO-8859-1'?>
80 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V[]_VERS//EN" "http://www.oasis-open.org/docbook/xml/_VERS/docbookx.dtd">
84 echo "Trying '$XSLTPROC $MY_XSLTPROC_FLAGS conftest.xml'" >&AS_MESSAGE_LOG_FD
85 echo "conftest.xml:" >&AS_MESSAGE_LOG_FD
86 echo "====" >&AS_MESSAGE_LOG_FD
87 cat conftest.xml >&AS_MESSAGE_LOG_FD
88 echo "====" >&AS_MESSAGE_LOG_FD
90 $XSLTPROC $MY_XSLTPROC_FLAGS conftest.xml >conftest.out 2>&1
91 if test "$?" = 0 -o "$?" = 5; then
92 # failing to load the DTD is just a warning, so check for it in the output.
93 if grep 'warning: failed to load external entity' conftest.out >/dev/null 2>&1; then
96 ac_cv_docbook_dtd_VERS=yes
99 cat conftest.out >&AS_MESSAGE_LOG_FD
101 rm -f conftest.xml conftest.out
105 HAVE_DOCBOOK_DTD_VERS="$ac_cv_docbook_dtd_VERS"
106 HAVE_DOCBOOK_DTD="$HAVE_DOCBOOK_DTD_VERS"
108 dnl clean up m4 namespace
110 undefine([ac_cv_docbook_dtd_VERS])
111 undefine([HAVE_DOCBOOK_DTD_VERS])