# Architectural targets...
if ab_match_arch "amd64" ; then
    ARCH_OPTS="linux-x86_64"
elif ab_match_arch "arm64" ; then
    ARCH_OPTS="linux-aarch64"
elif ab_match_arch "+(armv4|armv6hf|armv7hf)" ; then
    ARCH_OPTS="linux-armv4"
elif ab_match_arch "i486" ; then
    ARCH_OPTS="linux-x86"
elif ab_match_arch "loongarch64"; then
    ARCH_OPTS="linux-generic64"
elif ab_match_arch "loongarch64_nosimd"; then
    ARCH_OPTS="linux-generic64"
elif ab_match_arch "+(loongson2f|loongson3)" ; then
    ARCH_OPTS="linux64-mips64"
elif ab_match_arch "m68k" ; then
    ARCH_OPTS="linux-generic32"
elif ab_match_arch "powerpc" ; then
    ARCH_OPTS="linux-ppc"
elif ab_match_arch "ppc64" ; then
    ARCH_OPTS="linux-ppc64"
elif ab_match_arch "ppc64el" ; then
    ARCH_OPTS="linux-ppc64le"
elif ab_match_arch "riscv64" ; then
    ARCH_OPTS="linux64-riscv64"
fi

# Use on little endian platforms when GCC supports uint128_t.
# ECDH is about 2 to 4 times faster. Not enabled by default
# because Configure can't determine it. Enable it if your
# compiler defines __SIZEOF_INT128, the CPU is little endian
# and it tolerates unaligned data access.
#
# Enabling only on x86_64 (amd64) for now, following Debian.
if ab_match_arch "amd64" ; then
    abinfo "Enabling ec_nistp_64_gcc_128 for amd64 ..."
    ARCH_OPTS+=" enable-ec_nistp_64_gcc_128"
fi

abinfo "Running Configure ..."
"$SRCDIR"/Configure --prefix=/usr --openssldir=/etc/ssl --libdir=lib \
            shared zlib ${ARCH_OPTS}\
            "-Wa,--noexecstack ${CPPFLAGS} ${CFLAGS}"

abinfo "Building binaries ..."
make depend
make

abinfo "Installing files ..."
make MANDIR=/usr/share/man MANSUFFIX=ssl DESTDIR="$PKGDIR" install

abinfo "Dropping non-runtime files ..."
rm -rv \
    "$PKGDIR"/etc \
    "$PKGDIR"/usr/{bin,include,share} \
    "$PKGDIR"/usr/lib/{pkgconfig,lib{crypto,ssl}.so}
