14d5abbe8Smrg#!/bin/bash 24d5abbe8Smrg# Generate the libstdc++ onlinedocs for a GCC release 34d5abbe8Smrg# i.e. http://gcc.gnu.org/onlinedocs/gcc-x.y.z/libstdc++* 44d5abbe8Smrg 54d5abbe8SmrgSRCDIR=${1} 6181254a7SmrgDOCSDIR=${2} 74d5abbe8Smrg 84d5abbe8Smrgif ! [ $# -eq 2 -a -x "${SRCDIR}/configure" -a -d "${DOCSDIR}" ] 94d5abbe8Smrgthen 10181254a7Smrg if ! [ $# -eq 2 ] 11181254a7Smrg then 12181254a7Smrg echo "$0: Wrong number of arguments" >&2 13181254a7Smrg elif ! [ -x "${SRCDIR}/configure" ] 14181254a7Smrg then 15181254a7Smrg echo "$0: No executable configure script found in $SRCDIR" >&2 16181254a7Smrg elif ! [ -d "${DOCSDIR}" ] 17181254a7Smrg then 18181254a7Smrg echo "$0: Output directory does not exist: $DOCSDIR" >&2 19181254a7Smrg fi 204d5abbe8Smrg echo "Usage: $0 <gcc src dir> <doc output dir>" >&2 214d5abbe8Smrg exit 1 224d5abbe8Smrgfi 234d5abbe8Smrg 244d5abbe8Smrgset -e 254d5abbe8Smrg 26181254a7SmrgDOCSDIR=$(realpath ${DOCSDIR}) 27181254a7Smrg 284d5abbe8Smrg# Check we have some of the required tools 294d5abbe8Smrgfor i in doxygen dot dblatex pdflatex makeindex 304d5abbe8Smrgdo 314d5abbe8Smrg echo -n "Checking for $i... " 324d5abbe8Smrg which $i 334d5abbe8Smrgdone 344d5abbe8Smrg 354d5abbe8Smrgstart=$PWD 364d5abbe8SmrgWORKDIR=`mktemp -d $PWD/build.XXXXXX` 374d5abbe8SmrgDESTDIR=`mktemp -d $PWD/dest.XXXXXX` 384d5abbe8Smrgcd $WORKDIR 394d5abbe8Smrgdisabled_libs= 404d5abbe8Smrgfor dir in ${SRCDIR}/lib* 414d5abbe8Smrgdo 424d5abbe8Smrg dir="${dir##*/}" 434d5abbe8Smrg [ $dir == 'libstdc++-v3' ] || disabled_libs="$disabled_libs --disable-$dir" 444d5abbe8Smrgdone 454d5abbe8Smrgset -x 46*0f1671f2Smrg${SRCDIR}/configure --enable-languages=c,c++ --disable-gcc --disable-multilib $disabled_libs --docdir=/docs 474d5abbe8Smrgeval `grep '^target=' config.log` 484d5abbe8Smrgmake configure-target 49f9a78e0eSmrg# If the following step fails with an error like 50f9a78e0eSmrg# ! LaTeX Error: File `xtab.sty' not found. 51f9a78e0eSmrg# then you need to install the relevant TeX package e.g. texlive-xtab 524d5abbe8Smrgmake -C $target/libstdc++-v3 doc-install-html doc-install-xml doc-install-pdf DESTDIR=$DESTDIR 534d5abbe8Smrgcd $DESTDIR/docs 544d5abbe8Smrgmkdir libstdc++ 554d5abbe8Smrgfor which in api manual 564d5abbe8Smrgdo 574d5abbe8Smrg if [ -f libstdc++-$which-single.xml ] # Only needed for GCC 4.7.x 584d5abbe8Smrg then 594d5abbe8Smrg mv libstdc++-$which-single.xml libstdc++-$which.xml 604d5abbe8Smrg fi 614d5abbe8Smrg gzip --best libstdc++-$which.xml 624d5abbe8Smrg gzip --best libstdc++-$which.pdf 634d5abbe8Smrg mv libstdc++-$which{.html,-html} 644d5abbe8Smrg tar czf libstdc++-$which-html.tar.gz libstdc++-$which-html 654d5abbe8Smrg mv libstdc++-$which-html libstdc++/$which 664d5abbe8Smrgdone 674d5abbe8Smrgmv *.gz libstdc++ $DOCSDIR/ 684d5abbe8Smrgcd $start 694d5abbe8Smrgrm -r $WORKDIR 704d5abbe8Smrgrm -r $DESTDIR 714d5abbe8Smrg 72