Blame tools/boostbook/setup_boostbook.sh

Packit 58578d
#!/bin/sh
Packit 58578d
#   Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
Packit 58578d
#
Packit 58578d
#   Distributed under the Boost Software License, Version 1.0.
Packit 58578d
#   (See accompanying file LICENSE_1_0.txt or copy at
Packit 58578d
#   http://www.boost.org/LICENSE_1_0.txt)
Packit 58578d
Packit 58578d
# User configuration
Packit 58578d
# (MAINTANERS: please, keep in synch with setup_boostbook.py)
Packit 58578d
DOCBOOK_XSL_VERSION=1.75.2
Packit 58578d
DOCBOOK_DTD_VERSION=4.2
Packit 58578d
FOP_VERSION=0.94
Packit 58578d
FOP_JDK_VERSION=1.4
Packit 58578d
# FOP_MIRROR=http://mirrors.ibiblio.org/pub/mirrors/apache/xmlgraphics/fop/binaries
Packit 58578d
FOP_MIRROR=http://archive.apache.org/dist/xmlgraphics/fop/binaries/
Packit 58578d
SOURCEFORGE_DOWNLOAD=http://sourceforge.net/projects/docbook/files/
Packit 58578d
HTTP_GET_CMD="curl -O -L"
Packit 58578d
Packit 58578d
# No user configuration below this point-------------------------------------
Packit 58578d
Packit 58578d
# Get the DocBook XSLT Stylesheets
Packit 58578d
DOCBOOK_XSL_TARBALL=docbook-xsl-$DOCBOOK_XSL_VERSION.tar.gz
Packit 58578d
DOCBOOK_XSL_URL=$SOURCEFORGE_DOWNLOAD/docbook-xsl/$DOCBOOK_XSL_VERSION/$DOCBOOK_XSL_TARBALL
Packit 58578d
if test -f $DOCBOOK_XSL_TARBALL; then
Packit 58578d
  echo "Using existing DocBook XSLT Stylesheets (version $DOCBOOK_XSL_VERSION)."
Packit 58578d
else
Packit 58578d
  echo "Downloading DocBook XSLT Stylesheets version $DOCBOOK_XSL_VERSION..."
Packit 58578d
  $HTTP_GET_CMD $DOCBOOK_XSL_URL
Packit 58578d
fi
Packit 58578d
Packit 58578d
DOCBOOK_XSL_DIR="$PWD/docbook-xsl-$DOCBOOK_XSL_VERSION"
Packit 58578d
if test ! -d docbook-xsl-$DOCBOOK_XSL_VERSION; then
Packit 58578d
  echo -n "Expanding DocBook XSLT Stylesheets into $DOCBOOK_XSL_DIR..."
Packit 58578d
  gunzip -cd $DOCBOOK_XSL_TARBALL | tar xf -
Packit 58578d
  echo "done."
Packit 58578d
fi
Packit 58578d
Packit 58578d
# Get the DocBook DTD
Packit 58578d
DOCBOOK_DTD_ZIP=docbook-xml-$DOCBOOK_DTD_VERSION.zip
Packit 58578d
DOCBOOK_DTD_URL=http://www.oasis-open.org/docbook/xml/$DOCBOOK_DTD_VERSION/$DOCBOOK_DTD_ZIP
Packit 58578d
if test -f $DOCBOOK_DTD_ZIP; then
Packit 58578d
  echo "Using existing DocBook XML DTD (version $DOCBOOK_DTD_VERSION)."
Packit 58578d
else
Packit 58578d
  echo "Downloading DocBook XML DTD version $DOCBOOK_DTD_VERSION..."
Packit 58578d
  $HTTP_GET_CMD $DOCBOOK_DTD_URL
Packit 58578d
fi
Packit 58578d
Packit 58578d
DOCBOOK_DTD_DIR="$PWD/docbook-dtd-$DOCBOOK_DTD_VERSION"
Packit 58578d
if test ! -d docbook-dtd-$DOCBOOK_DTD_VERSION; then
Packit 58578d
  echo -n "Expanding DocBook XML DTD into $DOCBOOK_DTD_DIR... "
Packit 58578d
  unzip -q $DOCBOOK_DTD_ZIP -d $DOCBOOK_DTD_DIR
Packit 58578d
  echo "done."
Packit 58578d
fi
Packit 58578d
Packit 58578d
# Find xsltproc, doxygen, and java
Packit 58578d
OLD_IFS=$IFS
Packit 58578d
IFS=:
Packit 58578d
for dir in $PATH; do
Packit 58578d
  if test -f $dir/xsltproc && test -x $dir/xsltproc; then
Packit 58578d
    XSLTPROC="$dir/xsltproc"
Packit 58578d
  fi
Packit 58578d
  if test -f $dir/doxygen && test -x $dir/doxygen; then
Packit 58578d
    DOXYGEN="$dir/doxygen"
Packit 58578d
  fi
Packit 58578d
  if test -f $dir/java && test -x $dir/java; then
Packit 58578d
    JAVA="$dir/java"
Packit 58578d
  fi
Packit 58578d
done
Packit 58578d
IFS=$OLD_IFS
Packit 58578d
Packit 58578d
# Make sure we have xsltproc
Packit 58578d
if test ! -f "$XSLTPROC" && test ! -x "$XSLTPROC"; then
Packit 58578d
  echo "Searching for xsltproc... NOT FOUND.";
Packit 58578d
  echo "ERROR: Unable to find xsltproc executable."
Packit 58578d
  echo "If you have already installed xsltproc, please set the environment"
Packit 58578d
  echo "variable XSLTPROC to the xsltproc executable. If you do not have"
Packit 58578d
  echo "xsltproc, you may download it from http://xmlsoft.org/XSLT/."
Packit 58578d
  exit 0;
Packit 58578d
else
Packit 58578d
  echo "Searching for xsltproc... $XSLTPROC.";
Packit 58578d
fi
Packit 58578d
Packit 58578d
# Just notify the user if we haven't found doxygen.
Packit 58578d
if test ! -f "$DOXYGEN" && test ! -x "$DOXYGEN"; then
Packit 58578d
  echo "Searching for Doxygen... not found.";
Packit 58578d
  echo "Warning: unable to find Doxygen executable. You will not be able to"
Packit 58578d
  echo "  use Doxygen to generate BoostBook documentation. If you have Doxygen,"
Packit 58578d
  echo "  please set the DOXYGEN environment variable to the path of the doxygen"
Packit 58578d
  echo "  executable."
Packit 58578d
  HAVE_DOXYGEN="no"
Packit 58578d
else
Packit 58578d
  echo "Searching for Doxygen... $DOXYGEN.";
Packit 58578d
  HAVE_DOXYGEN="yes"
Packit 58578d
fi
Packit 58578d
Packit 58578d
# Just notify the user if we haven't found Java. Otherwise, go get FOP.
Packit 58578d
if test ! -f "$JAVA" && test ! -x "$JAVA"; then
Packit 58578d
  echo "Searching for Java... not found.";
Packit 58578d
  echo "Warning: unable to find Java executable. You will not be able to"
Packit 58578d
  echo "  generate PDF documentation. If you have Java, please set the JAVA"
Packit 58578d
  echo "  environment variable to the path of the java executable."
Packit 58578d
  HAVE_FOP="no"
Packit 58578d
else
Packit 58578d
  echo "Searching for Java... $JAVA.";
Packit 58578d
  FOP_TARBALL="fop-$FOP_VERSION-bin-jdk$FOP_JDK_VERSION.tar.gz"
Packit 58578d
  FOP_URL="$FOP_MIRROR/$FOP_TARBALL"
Packit 58578d
  FOP_DIR="$PWD/fop-$FOP_VERSION"
Packit 58578d
  FOP="$FOP_DIR/fop"
Packit 58578d
  if test -f $FOP_TARBALL; then
Packit 58578d
    echo "Using existing FOP distribution (version $FOP_VERSION)."
Packit 58578d
  else
Packit 58578d
    echo "Downloading FOP distribution version $FOP_VERSION..."
Packit 58578d
    $HTTP_GET_CMD $FOP_URL
Packit 58578d
  fi
Packit 58578d
Packit 58578d
  if test ! -d $FOP_DIR; then
Packit 58578d
    echo -n "Expanding FOP distribution into $FOP_DIR... ";
Packit 58578d
    gunzip -cd $FOP_TARBALL | tar xf -
Packit 58578d
    echo "done.";
Packit 58578d
  fi
Packit 58578d
  HAVE_FOP="yes"
Packit 58578d
fi
Packit 58578d
Packit 58578d
# Find the input jamfile to configure
Packit 58578d
JAM_CONFIG_OUT="$HOME/user-config.jam"
Packit 58578d
if test -r "$HOME/user-config.jam"; then
Packit 58578d
  JAM_CONFIG_IN="user-config-backup.jam"
Packit 58578d
  cp $JAM_CONFIG_OUT user-config-backup.jam
Packit 58578d
  JAM_CONFIG_IN_TEMP="yes"
Packit 58578d
  echo -n "Updating Boost.Jam configuration in $JAM_CONFIG_OUT... "
Packit 58578d
Packit 58578d
elif test -r "$BOOST_ROOT/tools/build/user-config.jam"; then
Packit 58578d
  JAM_CONFIG_IN="$BOOST_ROOT/tools/build/user-config.jam";
Packit 58578d
  JAM_CONFIG_IN_TEMP="no"
Packit 58578d
  echo -n "Writing Boost.Jam configuration to $JAM_CONFIG_OUT... "
Packit 58578d
else
Packit 58578d
  echo "ERROR: Please set the BOOST_ROOT environment variable to refer to your"
Packit 58578d
  echo "Boost installation or copy user-config.jam into your home directory."
Packit 58578d
  exit 0
Packit 58578d
fi
Packit 58578d
Packit 58578d
cat > setup_boostbook.awk <
Packit 58578d
BEGIN { using_boostbook = 0; eaten=0 }
Packit 58578d
Packit 58578d
/^\s*using boostbook/ {
Packit 58578d
  using_boostbook = 1;
Packit 58578d
  print "using boostbook";
Packit 58578d
  print "  : $DOCBOOK_XSL_DIR";
Packit 58578d
  print "  : $DOCBOOK_DTD_DIR";
Packit 58578d
  eaten=1
Packit 58578d
}
Packit 58578d
Packit 58578d
using_boostbook==1 && /;/ { using_boostbook = 2 }
Packit 58578d
using_boostbook==1 { eaten=1 }
Packit 58578d
Packit 58578d
/^\s*using xsltproc.*$/ { eaten=1 }
Packit 58578d
/^\s*using doxygen.*$/ { eaten=1 }
Packit 58578d
/^\s*using fop.*$/ { eaten=1 }
Packit 58578d
Packit 58578d
/^.*$/             { if (eaten == 0) print; eaten=0 }
Packit 58578d
Packit 58578d
END {
Packit 58578d
  if (using_boostbook==0) {
Packit 58578d
    print "using boostbook";
Packit 58578d
    print "  : $DOCBOOK_XSL_DIR";
Packit 58578d
    print "  : $DOCBOOK_DTD_DIR";
Packit 58578d
    print "  ;"
Packit 58578d
  }
Packit 58578d
  print "using xsltproc : $XSLTPROC ;"
Packit 58578d
  if ("$HAVE_DOXYGEN" == "yes") print "using doxygen : $DOXYGEN ;";
Packit 58578d
  if ("$HAVE_FOP" == "yes") print "using fop : $FOP : : $JAVA ;";
Packit 58578d
}
Packit 58578d
EOF
Packit 58578d
Packit 58578d
awk -f setup_boostbook.awk $JAM_CONFIG_IN > $JAM_CONFIG_OUT
Packit 58578d
rm -f setup_boostbook.awk
Packit 58578d
echo "done."
Packit 58578d
Packit 58578d
echo "Done! Execute \"b2\" in a documentation directory to generate"
Packit 58578d
echo "documentation with BoostBook. If you have not already, you will need"
Packit 58578d
echo "to compile Boost.Jam."