| dnl AS_DOCBOOK([, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) |
| dnl checks if xsltproc can build docbook documentation |
| dnl (which is possible if the catalog is set up properly |
| dnl I also tried checking for a specific version and type of docbook |
| dnl but xsltproc seemed to happily run anyway, so we can't check for that |
| dnl and version |
| dnl this macro takes inspiration from |
| dnl http://www.movement.uklinux.net/docs/docbook-autotools/configure.html |
| AC_DEFUN([AS_DOCBOOK], |
| [ |
| XSLTPROC_FLAGS=--nonet |
| DOCBOOK_ROOT= |
| TYPE_LC=xml |
| TYPE_UC=XML |
| DOCBOOK_VERSION=4.1.2 |
| |
| if test -n "$XML_CATALOG_FILES"; then |
| oldIFS=$IFS |
| IFS=' ' |
| for xml_catalog_file in $XML_CATALOG_FILES; do |
| if test -f $xml_catalog_file; then |
| XML_CATALOG=$xml_catalog_file |
| CAT_ENTRY_START='<!--' |
| CAT_ENTRY_END='-->' |
| break |
| fi |
| done |
| IFS=$oldIFS |
| elif test ! -f /etc/xml/catalog; then |
| for i in /usr/share/sgml/docbook/stylesheet/xsl/nwalsh /usr/share/sgml/docbook/xsl-stylesheets/ /usr/local/share/xsl/docbook ; |
| do |
| if test -d "$i"; then |
| DOCBOOK_ROOT=$i |
| fi |
| done |
| else |
| XML_CATALOG=/etc/xml/catalog |
| CAT_ENTRY_START='<!--' |
| CAT_ENTRY_END='-->' |
| fi |
| |
| dnl We need xsltproc to process the test |
| AC_CHECK_PROG(XSLTPROC,xsltproc,xsltproc,) |
| XSLTPROC_WORKS=no |
| if test -n "$XSLTPROC"; then |
| AC_MSG_CHECKING([whether xsltproc docbook processing works]) |
| |
| if test -n "$XML_CATALOG"; then |
| DB_FILE="http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl" |
| else |
| DB_FILE="$DOCBOOK_ROOT/xhtml/docbook.xsl" |
| fi |
| $XSLTPROC $XSLTPROC_FLAGS $DB_FILE >/dev/null 2>&1 << END |
| <?xml version="1.0" encoding='ISO-8859-1'?> |
| <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook $TYPE_UC V$DOCBOOK_VERSION//EN" "http://www.oasis-open.org/docbook/$TYPE_LC/$DOCBOOK_VERSION/docbookx.dtd"> |
| <book id="test"> |
| </book> |
| END |
| if test "$?" = 0; then |
| XSLTPROC_WORKS=yes |
| fi |
| AC_MSG_RESULT($XSLTPROC_WORKS) |
| fi |
| |
| if test "x$XSLTPROC_WORKS" = "xyes"; then |
| dnl execute ACTION-IF-FOUND |
| ifelse([$1], , :, [$1]) |
| else |
| dnl execute ACTION-IF-NOT-FOUND |
| ifelse([$2], , :, [$2]) |
| fi |
| |
| AC_SUBST(XML_CATALOG) |
| AC_SUBST(XSLTPROC_FLAGS) |
| AC_SUBST(DOCBOOK_ROOT) |
| AC_SUBST(CAT_ENTRY_START) |
| AC_SUBST(CAT_ENTRY_END) |
| ]) |