#!/bin/sh -e

export CC=gcc
export CXX=g++

# Check for GNU patch.
if ! patch --version | grep -q GNU; then
    echo "'patch' needs to be GNU patch!"
    echo "# kiss a patch /usr/bin/patch"
    exit 1
fi

# Busybox sha256 does not support longopts
sed -e "s/--check/-c/g" -i Makefile.am

mkdir -p patches
for p in *.patch; do
    case $p in
        icedtea-*.patch)
            cp "$p" patches/
            ;;
        *.patch)
            patch -p1 < "$p"
            ;;
    esac
done

./autogen.sh

jdk_prefix=/usr/lib/jvm/java-1.7-openjdk

# using ccache causes ICEs with pregenerated headers
export CCACHE_DISABLE=1

case "$(uname)" in
    Linux)
        JOBS="$(nproc)"
        ;;
    FreeBSD | Darwin | OpenBSD)
        JOBS="$(sysctl -n hw.ncpu)"
        ;;
esac


export ALT_PARALLEL_COMPILE_JOBS="$JOBS"
export HOTSPOT_BUILD_JOBS="$JOBS"
# Check for openjdk7, if it's installed, don't bootstrap
if [ -e $jdk_prefix ]; then
    export JAVA_HOME="$jdk_prefix"
else
    export JAVA_HOME="/usr/lib/jvm/java-1.5-gcj"
    export BOOTSTRAP=y
fi
export PATH="$JAVA_HOME/bin:/usr/share/apache-ant/bin:$PATH"
export DISTRIBUTION_PATCHES=""

export CFLAGS="$CFLAGS -fcommon -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64"
export CFLAGS="$CXXFLAGS -fcommon -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64"
export EXTRA_CPP_FLAGS="$CXXFLAGS -std=gnu++98 -fno-delete-null-pointer-checks -fno-lifetime-dse -fno-strict-overflow"
export EXTRA_CFLAGS="$CFLAGS -std=gnu++98 -Wno-error -fno-delete-null-pointer-checks -fno-lifetime-dse -fno-strict-overflow"

for p in patches/*.patch; do
    case $p in
        patches/icedtea-*.patch)
            DISTRIBUTION_PATCHES="$DISTRIBUTION_PATCHES $p"
            ;;
    esac
done

for tarball in *.tar.bz2\?no-extract; do
    name="$(echo "$tarball" | cut -d'.' -f1)"
    case "$name" in
        *) mv "$tarball" "$name-$2.tar.bz2";;
    esac
done

./configure \
    --prefix="$jdk_prefix" \
    --sysconfdir=/etc \
    --mandir=/usr/share/man \
    --infodir=/usr/share/info \
    --localstatedir=/var \
    --with-parallel-jobs="$JOBS" \
    --disable-dependency-tracking \
    --disable-downloading \
    --disable-arm32-jit \
    --disable-docs \
    --disable-tests \
    --disable-system-pcsc \
    --disable-system-sctp \
    --without-rhino \
    --with-jar=/usr/bin/fastjar \
    --with-openjdk-src-zip="$PWD/openjdk-$2.tar.bz2" \
    --with-hotspot-src-zip="$PWD/hotspot-$2.tar.bz2" \
    --with-corba-src-zip="$PWD/corba-$2.tar.bz2" \
    --with-jaxp-src-zip="$PWD/jaxp-$2.tar.bz2" \
    --with-jaxws-src-zip="$PWD/jaxws-$2.tar.bz2" \
    --with-jdk-src-zip="$PWD/jdk-$2.tar.bz2" \
    --with-langtools-src-zip="$PWD/langtools-$2.tar.bz2" \
    --with-jdk-home="$JAVA_HOME"
#if [ -z $BOOTSTRAP ]; then
#    make SHELL=/usr/bin/bash # Commented out for now because of: 'unzip: crc error'
#    outdir=build
#else
    make SHELL=/usr/bin/bash icedtea-boot
    outdir=build-boot
#fi

mkdir -p "$1/$jdk_prefix"
cp -a openjdk.$outdir/j2sdk-image/* "$1/$jdk_prefix"
cp -a openjdk.$outdir/include       "$1/$jdk_prefix"
rm -rf "$1/$jdk_prefix/src.zip"
