void-packages/srcpkgs/klibc/template

122 lines
3.1 KiB
Bash

# Template file for 'klibc'
pkgname=klibc
version=2.0.12
revision=1
hostmakedepends="perl"
makedepends="kernel-libc-headers"
short_desc="Minimal libc subset for use with initramfs"
maintainer="Đoàn Trần Công Danh <congdanhqx@gmail.com>"
license="GPL-2.0-only"
homepage="https://git.kernel.org/pub/scm/libs/klibc/klibc.git/"
distfiles="https://git.kernel.org/pub/scm/libs/klibc/klibc.git/snapshot/klibc-${version}.tar.gz"
checksum=01cc9dc32453b664c998d811fb67be96f842740a3fedfaf746bac2bd394021cd
_make() {
local _arch _mkflags=
KCFLAGS="-g -ffile-prefix-map=$wrksrc=."
case "$XBPS_TARGET_MACHINE" in
i686*) _arch=i386 ;;
x86_64*) _arch=x86_64 ;;
arm*)
_arch=arm
_mkflags+=" CONFIG_AEABI=y"
case "$XBPS_TARGET_MACHINE" in
armv5*) _mkflags+=" CPU_ARCH=armv5te" ;;
armv6*) _mkflags+=" CPU_ARCH=armv6" ;;
armv7*) _mkflags+=" CPU_ARCH=armv7-a" ;;
esac
;;
aarch64*) _arch=arm64 ;;
ppc64*) _arch=ppc64 ;;
ppc*) _arch=ppc ;;
mips*64*) _arch=mips64 ;;
mips*) _arch=mips ;;
*) msg_error "not supported" ;;
esac
PATH=/usr/bin
make ARCH=$_arch INSTALLROOT="$DESTDIR" V=1 \
${CROSS_BUILD:+CROSS_COMPILE=${XBPS_CROSS_TRIPLET}-} \
$_mkflags \
KCFLAGS="${KCFLAGS}" \
HOSTCC="${CC_FOR_BUILD}" \
CONFIG_DEBUG_INFO=y \
KLIBC_SRC="$wrksrc/usr/klibc" \
mandir='$(prefix)/share/man' \
SHLIBDIR=/usr/lib \
"$@"
}
do_configure() {
local _f
rm -rf linux
mkdir -p linux/include
for _f in asm asm-generic linux; do
ln -s "${XBPS_CROSS_BASE}/usr/include/$_f" linux/include/
done
}
_gen_native_klcc() {
mv klcc/klcc klcc/${XBPS_CROSS_TRIPLET}-klcc
sed "s/${XBPS_CROSS_TRIPLET}-//" \
klcc/klibc.config >klcc/native-klibc.config
PATH=/usr/bin
perl klcc/makeklcc.pl klcc/klcc.in klcc/native-klibc.config \
/usr/bin/perl >klcc/klcc
chmod +x klcc/klcc
}
_gen_cross_klcc() {
local _triplet _f
_triplet=${XBPS_TRIPLET/unknown-/}
sed -E "/^(CROSS|CC|LD|STRIP)=/s/=/=${_triplet}-/" \
klcc/klibc.config >klcc/cross-klibc.config
mkdir -p /tmp/bin
for _f in gcc ld strip; do
ln -sf /usr/bin/$_f /tmp/bin/${_triplet}-$_f
done
PATH=/usr/bin:/tmp/bin
perl klcc/makeklcc.pl klcc/klcc.in klcc/cross-klibc.config \
/usr/bin/perl >"klcc/${_triplet}-klcc"
sed -iE "/^(CC|LD|STRIP)=/s/tmp/usr/" "klcc/${_triplet}-klcc"
chmod +x "klcc/${_triplet}-klcc"
}
do_build() {
_make all
! grep ccache klcc/klcc
if [ "$CROSS_BUILD" ]; then
_gen_native_klcc
else
_gen_cross_klcc
fi
}
do_install() {
local _f
_make install DESTDIR="${DESTDIR}"
for _f in asm asm-generic linux; do
rm -rf "$DESTDIR/usr/lib/klibc/include/$_f"
ln -s "/usr/include/$_f" "$DESTDIR/usr/lib/klibc/include/"
done
if [ "$CROSS_BUILD" ]; then
vbin klcc/${XBPS_CROSS_TRIPLET}-klcc
else
vbin klcc/${XBPS_TRIPLET/unknown-/}-klcc
fi
vinstall ${FILESDIR}/initramfs-tools-hooks 755 \
usr/share/initramfs-tools/hooks klibc
}
klibc-devel_package() {
short_desc+=" - development files"
depends="perl kernel-libc-headers ${sourcepkg}>=${version}_${revision}
${sourcepkg}<${version}_999"
pkg_install() {
vmove usr/bin
vmove usr/share/man/man1
vmove usr/lib/klibc/include
}
}