abinfo "Clearing compiler flags in environment..."
unset CFLAGS CXXFLAGS LDFLAGS CPPFLAGS

abinfo "Configuring GCC (target: ${ARCH_TARGET[${__CROSS}]}) ..."
mkdir -pv "$SRCDIR"/build-${__CROSS}
cd "$SRCDIR"/build-${__CROSS}

# Note: Sync from core-devel/gcc.
if [[ "${__CROSS}" = "amd64" ]]; then
    GCC_LANGS="c,c++,fortran,lto,go,objc,obj-c++,m2,d,ada"
elif [[ "${__CROSS}" = "arm64" ]]; then
    GCC_LANGS="c,c++,fortran,lto,go,objc,obj-c++,m2,d,ada"
elif [[ "${__CROSS}" = "loongarch64" || \
        "${__CROSS}" = "loongarch64_nosimd" ]]; then
    GCC_LANGS="c,c++,fortran,lto,objc,obj-c++,m2,d"
elif [[ "${__CROSS}" = "loongson3" ]]; then
    GCC_LANGS="c,c++,fortran,lto,objc,obj-c++,m2,d"
elif [[ "${__CROSS}" = "ppc64el" ]]; then
    GCC_LANGS="c,c++,fortran,lto,go,objc,obj-c++,m2,d,ada"
elif [[ "${__CROSS}" = "riscv64" ]]; then
    GCC_LANGS="c,c++,fortran,lto,go,objc,obj-c++,m2,d,ada"
fi

# Note: Find the common denominator between host and target support.
if ab_match_arch loongarch64 || \
   ab_match_arch loongarch64_nosimd || \
   ab_match_arch loongson3; then
    GCC_LANGS="c,c++,fortran,lto,objc,obj-c++,m2,d"
fi

SHARED_OPTIONS="""
    --prefix=/opt/abcross/${__CROSS}
    --target=${ARCH_TARGET[${__CROSS}]}
    --with-sysroot=/var/ab/cross-root/${__CROSS}
    --enable-shared
    --disable-multilib
    --enable-c99
    --enable-long-long
    --enable-threads=posix
    --enable-languages=${GCC_LANGS}
    --enable-__cxa_atexit
    --disable-altivec
    --disable-fixed-point
    --enable-lto
    --enable-gnu-unique-object
    --enable-linker-build-id
    --enable-libstdcxx-dual-abi
    --with-default-libstdcxx-abi=new
"""

"$SRCDIR"/configure \
    ${SHARED_OPTIONS} \
    ${TARGET_OPTIONS}

abinfo "Installing GCC (target: ${ARCH_TARGET[${__CROSS}]}) ..."
make \
    AS_FOR_TARGET=/opt/abcross/${__CROSS}/bin/${ARCH_TARGET[${__CROSS}]}-as \
    LD_FOR_TARGET=/opt/abcross/${__CROSS}/bin/${ARCH_TARGET[${__CROSS}]}-ld

abinfo "Installing GCC (target: ${ARCH_TARGET[${__CROSS}]}) ..."
make DESTDIR=$PKGDIR install

abinfo "Dropping texinfo dir index ..."
rm -v "$PKGDIR"/opt/abcross/${__CROSS}/share/info/dir

abinfo "Creating symlinks to the cross binaries to /usr/bin ..."
mkdir -pv "$PKGDIR"/usr/bin
cd "$PKGDIR"/opt/abcross/${__CROSS}/bin
for i in ${ARCH_TARGET[${__CROSS}]}-*; do
    ln -sv ../../opt/abcross/${__CROSS}/bin/$i \
        "$PKGDIR"/usr/bin/$i
    # vendor: unknown
    ln -sv ../../opt/abcross/${__CROSS}/bin/$i \
        "$PKGDIR"/usr/bin/${i/aosc-linux-gnu/unknown-linux-gnu}
    # empty vendor
    ln -sv ../../opt/abcross/${__CROSS}/bin/$i \
        "$PKGDIR"/usr/bin/${i/aosc-linux-gnu/linux-gnu}
done
