1 # Template build file for 'cross-arm-linux-gnueabihf'
3 _binutils_version=2.29.1
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}
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"
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"
26 1509dff41369fb70aed23682351b663b56db894034773e6dbf7d5d6071fc55cc
27 832ca6ae04636adbb430e865a1451adf6979ab44ca1c8374f61fba65645ce15c
28 e54e0a934cd2bc94429be79da5e9385898d2306b9eaf3c92d5a77af96190f6bd
29 150bb7f2dd4849b5d21b8ccd8d05294a48229e1fcb93a22e7b806a79ec0b0e45"
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"
44 local args="$1" pname="$(basename $2)"
46 if [ ! -f ".${pname}_done" ]; then
53 [ -f ${wrksrc}/.linux_build_done ] && return 0
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
69 [ -f ${wrksrc}/.binutils_build_done ] && return 0
72 msg_normal "Building cross binutils\n"
73 [ ! -d binutils-build ] && mkdir binutils-build
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}
91 touch ${wrksrc}/.binutils_build_done
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
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}
134 touch ${wrksrc}/.gcc_bootstrap_done
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"
148 msg_normal "Building cross glibc headers\n"
150 [ ! -d glibc-headers ] && mkdir 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
179 [ -f ${wrksrc}/.glibc_build_done ] && return 0
182 msg_normal "Building cross glibc\n"
184 [ ! -d glibc-build ] && mkdir 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}
208 make install_root=${_sysroot} install
210 touch ${wrksrc}/.glibc_build_done
216 [ -f ${wrksrc}/.gcc_build_done ] && return 0
219 msg_normal "Building cross gcc final\n"
221 [ ! -d gcc-build ] && mkdir gcc-build
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
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}
271 touch ${wrksrc}/.gcc_build_done
275 for f in include lib bin; do
276 if [ ! -d ${_sysroot}/usr/${f} ]; then
277 mkdir -p ${_sysroot}/usr/${f}
279 if [ ! -h ${_sysroot}/${f} ]; then
280 ln -sfr ${_sysroot}/usr/${f} ${_sysroot}/${f}
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"
297 for f in include lib bin; do
298 if [ ! -d ${DESTDIR}/${_sysroot}/usr/${f} ]; then
299 mkdir -p ${DESTDIR}/${_sysroot}/usr/${f}
301 if [ ! -h ${DESTDIR}/${_sysroot}/${f} ]; then
302 ln -sfr ${DESTDIR}/${_sysroot}/usr/${f} \
303 ${DESTDIR}/${_sysroot}/${f}
306 # install cross binutils
307 cd ${wrksrc}/binutils-build
308 make DESTDIR=${DESTDIR} install
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"