diff --git a/main/binutils/APKBUILD b/main/binutils/APKBUILD
index ebf57a6..c4896c6 100644
--- a/main/binutils/APKBUILD
+++ b/main/binutils/APKBUILD
@@ -16,33 +16,47 @@ source="https://ftp.gnu.org/gnu/binutils/binutils-with-gold-$pkgver.tar.xz
 builddir="$srcdir/$pkgname-with-gold-$pkgver"
 options="!check"
 
+if [ "$CBUILD" = "$CTARGET" ]; then
+	_alpine_archs="
+		aarch64
+		armhf
+		armv7
+		loongarch64
+		ppc64le
+		riscv64
+		s390x
+		x86
+		x86_64
+		"
+fi
+
 if [ -z "$BOOTSTRAP" ]; then
 	makedepends_host="$makedepends_host jansson-dev zstd-dev"
 	_noboot_configure="--enable-jansson --with-zstd"
 
-	_cross_targets_arch="aarch64 armhf armv7 ppc64le riscv64 s390x x86 x86_64 loongarch64"
-	for target_arch in $_cross_targets_arch
-	do
-		if [ "$target_arch" = "$CARCH" ]; then
-			continue
+	for _target_arch in $_alpine_archs; do
+		if [ "$_target_arch" != "$CARCH" ]; then
+			_cross_targets="$_cross_targets $_target_arch"
+			subpackages="
+				$subpackages
+				$pkgname-$_target_arch:_cross_target
+				"
 		fi
-		subpackages="$subpackages binutils-$target_arch:_install_cross_target"
 	done
 fi
 
+if [ "$CHOST" != "$CTARGET" ]; then
+	pkgname="$pkgname-$CTARGET_ARCH"
+	subpackages=""
+	sonameprefix="$pkgname:"
+fi
+
 _gold_configure="--disable-gold"
 if [ "$CHOST" = "$CBUILD" ] && [ "$CBUILD" = "$CTARGET" ] && [ "$CTARGET_ARCH" != "riscv64" ] && [ "$CTARGET_ARCH" != "loongarch64" ]; then
 	subpackages="$subpackages $pkgname-gold"
 	_gold_configure="--enable-gold"
 fi
 
-if [ "$CHOST" != "$CTARGET" ]; then
-	pkgname="$pkgname-$CTARGET_ARCH"
-	# Disable cross subpackages if already cross-creating
-	subpackages=""
-	_cross_targets_arch=""
-fi
-
 # secfixes:
 #   2.44-r0:
 #     - CVE-2025-0840
@@ -65,44 +79,50 @@ fi
 #     - CVE-2017-7614
 
 build() {
-	_configure_make "$CTARGET" "$CTARGET_ARCH"
-
-	for target_arch in $_cross_targets_arch ; do
-		if [ "$target_arch" = "$CARCH" ]; then
-			continue
-		fi
-		_gold_configure="--disable-gold"
+	_configure "$CTARGET" "$CTARGET_ARCH" "$_gold_configure"
+	local _target_arch
+
+	for _target_arch in $_cross_targets; do
+		_configure \
+			"$(arch_to_hostspec "$_target_arch")" \
+			"$_target_arch" \
+			"--disable-gold" &
+	done
+	wait
 
-		local ctarget="$(arch_to_hostspec "$target_arch")"
-		_configure_make "$ctarget" "$target_arch"
+	for _builddir in "$srcdir"/build-*; do
+		make -C "$_builddir"
 	done
 }
 
-_configure_make() {
-	local target="$1"
-	local target_arch="$2"
+_configure() {
+	local target="$1" target_arch="$2" _gold_configure="$3"
+	local _sysroot=/
 	local _cross_configure="--enable-install-libiberty --enable-shared --enable-plugins"
 	local _arch_configure=""
 
-	if [ "$CHOST" != "$target" ]; then
-		_cross_configure="--disable-install-libiberty --disable-plugins"
+	if [ "$CHOST" != "$CTARGET" ]; then
+		_sysroot="$CBUILDROOT"
+	fi
+	if [ "$CARCH" != "$target_arch" ]; then
+		_cross_configure="--disable-install-libbfd --disable-install-libiberty --disable-plugins"
 	fi
 
 	if [ "$target_arch" = "x86_64" ]; then
 		_arch_configure="--enable-targets=x86_64-pep"
 	fi
 
-	mkdir "$srcdir/$target_arch"
-	cd "$srcdir/$target_arch"
+	mkdir -p "$srcdir/build-$target_arch"
+	cd "$srcdir/build-$target_arch"
 
 	CFLAGS="$CFLAGS -O2" \
 	CXXFLAGS="$CXXFLAGS -O2" \
 	"$builddir"/configure \
 		--build=$CBUILD \
 		--host=$CHOST \
-		--target=$1 \
+		--target="$target" \
 		--with-build-sysroot="$CBUILDROOT" \
-		--with-sysroot \
+		--with-sysroot=$_sysroot \
 		--prefix=/usr \
 		--mandir=/usr/share/man \
 		--infodir=/usr/share/info \
@@ -129,16 +149,20 @@ _configure_make() {
 		--with-mmap \
 		--with-pic \
 		--with-system-zlib
-	make
+	make configure-host configure-target
 }
 
 package() {
-	cd "$srcdir/$CTARGET_ARCH"
-	make install DESTDIR="$pkgdir"
-	if [ -d "$pkgdir"/usr/lib64 ]; then
-		mv "$pkgdir"/usr/lib64/* "$pkgdir"/usr/lib/
-		rmdir "$pkgdir"/usr/lib64
-	fi
+	for _target_arch in $_cross_targets; do
+		make -C "$srcdir/build-$_target_arch" install DESTDIR="$pkgdir"
+		if [ -d "$pkgdir"/usr/lib64 ]; then
+			mv "$pkgdir"/usr/lib64/* "$pkgdir"/usr/lib/
+			rmdir "$pkgdir"/usr/lib64
+		fi
+		rm -r "${pkgdir:?}"/usr/share "${pkgdir:?}"/usr/lib
+	done
+
+	make -C "$srcdir/build-$CTARGET_ARCH" install DESTDIR="$pkgdir"
 	if [ "$CHOST" != "$CTARGET" ]; then
 		# creating cross tools: remove any files that would conflict
 		# with the native tools, or other cross tools
@@ -153,14 +177,14 @@ gold() {
 	amove usr/$CTARGET/bin/ld.gold
 }
 
-_install_cross_target() {
-	local target="${subpkgname#*-}"
-	pkgdesc="Tools necessary to build programs for $target"
-	cd "$srcdir/$target"
-	make install DESTDIR="$subpkgdir"
-	rm -rf "$subpkgdir"/usr/share
-	rm -rf "$subpkgdir"/usr/lib
-	rm -rf "$subpkgdir"/usr/include
+_cross_target() {
+	local target_arch="${subpkgname#*-}"
+	local target="$(arch_to_hostspec "$target_arch")"
+	pkgdesc="Tools necessary to build programs for $target_arch"
+
+	amove \
+		usr/bin/$target-* \
+		usr/$target
 }
 
 sha512sums="
