##### Control part variables
EXTRA_FEATURES="jfr"
OPENJDK_SUFFIX="-21"

##### Archtecture mapping
ab_match_arch "amd64" && export JDK_HAS_JIT=y
ab_match_arch "armv4" && export JDK_HAS_JIT=y
ab_match_arch "armv6hf" && export JDK_HAS_JIT=y
ab_match_arch "armv7hf" && export JDK_HAS_JIT=y
ab_match_arch "arm64" && export JDK_HAS_JIT=y
ab_match_arch "ppc64el" && export JDK_HAS_JIT=y
ab_match_arch "riscv64" && export JDK_HAS_JIT=y
ab_match_arch "loongarch64" && export JDK_HAS_JIT=y
ab_match_arch "loongarch64_nosimd" && export JDK_HAS_JIT=y

if [[ -z "${JDK_HAS_JIT:-}" ]]; then
    config_zero="--with-jvm-variants=zero --enable-precompiled-headers"
else
    config_zero=" "
    EXTRA_FEATURES+=",shenandoahgc,zgc"
fi

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

unset JAVA_HOME
unset _JAVA_OPTIONS

abinfo "Configuring OpenJDK ${PKGVER} ..."
install -dv -m 755 "$SRCDIR"/image
sh "$SRCDIR"/configure \
    --prefix="$SRCDIR"/image \
    --with-conf-name=aosc \
    --with-version-pre='' \
    --with-version-opt="AOSC" \
    --with-stdc++lib=dynamic \
    --disable-warnings-as-errors \
    --enable-unlimited-crypto \
    --enable-linktime-gc \
    --with-zlib=system \
    --with-libpng=system \
    --with-libjpeg=system \
    --with-giflib=system \
    ${config_zero} \
    ${config_bits} \
    --with-jvm-features="${EXTRA_FEATURES}" \
    --enable-precompiled-headers \
    --with-extra-cxxflags="${EXTRA_CPP_FLAGS}" \
    --with-extra-cflags="${EXTRA_CFLAGS}" \
    --with-extra-ldflags="${LDFLAGS}" \
    --with-vendor-bug-url="https://github.com/AOSC-Dev/aosc-os-abbs/issues" \
    --with-vendor-vm-bug-url="https://github.com/AOSC-Dev/aosc-os-abbs/issues" \
    --with-native-debug-symbols=zipped

abinfo "Building OpenJDK ..."
make product-images docs

mkdir -pv "$PKGDIR"/usr/lib/java
mkdir -pv "$PKGDIR/etc/"

IMAGE_FOLDER=build/aosc/images/
abinfo "Copying JDK images ..."
cp -rv "${IMAGE_FOLDER}"/jdk/* "$PKGDIR"/usr/lib/java/
mv -v "$PKGDIR"/usr/lib/java/conf "$PKGDIR"/etc/openjdk/
mkdir -pv "$PKGDIR"/usr/share
mv -v "$PKGDIR"/usr/lib/java/man "$PKGDIR"/usr/share/man
ln -sv ../../../../etc/openjdk"$OPENJDK_SUFFIX"/ "$PKGDIR"/usr/lib/java/conf
ln -sv ../../share/man "$PKGDIR"/usr/lib/java/man

find "$PKGDIR"/usr/share/man -type l -delete
find "$PKGDIR" -iname '*.diz' -exec rm {} \;
find "$PKGDIR" -iname '*.debuginfo' -exec rm {} \;

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

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

if [[ -n "$OPENJDK_SUFFIX" ]]; then
    abinfo "Renaming for openjdk suffix ..."
    for path in "$PKGDIR"{/etc/openjdk,/usr/lib/java,/usr/src/openjdk}; do
        mv -v "$path" "$path""$OPENJDK_SUFFIX"
    done
    mv -v "$PKGDIR"/usr/share/man/man1 "$PKGDIR"/usr/share/man/man1openjdk"$OPENJDK_SUFFIX"
fi

abinfo "Generating conffiles ..."
pushd "$PKGDIR" || exit
while read -r path; do
    printf '/%s\n' "$path" >>"$SRCDIR"/autobuild/conffiles
done < <(find etc/openjdk"$OPENJDK_SUFFIX" -type f)
popd || exit

unset JDKBOOTDIR
