##### Control part variables
UPDATE=${PKGVER:2:-3}
BUILD=${PKGVER:(-2)}
SJAVAC=1
ab_match_arch "amd64" && export JARCH="x86_64" CONFARCH="amd64"
ab_match_arch "armv4" && export JARCH="aarch32" CONFARCH="aarch32"
ab_match_arch "armv6hf" && export JARCH="aarch32" CONFARCH="aarch32"
ab_match_arch "armv7hf" && export JARCH="aarch32" CONFARCH="aarch32"
ab_match_arch "arm64" && export JARCH="aarch64" CONFARCH="aarch64"
ab_match_arch "loongson3" && export JARCH="mips64" CONFARCH="mips64el"
ab_match_arch "loongarch64" && export JARCH="loongarch64" CONFARCH="loongarch64"
ab_match_arch "loongarch64_nosimd" && export JARCH="loongarch64" CONFARCH="loongarch64"
ab_match_arch "powerpc" && export JARCH="ppc" CONFARCH="ppc"
ab_match_arch "ppc64" && export JARCH="ppc64" CONFARCH="ppc64"
ab_match_arch "ppc64el" && export JARCH="ppc64le" CONFARCH="ppc64le"

if ! ab_match_arch "amd64" && \
   ! ab_match_arch "arm64" && \
   ! ab_match_arch "ppc64" && \
   ! ab_match_arch "ppc64el" && \
   ! ab_match_arch "loongson3" && \
   ! ab_match_arch "loongarch64" && \
   ! ab_match_arch "loongarch64_nosimd"; then
    config_zero="--with-jvm-variants=zero"
    SJAVAC=0
else
    config_zero=" "
fi

if ab_match_arch "armv4" || \
   ab_match_arch "armv6hf" || \
   ab_match_arch "armv7hf"; then
    config_zero="--with-jvm-variants=client"
fi

if [[ "${SJAVAC}" == "1" ]]; then
    use_sjavac="--enable-sjavac" # Just a simple switch. And sjavac.jar is not needed, since JDK 8 has built-in a similar routine
fi

if ab_match_arch "armv4" || \
   ab_match_arch "armv6hf" || \
   ab_match_arch "armv7hf"; then
    config_bits="--host=armv7a-hardfloat-linux-gnueabi --build=armv7a-hardfloat-linux-gnueabi"
fi

unset JAVA_HOME
unset _JAVA_OPTIONS

install -d -m 755 "$SRCDIR"/image
sh configure \
    --prefix="$SRCDIR"/image \
    --with-update-version=${UPDATE} \
    --with-build-number=${BUILD} \
    --with-milestone="AOSC" \
    --with-num-cores=$(nproc) \
    --enable-unlimited-crypto \
    --with-zlib=system \
    --with-boot-jdk=/usr/lib/java-8 \
    ${config_zero} ${use_sjavac} \
    ${config_bits} \
    --enable-precompiled-headers \
    --with-extra-cxxflags="${EXTRA_CPP_FLAGS}" \
    --with-extra-cflags="${EXTRA_CFLAGS}" \
    --with-extra-ldflags="${LDFLAGS}" \
    CC=gcc CXX=g++

# FIXME: use system giflibwhen possible

make DEBUG_BINARIES=true                 \
     DISABLE_HOTSPOT_OS_VERSION_CHECK=ok \
     SCTP_WERROR='' default docs

make install

pushd image/jvm/openjdk-1.8.0_${UPDATE}-AOSC
find . -iname '*.jar' -exec chmod ugo+r {} \;
chmod ugo+r lib/ct.sym

find . -iname '*.diz' -exec rm {} \;
find . -iname '*.debuginfo' -exec rm {} \;
popd

mkdir -vp "$PKGDIR"/usr/lib/java-8
cp -vr image/jvm/openjdk-1.8.0_${UPDATE}-AOSC/* "$PKGDIR"/usr/lib/java-8/

mv -v "$PKGDIR"/usr/lib/java-8/jre/lib/management/jmxremote.password{.template,}
mv -v "$PKGDIR"/usr/lib/java-8/jre/lib/management/snmp.acl{.template,}

mkdir -vp "$PKGDIR"/etc/openjdk-8/
for i in ${CONFARCH}/jvm.cfg \
         calendars.properties \
         content-types.properties \
         flavormap.properties \
         images/cursors/cursors.properties \
         logging.properties \
         management/jmxremote.access \
         management/jmxremote.password \
         management/management.properties \
         management/snmp.acl \
         net.properties \
         psfont.properties.ja \
         psfontj2d.properties \
         security/java.policy \
         security/java.security \
         sound.properties; do
    _filepkgpath="$PKGDIR"/usr/lib/java-8/jre/lib/${i}
    install -D -m 644 ${_filepkgpath} "$PKGDIR"/etc/openjdk-8/${i}
done

mkdir -pv "$PKGDIR"/usr/src/openjdk-8
mv -v "$PKGDIR"/usr/lib/java-8/src.zip "$PKGDIR"/usr/src/openjdk-8/src.zip
ln -sv ../../../src/openjdk-8/src.zip "$PKGDIR"/usr/lib/java-8/src.zip

cp -rv "$PKGDIR"/usr/lib/java-8/jre/* "$PKGDIR"/usr/lib/java-8/
rm -rv "$PKGDIR"/usr/lib/java-8/jre/
mkdir -pv "$PKGDIR"/usr/lib/java-8/jre/lib/
pushd "$PKGDIR"/usr/lib/java-8/jre/lib/
ln -sv ../../lib/* .
popd

abinfo "Linking system CA certificate store ..."
rm -v "$PKGDIR"/usr/lib/java-8/lib/security/cacerts
ln -sv ../../../../../etc/ssl/certs/java/cacerts "$PKGDIR"/usr/lib/java-8/lib/security/cacerts

cat > "$SRCDIR"/autobuild/conffiles << EOF
/etc/openjdk-8/${CONFARCH}/jvm.cfg
/etc/openjdk-8/calendars.properties
/etc/openjdk-8/content-types.properties
/etc/openjdk-8/flavormap.properties
/etc/openjdk-8/images/cursors/cursors.properties
/etc/openjdk-8/logging.properties
/etc/openjdk-8/management/jmxremote.access
/etc/openjdk-8/management/jmxremote.password
/etc/openjdk-8/management/management.properties
/etc/openjdk-8/management/snmp.acl
/etc/openjdk-8/net.properties
/etc/openjdk-8/psfont.properties.ja
/etc/openjdk-8/psfontj2d.properties
/etc/openjdk-8/security/java.policy
/etc/openjdk-8/security/java.security
/etc/openjdk-8/sound.properties
EOF

mkdir -pv "$SRCDIR"/autobuild/overrides/etc/ld.so.conf.d/
cat > "$SRCDIR"/autobuild/overrides/etc/ld.so.conf.d/openjdk-8.conf << EOF
/usr/lib/java-8/lib/${CONFARCH}
/usr/lib/java-8/lib/${CONFARCH}/jli
/usr/lib/java-8/lib/${CONFARCH}/server
EOF

unset JARCH CONFARCH
