424d1ea546
The -fcommon is required for gcc10 to build yaboot. Adding --build=$XBPS_TRIPLET seems to be a good idea in any case according to the autoconf manual, see the document at: https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Hosts-and-Cross_002dCompilation.html Still gives an error for me trying to build for ppc-musl using any x86 host environment, be it glibc or musl libc. More patches required or something else may be wrong?
109 lines
3.3 KiB
Bash
109 lines
3.3 KiB
Bash
# Template file for 'yaboot'
|
|
pkgname=yaboot
|
|
version=1.3.17
|
|
revision=1
|
|
archs="ppc64 ppc64-musl ppc ppc-musl"
|
|
build_style=gnu-makefile
|
|
hostmakedepends="autoconf automake"
|
|
depends="powerpc-utils hfsutils"
|
|
short_desc="Bootloader for PowerMac and IBM CHRP computers"
|
|
maintainer="q66 <daniel@octaforge.org>"
|
|
license="GPL-2.0-or-later"
|
|
homepage="https://wiki.debian.org/YaBoot"
|
|
_e2fsprogs_ver="1.41.14"
|
|
distfiles="https://cdimage.debian.org/cdimage/cd-sources/yaboot_${version}.orig.tar.gz
|
|
http://ftp.be.debian.org/pub/linux/kernel/people/tytso/e2fsprogs/e2fsprogs-${_e2fsprogs_ver}.tar.gz"
|
|
checksum="2fb738d8fd48b94ab2534a4fdf63738ad02c1a30f4b2add91f837baff8fa2aa1
|
|
3f8ac1fedd7c4bec480afcbe4acabdd4ac59ec0446a0fd50c8975cd0aad7b176"
|
|
# Don't want stripped yaboot bits to leak into -dbg
|
|
nostrip_files=yaboot
|
|
|
|
# This is a safe choice available on all cross-hosts and ppc64 itself
|
|
# We need to compile yaboot binary itself, as well as e2fsprogs libraries,
|
|
# using a 32-bit ppc compiler; 64-bit with -m32 won't do because of libgcc etc.
|
|
case "$XBPS_TARGET_MACHINE" in
|
|
ppc64*) _need_cross=powerpc-linux-musl ;;
|
|
esac
|
|
|
|
if [ -n "$_need_cross" ]; then
|
|
hostmakedepends+=" cross-${_need_cross}"
|
|
fi
|
|
|
|
# No testsuite provided
|
|
do_check() {
|
|
:
|
|
}
|
|
|
|
post_patch() {
|
|
# Add support for DESTDIR in order to not leak files
|
|
sed -i 's/^ROOT =/ROOT = $(DESTDIR)/' Makefile
|
|
|
|
# Ensure safe cleanup
|
|
mv ${XBPS_BUILDDIR}/e2fsprogs-${_e2fsprogs_ver} .
|
|
}
|
|
|
|
# This builds e2fsprogs libraries, needed by yaboot for ext* support
|
|
# We need to build this using the potential 32-bit cross compiler, with
|
|
# specific minimal flags, so we can't just makedepend on it...
|
|
_build_e2fsprogs() {
|
|
pushd e2fsprogs-${_e2fsprogs_ver}
|
|
|
|
if [ ! -f Makefile ]; then
|
|
# Regenerate autotools
|
|
autoreconf -isf
|
|
|
|
# Explicitly disable things we definitely don't need
|
|
local _args="--disable-testio-debug --disable-debugfs --disable-tls"
|
|
local _ecc="$CC" _ear="$AR"
|
|
if [ -n "$_need_cross" -o -n "$CROSS_BUILD" ]; then
|
|
# using a crosscompiler, set up configure/compiler for that
|
|
_args+=" --host=${_need_cross:-$XBPS_CROSS_TRIPLET}"
|
|
_args+=" --build=$XBPS_TRIPLET"
|
|
_ecc="${_need_cross:-$XBPS_CROSS_TRIPLET}-gcc"
|
|
_ear="${_need_cross:-$XBPS_CROSS_TRIPLET}-ar"
|
|
fi
|
|
|
|
# We need to keep flags synchronized with yaboot itself
|
|
local _ecflags="-Os -fno-stack-protector -no-pie"
|
|
_ecflags+=" -fgnu89-inline -fno-builtin-malloc -DNDEBUG"
|
|
|
|
CFLAGS="$_ecflags" CC="$_ecc" AR="$_ear" ./configure ${_args}
|
|
fi
|
|
|
|
# Avoid building the whole thing, build only the two libs we need
|
|
cd lib/et
|
|
make ${makejobs}
|
|
cd ../ext2fs
|
|
make ${makejobs}
|
|
|
|
cd ..
|
|
cp libcom_err.a libext2fs.a ${wrksrc}
|
|
|
|
popd
|
|
}
|
|
|
|
pre_build() {
|
|
# Add toolchain prefix when cross-compiling; for userland tools
|
|
# always, for yaboot itself when cross-compiling to ppc32
|
|
if [ "$CROSS_BUILD" ]; then
|
|
sed -i "s/^CROSS =/CROSS = ${XBPS_CROSS_TRIPLET}-/" Makefile
|
|
fi
|
|
|
|
# When using a separate cross-compiler (ppc64 target), override YBCC
|
|
if [ -n "$_need_cross" ]; then
|
|
sed -i "s/^YBCC =.*/YBCC = ${_need_cross}-gcc/" Makefile
|
|
fi
|
|
|
|
# These are needed by yaboot core
|
|
_build_e2fsprogs
|
|
}
|
|
|
|
post_install() {
|
|
# Yaboot is nostrip_files so do it manually (and ignore -dbg)
|
|
if [ -n "$_need_cross" ]; then
|
|
${_need_cross}-strip --remove-section=.comment \
|
|
${DESTDIR}/usr/lib/yaboot/yaboot
|
|
else
|
|
$STRIP --remove-section=.comment ${DESTDIR}/usr/lib/yaboot/yaboot
|
|
fi
|
|
}
|