LDP/LDP/guide/docbook/linux-ip/configure.in

182 lines
5.8 KiB
Plaintext

dnl
dnl Process this file with autoconf to produce a configure script
dnl
dnl $Id$
dnl
dnl -- this configure.ac was written with the help of Jon Nelson
dnl of boa fame, and also the help of the following article:
dnl
dnl http://www.movement.uklinux.net/docs/docbook-autotools/
dnl
dnl -- lines beginning with dnl are ignored by the m4 parser, which
dnl processes the configure.in script to make the ./configure script
dnl
dnl -- comments beginning with # are passed through into the
dnl ./configure script intact
dnl -- this is one of the required commands in an autoconf file
dnl In this macro, you enter the name of a single unique file
dnl which should stay with the distribution (usually the main.c)
dnl
AC_INIT(linux-ip.xml)
# -- first, we want to see if xsltproc is installed. This may
# eventually be replaced by some conditional logic which
# tests to see if there's a java enviroment and prefers or
# allows the use of saxon instead of xsltproc.
#
dnl -- this single line in an autoconf script produces 30+ lines
dnl of portable shell to determine if xsltproc is available on
dnl the system. It can be invoked in such a way as to specify
dnl alternate paths.
dnl
AC_CHECK_PROG(XSLTPROC,xsltproc,xsltproc)
AC_MSG_CHECKING([if xsltproc is recent enough])
if test "$($XSLTPROC --version | awk '/^libxslt/{print $2}')" -lt 10024 ; then
AC_MSG_RESULT([version 1.0.24 or newer required])
exit 1
fi
AC_MSG_RESULT(yes)
# -- now let's test to see if we can find the docbook-xsl stuff
#
XSLTPROC_FLAGS=--nonet
__USE_SYSTEM_CATALOG=yes
dnl
dnl -- above, we have set some variables for use later in the script
dnl -- this next line (the use of AC_ARG_WITH) is how you build support
dnl for configurable parameters into your ./configure script. After
dnl autoconf is run on this configure.in file, the ./configure --help
dnl will report the items in brackets to the user.
dnl
# -- we test to see if the user has set XSL_ROOT in the environment
# or on the command line, with ./configure switches
#
AC_ARG_WITH(xslroot, [ --with-xslroot=DIR Specify DocBook XSL location])
if test "$with_xslroot" != "" ; then
XSL_ROOT="$with_xslroot" # -- user has specified the parameter
fi
AC_MSG_CHECKING([if XSL_ROOT (envar) was specified manually...])
if test ! -z "$XSL_ROOT"; then # -- ugly hack to see if the envar was set
AC_MSG_RESULT(yes)
AC_MSG_CHECKING(for $XSL_ROOT/xhtml/docbook.xsl)
if test -f "$XSL_ROOT/xhtml/docbook.xsl"; then
AC_MSG_RESULT(yes)
__USE_SYSTEM_CATALOG=no
else
AC_MSG_RESULT(not found)
fi
else
AC_MSG_RESULT(no)
fi
# -- OK. the user has still not specified a path to the docbook-xsl tree
# so we have to resort to searching for it.
# -- this is ugly and probably still quite wrong.....
#
if test "$__USE_SYSTEM_CATALOG" = "yes"; then
AC_MSG_CHECKING([if /etc/xml/catalog exists])
if test ! -r /etc/xml/catalog; then
AC_MSG_RESULT(no)
PDB_PATHS="/usr/share/sgml/docbook/xsl"
PDB_PATHS="$PDB_PATHS /usr/share/sgml/docbook/stylesheet/xsl/nwalsh"
PDB_PATHS="$PDB_PATHS /usr/share/sgml/docbook/xsl-stylesheets"
#
# -- yeah, one of my ugly build systems uses /docbook
#
PDB_PATHS="$PDB_PATHS /docbook"
#
# -- add other possible docbook paths here before the for loop
#
# PDB_PATHS="$PDB_PATHS /some/path"
#
for i in $PDB_PATHS ; do
AC_MSG_CHECKING([Looking in $i])
if test -r "${i}/xhtml/docbook.xsl"; then
AC_MSG_RESULT(yes)
XSL_ROOT=$i
else
AC_MSG_RESULT(no)
fi
done
# -- since we haven't been able to locate the docbook.xsl file
# in any of the potentially expected places, we'll need to
# try to allow xsltproc to connect to the canonical source.
# Yes. This is ugly, but it might work.
#
if test -z "$XSL_ROOT"; then
XSLTPROC_FLAGS=
fi
else
AC_MSG_RESULT(yes)
XML_CATALOG=/etc/xml/catalog
fi
fi
dnl -- then you can use as much shell as you want to test things you need
dnl to test on the build system.
dnl
# -- assume that xsltproc is broken, and see if we can make it function
# properly in this environment.
#
XSLTPROC_WORKS=no
if test -n "$XSLTPROC"; then
AC_MSG_CHECKING([whether xsltproc works])
if test -z "$XML_CATALOG" -a -z "$XSLROOT"; then
# -- only if we are using the 'net do we need to set this
#
DB_FILE="http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl"
else
DB_FILE="$XSL_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 XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<book id="test">
</book>
END
if test "$?" = 0; then
XSLTPROC_WORKS=yes
else
AC_MSG_ERROR(xsltproc does not appear to work)
fi
AC_MSG_RESULT($XSLTPROC_WORKS)
fi
dnl
dnl -- above, we have been setting shell variables like XSLTPROC,
dnl XSL_ROOT, XML_CATALOG and so forth.
dnl
dnl -- Let's assume XSL_ROOT="/usr/share/sgml/docbook-xsl". If so,
dnl the generated ./configure script will perform the following
dnl translation on Makefile.in
dnl
dnl -- perl -pe 's|@XSL_ROOT@|/usr/share/sgml/docbook-xsl|g' \
dnl Makefile.in > Makefile
dnl -- so, in order to use the variables set by the ./configure script
dnl you make your Makefile with autoconf vars called @prefix@ and
dnl @datadir@, @XSL_ROOT@ and so on.
dnl
AC_SUBST(XML_CATALOG)
AC_SUBST(XSLTPROC)
AC_SUBST(XSLTPROC_FLAGS)
AC_SUBST(XSL_ROOT)
dnl -- the AC_CONFIG_FILES parameter says that you should operate on the
dnl following set of files, relative to the current directory
dnl
AC_CONFIG_FILES(Makefile xsl/catalog.xml)
dnl -- AC_OUTPUT is the "GO" button. Pressing GO actually causes all of
dnl the files to be rewritten...I believe this is a requirement of an
dnl autoconf file
AC_OUTPUT