diff --git a/configure.ac b/configure.ac index 6593eb0..2664bd9 100644 --- a/configure.ac +++ b/configure.ac @@ -95,8 +95,14 @@ AS_IF([test "x$enable_man_pages" != "xno"], [AC_PATH_PROG([XSLTPROC], [xsltproc]) AS_IF([test "xac_cv_path_XSLTPROC" = "x"], [have_xsltproc=no], [have_xsltproc=yes]) -dnl TODO: Also check for the required stylesheets. - AS_IF([test "x$have_xsltproc" = "xyes"], + JH_CHECK_XML_CATALOG([-//OASIS//DTD DocBook XML V4.2//EN], + [DocBook XML DTD V4.2], [have_docbookdtd=yes], + [have_docbookdtd=no]) + JH_CHECK_XML_CATALOG([http://docbook.sourceforge.net/release/xsl/current/html/refentry.xsl], + [DocBook XSL Stylesheets], [have_docbookxsl=yes], + [have_docbookxsl=no]) + AS_IF([test "x$have_xsltproc" = "xyes" -a "x$have_docbookdtd" = "xyes" \ + -a "x$have_docbookxsl" = "xyes"], [have_manutils=yes], [AS_IF([test "x$enable_man_pages" = "xyes"], [AC_MSG_ERROR([man page requested but required utilities were not found])]) diff --git a/m4/gtkdoc_jh_check_xml_catalog.m4 b/m4/gtkdoc_jh_check_xml_catalog.m4 new file mode 100644 index 0000000..618c1c9 --- /dev/null +++ b/m4/gtkdoc_jh_check_xml_catalog.m4 @@ -0,0 +1,16 @@ +dnl Checks if a particular URI appears in the XML catalog +dnl Usage: +dnl JH_CHECK_XML_CATALOG(URI, [FRIENDLY-NAME], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +AC_DEFUN([JH_CHECK_XML_CATALOG], +[ + AC_REQUIRE([JH_PATH_XML_CATALOG],[JH_PATH_XML_CATALOG(,[:])])dnl + AC_MSG_CHECKING([for ifelse([$2],,[$1],[$2]) in XML catalog]) + if $jh_found_xmlcatalog && \ + AC_RUN_LOG([$XMLCATALOG --noout "$XML_CATALOG_FILE" "$1" >&2]); then + AC_MSG_RESULT([found]) + ifelse([$3],,,[$3]) + else + AC_MSG_RESULT([not found]) + ifelse([$4],,[AC_MSG_ERROR([could not find ifelse([$2],,[$1],[$2]) in XML catalog])],[$4]) + fi +]) diff --git a/m4/gtkdoc_jh_path_xml_catalog.m4 b/m4/gtkdoc_jh_path_xml_catalog.m4 new file mode 100644 index 0000000..cca2267 --- /dev/null +++ b/m4/gtkdoc_jh_path_xml_catalog.m4 @@ -0,0 +1,61 @@ +dnl Checks the location of the XML Catalog +dnl Usage: +dnl JH_PATH_XML_CATALOG([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl Defines XMLCATALOG and XML_CATALOG_FILE substitutions +AC_DEFUN([JH_PATH_XML_CATALOG], +[ + dnl check for the presence of the XML catalog + AC_ARG_WITH([xml-catalog], + AS_HELP_STRING([--with-xml-catalog=CATALOG], + [path to xml catalog to use]),, + [with_xml_catalog='']) + AC_MSG_CHECKING([for XML catalog]) + if test -n "$with_xml_catalog"; then + dnl path was explicitly given. check that it exists. + if test -f "$with_xml_catalog"; then + jh_found_xmlcatalog=true + else + jh_found_xmlcatalog=false + fi + else + dnl if one was not explicitly specified, try some guesses + dnl we look first in /etc/xml/catalog, then XDG_DATA_DIRS/xml/catalog + if test -z "$XDG_DATA_DIRS"; then + dnl if we have no XDG_DATA_DIRS, use the default + jh_xml_catalog_searchdirs="/etc:/usr/local/share:/usr/share" + else + jh_xml_catalog_searchdirs="/etc:$XDG_DATA_DIRS" + fi + jh_found_xmlcatalog=false + dnl take care to iterate based on ':', allowing whitespace to appear in paths + jh_xml_catalog_saved_ifs="$IFS" + IFS=':' + for d in $jh_xml_catalog_searchdirs; do + if test -f "$d/xml/catalog"; then + with_xml_catalog="$d/xml/catalog" + jh_found_xmlcatalog=true + break + fi + done + IFS="$jh_xml_catalog_saved_ifs" + fi + if $jh_found_xmlcatalog; then + AC_MSG_RESULT([$with_xml_catalog]) + else + AC_MSG_RESULT([not found]) + fi + XML_CATALOG_FILE="$with_xml_catalog" + AC_SUBST([XML_CATALOG_FILE]) + + dnl check for the xmlcatalog program + AC_PATH_PROG(XMLCATALOG, xmlcatalog, no) + if test "x$XMLCATALOG" = xno; then + jh_found_xmlcatalog=false + fi + + if $jh_found_xmlcatalog; then + ifelse([$1],,[:],[$1]) + else + ifelse([$2],,[AC_MSG_ERROR([could not find XML catalog])],[$2]) + fi +])