-
Notifications
You must be signed in to change notification settings - Fork 2.1k
/
template
121 lines (112 loc) · 3.05 KB
/
template
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# 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
}
}