#!/bin/bash

#
# See setup for user tweakables.
#
. ./setup

if test "z$BUILD_WIN32" = "z" -a "z`uname -s`" != "zSunOS" -a "z`uname -s`" != "zDarwin"; then
    if ! test -f /proc/cpuinfo; then
        echo "Looks like proc isn't mounted - this means almost certain"
        echo "Java related weird build failure: please check /proc"
        exit 1;
    fi
fi

if test "z`uname -s`" == "zSunOS"; then
    if test -f $GNUTAR -a ! -f $OOBUILDDIR/solenv/bin/tar; then
    	ln -s $GNUTAR $OOBUILDDIR/solenv/bin/tar
    fi
    if test -d /usr/sfw/lib/pkgconfig; then
        PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/sfw/lib/pkgconfig"
	export PKG_CONFIG_PATH
	CFLAGS="$CFLAGS -I/usr/sfw/include"
	export CFLAGS
	CXXFLAGS="$CXXFLAGS -I/usr/sfw/include"
	export CXXFLAGS
	CPPFLAGS="$CPPFLAGS -I/usr/sfw/include"
	export CPPFLAGS
    fi
fi

# configure

#  main configure
if [ -d $OOBUILDDIR/config_office ]; then
	cd $OOBUILDDIR/config_office
else
	cd $OOBUILDDIR
fi
rm -f config.cache
echo "configuring ...";
autoconf || exit 1;

echo "Env for configure:"
set
echo "Env for configure ends"

eval ./configure "$CONFIGURE_OPTIONS" "$PROPAGATED_ARGS" || exit 1;

# Final build preparation

# tcsh sucks great rocks, and refuses to re-direct it's output otherwise
export TERM=
# Many Java files have 8bit char-set comments, javac barfs on them in utf8 locales
export LC_ALL='C';

if test "z$ENABLE_JAVA" = "zyes"; then
	# Many Java's can't cope with the NPTL on Linux.
	LD_ASSUME_KERNEL=2.2.5 /bin/true 2> /dev/null || LD_ASSUME_KERNEL=2.4.10 /bin/true 2> /dev/null || LD_ASSUME_KERNEL=2.6.0 2> /dev/null || unset LD_ASSUME_KERNEL
	export LD_ASSUME_KERNEL
fi
# Embedded python dies without Home set
if test "z$HOME" = "z"; then
    export HOME="";
fi
cd $OOBUILDDIR

echo 'Importing Environment'
# Import all of the OO.o environment
if test "z$BUILD_WIN32" = "zyes"; then
    . $OOBUILDDIR/*.set.sh
else
    . $OOBUILDDIR/*.Set.sh
fi

# Check to see if dmake was not there - if not, this is a from-pristine build
echo "Build: z$BUILD_DMAKE == zYES -a ! -f $SOLARENV/$OUTPATH/bin/dmake";
if test "z$BUILD_DMAKE" == "zYES" -a ! -f "$SOLARENV/$OUTPATH/bin/dmake"; then
	# Accelerate straight-through compiles by not building / using dependencies
	echo "A very clean straight-through build - deferring dep generation"
	export nodep=1
else
    echo "Building with full dependencies"
fi

echo 'Bootstrapping'
./bootstrap || ./bootstrap || ./bootstrap || exit 1;

# Copy in missing libraries if we just built them
if test "z$SYSTEM_GCC" = "z"; then
    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++* $SOLARVER/$UPD/$INPATH/lib/ || exit 1;
fi

echo 'Verifying environment'
echo "Path:  \'$PATH\'"
echo "Shell: \'$SHELL\'"
echo "Lang:  \'$OOO_LANGS\'"
if test "z$BUILD_WIN32" != "zyes"; then
    echo "Gcc: "
    gcc -dumpversion
fi
bison --version
flex --version
# parallel build setting
EXTRA_BUILD_FLAGS=
if test "$BUILD_NCPUS" -gt 1; then
    EXTRA_BUILD_FLAGS="-P$BUILD_NCPUS"
fi
if test "z$BUILD_WIN32" = "z"; then
    EXTRA_BUILD_FLAGS="--dlv_switch -link $EXTRA_BUILD_FLAGS"
fi
if test "z$BUILD_HTML_OUTPUT" != "z"; then
    EXTRA_BUILD_FLAGS="--html $EXTRA_BUILD_FLAGS"
fi
echo "EXTRA_BUILD_FLAGS: $EXTRA_BUILD_FLAGS"

EXTRA_DMAKE_FLAGS=
if test "$MAX_JOBS" -gt 1; then
    EXTRA_DMAKE_FLAGS="-- -P$MAX_JOBS"
fi

# Automake exports MAKEFLAGS= --unix or something
# similar that gives child nmake's pain.
unset MAKEFLAGS

echo "Env:"
set

if test "z$BUILD_WIN32" != "z"; then
    mkdir -p $OOBUILDDIR/external/msvcp90
fi


if test "z$PIECE" != "z"; then
	echo "Build $PIECE"
	. $TOOLSDIR/bin/piece/build-$PIECE
else

# update localizations from external sources
# FIXME temporary hack to merge the GSI files
cd $TOOLSDIR/bin
export EXTRA_BUILD_FLAGS EXTRA_DMAKE_FLAGS
./localize-ooo || exit 1;
cd -

echo 'Commencing main build'

cd $OOBUILDDIR/instsetoo_native || exit 1;
perl $SOLARENV/bin/build.pl --all $EXTRA_BUILD_FLAGS $EXTRA_DMAKE_FLAGS || exit 1;
OOO_REBUILD_NEEDED="no"
fi # !PIECE

echo "Build succeeded ...!"

exit 0;
