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-2012 Zmanda, Inc. All Rights Reserved.
37 # This program is free software; you can redistribute it and/or
38 # modify it under the terms of the GNU General Public License
39 # as published by the Free Software Foundation; either version 2
40 # of the License, or (at your option) any later version.
42 # This program is distributed in the hope that it will be useful, but
43 # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
44 # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
47 # You should have received a copy of the GNU General Public License along
48 # with this program; if not, write to the Free Software Foundation, Inc.,
49 # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
51 # This special exception to the GPL applies to versions of the
52 # Autoconf Macro released by the Autoconf Macro Archive. When you
53 # make and distribute a modified version of the Autoconf Macro, you
54 # may extend this special exception to the GPL to apply to your
55 # modified version as well.
57 # Contact information: Zmanda Inc., 465 S. Mathilda Ave., Suite 300
58 # Sunnyvale, CA 94086, USA, or: http://www.zmanda.com
60 AC_DEFUN([AC_CHECK_DOCBOOK_DTD],
62 AC_REQUIRE([AC_PROG_XSLTPROC])
64 dnl define a temporary variable for the version, so this macro can be
65 dnl used with multiple versions
67 ifelse(_VERS, [], [define([_VERS], [current])])
69 dnl define variable names ending in _VERS which will actually have the
70 dnl version number as a suffix
71 define([ac_cv_docbook_dtd_VERS], patsubst([ac_cv_docbook_dtd_]_VERS, [\.], [_]))
72 define([HAVE_DOCBOOK_DTD_VERS], patsubst([HAVE_DOCBOOK_DTD_]_VERS, [\.], [_]))
74 AC_CACHE_CHECK([for Docbook DTD version ]_VERS, [ac_cv_docbook_dtd_VERS],
76 ac_cv_docbook_dtd_VERS=no
77 if test -n "$XSLTPROC"; then
78 MY_XSLTPROC_FLAGS=`echo "" $XSLTPROC_FLAGS|sed -e s/--novalid//g`
79 cat <<EOF >conftest.xml
80 <?xml version="1.0" encoding='ISO-8859-1'?>
81 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V[]_VERS//EN" "http://www.oasis-open.org/docbook/xml/_VERS/docbookx.dtd">
85 echo "Trying '$XSLTPROC $MY_XSLTPROC_FLAGS conftest.xml'" >&AS_MESSAGE_LOG_FD
86 echo "conftest.xml:" >&AS_MESSAGE_LOG_FD
87 echo "====" >&AS_MESSAGE_LOG_FD
88 cat conftest.xml >&AS_MESSAGE_LOG_FD
89 echo "====" >&AS_MESSAGE_LOG_FD
91 $XSLTPROC $MY_XSLTPROC_FLAGS conftest.xml >conftest.out 2>&1
92 if test "$?" = 0 -o "$?" = 5; then
93 # failing to load the DTD is just a warning, so check for it in the output.
94 if grep 'warning: failed to load external entity' conftest.out >/dev/null 2>&1; then
97 ac_cv_docbook_dtd_VERS=yes
100 cat conftest.out >&AS_MESSAGE_LOG_FD
102 rm -f conftest.xml conftest.out
106 HAVE_DOCBOOK_DTD_VERS="$ac_cv_docbook_dtd_VERS"
107 HAVE_DOCBOOK_DTD="$HAVE_DOCBOOK_DTD_VERS"
109 dnl clean up m4 namespace
111 undefine([ac_cv_docbook_dtd_VERS])
112 undefine([HAVE_DOCBOOK_DTD_VERS])