#!/bin/bash

# Tweakables:
BASEDIR=/opt/openoffice

#
# Into the $BASEDIR prefix you need to install
# jdk, binutils, gcc etc. and hand-copy the gpc
# code into the tree to (external/gpc).
#

if test "z$1" = "z"; then
	CVSTAG=OOO_STABLE_1;
else
	CVSTAG=$1;
fi

CVSROOT=':pserver:anoncvs@cvs.openoffice.org:/cvs'
TCSH=/bin/tcsh
LANGS="ENUS";

# Misc directories
BUILDDIR=$BASEDIR/build
OOBUILDDIR=$BUILDDIR/$CVSTAG

# setup paths
PATH="$BUILDDIR/bin:$BUILDDIR/jdk/bin:$PATH"
LD_LIBRARY_PATH="$BUILDDIR/lib:$LD_LIBRARY_PATH"

# Misc. internal
STAMP=ooo-build-stamp

export LD_LIBRARY_PATH PATH CVSROOT CVSTAG
export CCACHE_DIR BUILDDIR OOBUILDDIR BUILD_FLAGS
export VERSION RPM_RELEASE TARGETID TOOLSDIR PREFIX

echo "Setup:"
echo " Tag:    $CVSTAG"
echo " Flags:  $BUILD_FLAGS"
echo " Dir:    $BUILDDIR"

if test "z$1" = 'z--help'; then
	echo "build-ooo <BRANCH> [--checkout[--clean]";
	echo " --checkout: updates CVS tree";
	echo " --clean:    cleans OO build tree";
	exit 0;
fi

# Ensure dirs
echo "Creating environment"
mkdir -p $SRCDIR
mkdir -p $BUILDDIR

# misc install brokenness
mkdir -p $BUILDDIR/bin
mkdir -p $BUILDDIR/share
mkdir -p $BUILDDIR/share/aclocal
mkdir -p $BUILDDIR/share/autoconf
mkdir -p $BUILDDIR/lib
mkdir -p $BUILDDIR/man
mkdir -p $BUILDDIR/man/man1
mkdir -p $OOBUILDDIR

cd $BUILDDIR

# Checkout / Update source:
if (test "z$2" = "z--checkout") || !(test -f $OOBUILDDIR/$STAMP); then
	echo "Updating source ..."
	cd $OOBUILDDIR

#	cvs -z3 -q -d ':pserver:mmeeks@localhost:/cvs' checkout -r $CVSTAG OpenOffice || echo "Some error updating [?]";
	cvs -z3 -q -d ':pserver:anoncvs@ftp.stardiv.de:/cvs' checkout -r $CVSTAG OpenOffice || exit 1;
else
	echo "Skipping checkout, use --checkout to update";
fi

if test "z$3" = "z--clean"; then
	cd $OOBUILDDIR
	echo "Cleaning ..."
	find -name 'unxlngi4.pro' -exec rm -Rf {} \;
fi

# configure
cd $OOBUILDDIR/config_office
rm -f config.cache
./configure --with-gcc-home=$BUILDDIR --with-lang=$LANGS || exit 1;

echo "Starting tsch source builds"
cat > /tmp/build-ooo-tcsh <<"EOF"
#!/bin/tcsh
# Warning - do not edit, this is a temporary file, see build-ooo
cd $OOBUILDDIR
source $OOBUILDDIR/*.Set || exit 1;
echo "Copying libraries to $SOLARVER/$UPD/$INPATH/lib";
mkdir -p $SOLARVER/$UPD/$INPATH/lib || exit 1;
cp -avf $BUILDDIR/lib/libgcc* $BUILDDIR/lib/libstdc* $SOLARVER/$UPD/$INPATH/lib || exit 1;
cp -vf $BUILDDIR/lib/libstdc++.so.3 $SOLARVER/$UPD/$INPATH/lib/libstdc++.so.3.0.1 || exit 1;
echo 'Verifying environment'
echo "Path:  '\$PATH'";
echo "Shell: '\$SHELL'"
echo "Gcc: "
gcc -dumpversion
echo 'Bootstrapping'
./bootstrap || ./bootstrap || ./bootstrap || exit 1;
echo 'Commencing main build'
cd instsetoo || exit 1;
$SOLARENV/bin/build.pl -all product=full $BUILD_FLAGS || exit 1
EOF

chmod 755 /tmp/build-ooo-tcsh
# tcsh sucks great rocks, and refuses to re-direct it's output otherwise
export TERM=
/tmp/build-ooo-tcsh || exit 1;

echo "Build succeeded ...!"
exit 0;
