projects/aports·commit 61cfbb91

main/binutils: improvements to cross-compilation logic

61cfbb91 · Celeste <[email protected]> · 2025-05-12 21:14:59 +02:00

Commit
61cfbb918da66f2fd39893e85ecaa66917c19490
Parents
83db2b2c

Changes

1 files changed · +70 −46

FileStatusAddDelContent
main/binutils/APKBUILDmodified+70−46View file

main/binutils/APKBUILD

View file
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="