#!/bin/bash
# Generate the libstdc++ onlinedocs for a GCC release
# i.e. http://gcc.gnu.org/onlinedocs/gcc-x.y.z/libstdc++*

SRCDIR=${1}
DOCSDIR=${2}

if ! [ $# -eq 2 -a -x "${SRCDIR}/configure" -a -d "${DOCSDIR}" ]
then
  if ! [ $# -eq 2 ]
  then
    echo "$0: Wrong number of arguments" >&2
  elif ! [ -x "${SRCDIR}/configure" ]
  then
    echo "$0: No executable configure script found in $SRCDIR" >&2
  elif ! [ -d "${DOCSDIR}" ]
  then
    echo "$0: Output directory does not exist: $DOCSDIR" >&2
  fi
  echo "Usage: $0 <gcc src dir> <doc output dir>" >&2
  exit 1
fi

set -e

DOCSDIR=$(realpath ${DOCSDIR})

# Check we have some of the required tools
for i in doxygen dot dblatex pdflatex makeindex
do
  echo -n "Checking for $i... "
  which $i
done

start=$PWD
WORKDIR=`mktemp -d $PWD/build.XXXXXX`
DESTDIR=`mktemp -d $PWD/dest.XXXXXX`
cd $WORKDIR
disabled_libs=
for dir in ${SRCDIR}/lib*
do
  dir="${dir##*/}"
  [ $dir == 'libstdc++-v3' ] || disabled_libs="$disabled_libs --disable-$dir"
done
set -x
${SRCDIR}/configure --enable-languages=c,c++ --disable-gcc --disable-multilib $disabled_libs --docdir=/docs
eval `grep '^target=' config.log`
make configure-target
# If the following step fails with an error like
# ! LaTeX Error: File `xtab.sty' not found.
# then you need to install the relevant TeX package e.g. texlive-xtab
make -C $target/libstdc++-v3 doc-install-html doc-install-xml doc-install-pdf DESTDIR=$DESTDIR
cd $DESTDIR/docs
mkdir libstdc++
for which in api manual
do
  if [ -f libstdc++-$which-single.xml ] # Only needed for GCC 4.7.x
  then
    mv libstdc++-$which-single.xml libstdc++-$which.xml
  fi
  gzip --best libstdc++-$which.xml
  gzip --best libstdc++-$which.pdf
  mv libstdc++-$which{.html,-html}
  tar czf libstdc++-$which-html.tar.gz libstdc++-$which-html
  mv libstdc++-$which-html libstdc++/$which
done
mv *.gz libstdc++ $DOCSDIR/
cd $start
rm -r $WORKDIR
rm -r $DESTDIR

