python-texttable: update to 1.3.1
[void-packages.git] / srcpkgs / cross-arm-linux-gnueabihf / template
blob323823362c0e50a22f42ce9598c5a6d2dc191b75
1 # Template build file for 'cross-arm-linux-gnueabihf'
3 _binutils_version=2.29.1
4 _gcc_version=7.3.0
5 _glibc_version=2.26
6 _linux_version=4.9.8
8 _triplet=arm-linux-gnueabihf
9 _fpuflags="--with-arch=armv6 --with-fpu=vfp --with-float=hard"
10 _archflags="-march=armv6 -mfpu=vfp -mfloat-abi=hard"
11 _sysroot="/usr/${_triplet}"
13 pkgname=cross-${_triplet}
14 version=0.25
15 revision=1
16 short_desc="GNU Cross toolchain for the ${_triplet} LE target (binutils/gcc/glibc)"
17 maintainer="Juan RP <xtraeme@voidlinux.eu>"
18 homepage="http://www.voidlinux.eu"
19 license="Public Domain"
20 distfiles="
21  ${GNU_SITE}/binutils/binutils-${_binutils_version}.tar.bz2
22  ${GNU_SITE}/gcc/gcc-${_gcc_version}/gcc-${_gcc_version}.tar.xz
23  ${GNU_SITE}/glibc/glibc-${_glibc_version}.tar.xz
24  ${KERNEL_SITE}/kernel/v4.x/linux-${_linux_version}.tar.xz"
25 checksum="
26  1509dff41369fb70aed23682351b663b56db894034773e6dbf7d5d6071fc55cc
27  832ca6ae04636adbb430e865a1451adf6979ab44ca1c8374f61fba65645ce15c
28  e54e0a934cd2bc94429be79da5e9385898d2306b9eaf3c92d5a77af96190f6bd
29  150bb7f2dd4849b5d21b8ccd8d05294a48229e1fcb93a22e7b806a79ec0b0e45"
31 lib32disabled=yes
32 nocross=yes
33 nopie=yes
34 nodebug=yes
35 create_wrksrc=yes
37 hostmakedepends="perl flex"
38 makedepends="zlib-devel gmp-devel mpfr-devel libmpc-devel isl15-devel"
39 depends="${pkgname}-libc-${version}_${revision}"
40 nostrip_files="libcaf_single.a libgcc.a libgcov.a libgcc_eh.a"
41 only_for_archs="i686 x86_64"
43 _apply_patch() {
44         local args="$1" pname="$(basename $2)"
46         if [ ! -f ".${pname}_done" ]; then
47                 patch -N $args -i $2
48                 touch .${pname}_done
49         fi
52 _linux_headers() {
53         [ -f ${wrksrc}/.linux_build_done ] && return 0
55         cd ${wrksrc}
56         msg_normal "Building Linux API headers for ARM\n"
58         cd linux-${_linux_version}
60         make ARCH=arm headers_check
61         make ARCH=arm INSTALL_HDR_PATH=${_sysroot}/usr headers_install
63         touch ${wrksrc}/.linux_build_done
66 _binutils_build() {
67         local _args
69         [ -f ${wrksrc}/.binutils_build_done ] && return 0
71         cd ${wrksrc}
72         msg_normal "Building cross binutils\n"
73         [ ! -d binutils-build ] && mkdir binutils-build
74         cd binutils-build
76         _args="--prefix=/usr"
77         _args+=" --target=${_triplet}"
78         _args+=" --with-sysroot=${_sysroot}"
79         _args+=" --disable-nls"
80         _args+=" --disable-shared"
81         _args+=" --disable-multilib"
82         _args+=" --disable-werror"
83         _args+=" --with-system-zlib"
85         ../binutils-${_binutils_version}/configure ${_args}
87         make configure-host
88         make ${makejobs}
89         make install
91         touch ${wrksrc}/.binutils_build_done
94 _gcc_bootstrap() {
95         local _args
97         [ -f ${wrksrc}/.gcc_bootstrap_done ] && return 0
99         cd ${wrksrc}/gcc-${_gcc_version}
100         _apply_patch -p0 ${FILESDIR}/fix-cxxflags-passing.patch
102         msg_normal "Building cross gcc bootstrap\n"
104         [ ! -d ../gcc-bootstrap ] && mkdir ../gcc-bootstrap
105         cd ../gcc-bootstrap
107         _args="--prefix=/usr"
108         _args+=" --target=${_triplet}"
109         _args+=" --without-headers"
110         _args+=" --disable-nls"
111         _args+=" --disable-shared"
112         _args+=" --disable-libquadmath"
113         _args+=" --disable-decimal-float"
114         _args+=" --disable-libgomp"
115         _args+=" --disable-libmpx"
116         _args+=" --disable-libmudflap"
117         _args+=" --disable-libssp"
118         _args+=" --disable-libitm"
119         _args+=" --disable-libatomic"
120         _args+=" --disable-threads"
121         _args+=" --enable-languages=c"
122         _args+=" --disable-sjlj-exceptions"
123         _args+=" --disable-multilib"
124         _args+=" --with-gnu-ld"
125         _args+=" --with-gnu-as"
126         _args+=" ${_fpuflags}"
128         CFLAGS="-O0 -g0" CXXFLAGS="-O0 -g0" \
129                 ../gcc-${_gcc_version}/configure ${_args}
131         make ${makejobs}
132         make install
134         touch ${wrksrc}/.gcc_bootstrap_done
137 _glibc_headers() {
138         local _args f
140         [ -f ${wrksrc}/.glibc_headers_done ] && return 0
142         cd ${wrksrc}/glibc-${_glibc_version}
143         for f in ${XBPS_SRCPKGDIR}/glibc/patches/*.patch; do
144                 _apply_patch -p1 "$f"
145         done
147         cd ${wrksrc}
148         msg_normal "Building cross glibc headers\n"
150         [ ! -d glibc-headers ] && mkdir glibc-headers
151         cd glibc-headers
153         echo "libc_cv_forced_unwind=yes" > config.cache
154         echo "libc_cv_c_cleanup=yes" >> config.cache
156         export CC="${_triplet}-gcc" LD="${_triplet}-ld" \
157                 AS="${_triplet}-as" CPP="${_triplet}-cpp"
159         _args="--prefix=/usr"
160         _args+=" --host=${_triplet}"
161         _args+=" --with-headers=${_sysroot}/usr/include"
162         _args+=" --config-cache"
163         _args+=" --enable-obsolete-rpc"
164         _args+=" --enable-obsolete-nsl"
165         _args+=" --enable-kernel=2.6.27"
166         _args+=" ${_fpuflags}"
168         ../glibc-${_glibc_version}/configure ${_args}
170         make -k install-headers cross_compiling=yes \
171                 install_root=${_sysroot}
173         touch ${wrksrc}/.glibc_headers_done
176 _glibc_build() {
177         local _args
179         [ -f ${wrksrc}/.glibc_build_done ] && return 0
181         cd ${wrksrc}
182         msg_normal "Building cross glibc\n"
184         [ ! -d glibc-build ] && mkdir glibc-build
185         cd glibc-build
187         echo "libc_cv_forced_unwind=yes" > config.cache
188         echo "libc_cv_c_cleanup=yes" >> config.cache
190         export CC="${_triplet}-gcc" LD="${_triplet}-ld" \
191                 AS="${_triplet}-as" CPP="${_triplet}-cpp"
192         export CFLAGS="-Os -pipe ${_archflags}"
194         _args="--prefix=/usr"
195         _args+=" --host=${_triplet}"
196         _args+=" --with-headers=${_sysroot}/usr/include"
197         _args+=" --config-cache"
198         _args+=" --disable-profile"
199         _args+=" --enable-obsolete-rpc"
200         _args+=" --enable-obsolete-nsl"
201         _args+=" --disable-werror"
202         _args+=" --enable-kernel=2.6.27"
203         _args+=" ${_fpuflags}"
205         ../glibc-${_glibc_version}/configure ${_args}
207         make ${makejobs}
208         make install_root=${_sysroot} install
210         touch ${wrksrc}/.glibc_build_done
213 _gcc_build() {
214         local _args
216         [ -f ${wrksrc}/.gcc_build_done ] && return 0
218         cd ${wrksrc}
219         msg_normal "Building cross gcc final\n"
221         [ ! -d gcc-build ] && mkdir gcc-build
222         cd gcc-build
224         unset LD AS CPP
225         export CC="gcc" CFLAGS="-Os -pipe"
227         # Make this link to target libs.
228         if [ ! -f .sed_subst_done ]; then
229                 sed -e "s, /lib/, ${_sysroot}/lib/,g;s, /usr/lib/, ${_sysroot}/usr/lib/,g" \
230                         -i ${_sysroot}/lib/libc.so ${_sysroot}/lib/libpthread.so
231                 touch .sed_subst_done
232         fi
233         _args="--prefix=/usr"
234         _args+=" --libdir=/usr/lib"
235         _args+=" --libexecdir=/usr/lib"
236         _args+=" --target=${_triplet}"
237         _args+=" --with-sysroot=${_sysroot}"
238         _args+=" --enable-languages=c,c++,fortran,lto"
239         _args+=" --with-gnu-as"
240         _args+=" --with-gnu-ld"
241         _args+=" --disable-multilib"
242         _args+=" --disable-werror"
243         _args+=" --disable-nls"
244         _args+=" --disable-sjlj-exceptions"
245         _args+=" --enable-threads=posix"
246         _args+=" --enable-long-longx"
247         _args+=" --enable-shared"
248         _args+=" --enable-linker-build-id"
249         _args+=" --enable-gnu-unique-object"
250         _args+=" --enable-lto"
251         _args+=" --enable-default-pie"
252         _args+=" --enable-default-ssp"
253         _args+=" --disable-libquadmath"
254         _args+=" --disable-libatomic"
255         _args+=" --disable-libssp"
256         _args+=" --disable-libmpx"
257         _args+=" --disable-libmudflap"
258         _args+=" --disable-libsanitizer"
259         _args+=" --disable-libcilkrts"
260         _args+=" --disable-libitm"
261         _args+=" --disable-libvtv"
262         _args+=" --disable-libstdcxx-pch"
263         _args+=" --enable-libstdcxx-time"
264         _args+=" --with-linker-hash-style=gnu"
265         _args+=" ${_fpuflags}"
267         ../gcc-${_gcc_version}/configure ${_args}
269         make ${makejobs}
271         touch ${wrksrc}/.gcc_build_done
274 do_build() {
275         for f in include lib bin; do
276                 if [ ! -d ${_sysroot}/usr/${f} ]; then
277                         mkdir -p ${_sysroot}/usr/${f}
278                 fi
279                 if [ ! -h ${_sysroot}/${f} ]; then
280                         ln -sfr ${_sysroot}/usr/${f} ${_sysroot}/${f}
281                 fi
282         done
283         # Ensure we use sane environment
284         unset CC CXX CPP LD AS AR RANLIB OBJDUMP READELF NM
285         unset CFLAGS CXXFLAGS CPPFLAGS LDFLAGS
286         export CFLAGS="-Os" CXXFLAGS="-Os"
288         _binutils_build
289         _gcc_bootstrap
290         _linux_headers
291         _glibc_headers
292         _glibc_build
293         _gcc_build
296 do_install() {
297         for f in include lib bin; do
298                 if [ ! -d ${DESTDIR}/${_sysroot}/usr/${f} ]; then
299                         mkdir -p ${DESTDIR}/${_sysroot}/usr/${f}
300                 fi
301                 if [ ! -h ${DESTDIR}/${_sysroot}/${f} ]; then
302                         ln -sfr ${DESTDIR}/${_sysroot}/usr/${f} \
303                                 ${DESTDIR}/${_sysroot}/${f}
304                 fi
305         done
306         # install cross binutils
307         cd ${wrksrc}/binutils-build
308         make DESTDIR=${DESTDIR} install
310         # install cross gcc
311         cd ${wrksrc}/gcc-build
312         make DESTDIR=${DESTDIR} install
314         # move libcc1.so* to the sysroot
315         mv ${DESTDIR}/usr/lib/libcc1.so* ${DESTDIR}/${_sysroot}/usr/lib
317         # install linux API headers for MIPS
318         cd ${wrksrc}/linux-${_linux_version}
319         make ARCH=arm INSTALL_HDR_PATH=${DESTDIR}/${_sysroot}/usr headers_install
320         rm -f $(find ${DESTDIR}/${_sysroot}/usr/include -name .install -or -name ..install.cmd)
321         rm -rf ${DESTDIR}/${_sysroot}/usr/include/drm
323         # install glibc for target
324         cd ${wrksrc}/glibc-build
325         make install_root=${DESTDIR}/${_sysroot} install install-headers
327         # Remove unnecessary stuff
328         rm -f ${DESTDIR}/usr/lib*/libiberty.a
329         rm -rf ${DESTDIR}/usr/share
330         rm -rf ${DESTDIR}/${_sysroot}/{sbin,lib,etc,var}
331         rm -rf ${DESTDIR}/${_sysroot}/usr/{sbin,share,libexec}
332         rm -rf ${DESTDIR}/${_sysroot}/usr/lib/gconv
333         rm -f ${DESTDIR}/${_sysroot}/libexec
336 cross-arm-linux-gnueabihf-libc_package() {
337         short_desc+=" - glibc files"
338         nostrip=yes
339         noshlibprovides=yes
340         noverifyrdeps=yes
342         pkg_install() {
343                 vmove ${_sysroot}
344         }