# HWCAPS builds are much the same across all architectures supports HWCAPS.
# Thus no need to write scripts for each target individually.

abinfo "About to build glibc for HWCAP sub-targets on $ARCH ..."
for level in "${HWCAPS[@]}" ; do
	abinfo "Preparing to build glibc for $level ..."
	mkdir -pv "$SRCDIR"/build-"$level"
	pushd "$SRCDIR"/build-"$level"
	unset CFLAGS
	cflags_val="CFLAGS_HWCAPS_${level//-/_}"
	export CFLAGS="${!cflags_val}"
	cppflags_val="CPPFLAGS_HWCAPS_${level//-/_}"
	export CPPFLAGS="${!cppflags_val}"

	# ppc64el: glibc failed to build on power10 with -mmma.
	# cc1: warning: ‘-mvsx’ and ‘-mno-altivec’ are incompatible
	# cc1: error: ‘-mmma’ requires ‘-mvsx’
	if [ "$ARCH-$level" = "ppc64el-power10" ]; then
		abinfo "power10: Removing -mma ..."
		export CFLAGS="${CFLAGS/-mmma/}"
		export CPPFLAGS="${CPPFLAGS/-mmma/}"
	fi

	# ppc64el: glibc failed to build on power9, power10 with -mvsx.
	# cc1: error: ‘-mvsx’ and ‘-mno-altivec’ are incompatible
	if [[ "$ARCH-$level" = "ppc64el-power9" || \
              "$ARCH-$level" = "ppc64el-power10" ]]; then
		abinfo "power9: Removing -mvsx ..."
		export CFLAGS="${CFLAGS/-mvsx/}"
		export CPPFLAGS="${CPPFLAGS/-mvsx/}"
	fi

	abinfo "($level) Configuring build ..."
	echo "slibdir=/usr/lib" >> configparms
	echo "rtlddir=/usr/lib" >> configparms
	echo "sbindir=/usr/bin" >> configparms
	echo "rootsbindir=/usr/bin" >> configparms
	# We do not need extra programs.
	echo "build-programs=no" >> configparms
	"$SRCDIR"/configure \
		${AUTOTOOLS_DEF[@]} \
		${AUTOTOOLS_AFTER[@]}
	abinfo "($level) Building ..."
	make
	abinfo "($level) Installing into a temporary path ..."
	make install DESTDIR="$SRCDIR"/build-"$level"/dist
	popd
done
