From d545ebe138a6bce94598176e781ca3a00e7caf64 Mon Sep 17 00:00:00 2001 From: Andrea Brancaleoni Date: Sun, 20 Sep 2015 21:21:38 +0200 Subject: [PATCH 1/6] New cross-profile: armv5tel-musl --- common/cross-profiles/armv5te-musl.sh | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 common/cross-profiles/armv5te-musl.sh diff --git a/common/cross-profiles/armv5te-musl.sh b/common/cross-profiles/armv5te-musl.sh new file mode 100644 index 00000000000..06663f57672 --- /dev/null +++ b/common/cross-profiles/armv5te-musl.sh @@ -0,0 +1,6 @@ +# Cross build profile for ARM GNU EABI5 Soft Float and Musl libc. + +XBPS_TARGET_ARCH="armv5tel-musl" +XBPS_CROSS_TRIPLET="arm-linux-musleabi" +XBPS_CROSS_CFLAGS="-march=armv5te -msoft-float -mfloat-abi=soft" +XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" From 6658a7060d0fd007d87dd77b739440f50b8f8935 Mon Sep 17 00:00:00 2001 From: Andrea Brancaleoni Date: Sun, 20 Sep 2015 21:23:03 +0200 Subject: [PATCH 2/6] musl-legacy-compat: add amrv5tel-musl to archs. --- srcpkgs/musl-legacy-compat/template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcpkgs/musl-legacy-compat/template b/srcpkgs/musl-legacy-compat/template index cd408d90369..2c088b24b27 100644 --- a/srcpkgs/musl-legacy-compat/template +++ b/srcpkgs/musl-legacy-compat/template @@ -3,7 +3,7 @@ pkgname=musl-legacy-compat version=0.2 revision=1 noarch=yes -only_for_archs="i686-musl x86_64-musl armv6l-musl armv7l-musl aarch64-musl mips-musl mipsel-musl" +only_for_archs="i686-musl x86_64-musl armv5tel-musl armv6l-musl armv7l-musl aarch64-musl mips-musl mipsel-musl" short_desc="Legacy compatibility headers for the musl libc" maintainer="Juan RP " license="BSD" From 8c8c61851cbcbf2ce35e196f81497a551c9028c2 Mon Sep 17 00:00:00 2001 From: Andrea Brancaleoni Date: Sun, 20 Sep 2015 21:36:02 +0200 Subject: [PATCH 3/6] New package: cross-arm-linux-musleabi-0.20 --- srcpkgs/cross-arm-linux-musleabi-libc | 1 + .../files/gcc-4.9.2-musl.diff | 1 + srcpkgs/cross-arm-linux-musleabi/template | 223 ++++++++++++++++++ 3 files changed, 225 insertions(+) create mode 120000 srcpkgs/cross-arm-linux-musleabi-libc create mode 120000 srcpkgs/cross-arm-linux-musleabi/files/gcc-4.9.2-musl.diff create mode 100644 srcpkgs/cross-arm-linux-musleabi/template diff --git a/srcpkgs/cross-arm-linux-musleabi-libc b/srcpkgs/cross-arm-linux-musleabi-libc new file mode 120000 index 00000000000..a8bc35012b2 --- /dev/null +++ b/srcpkgs/cross-arm-linux-musleabi-libc @@ -0,0 +1 @@ +cross-arm-linux-musleabi \ No newline at end of file diff --git a/srcpkgs/cross-arm-linux-musleabi/files/gcc-4.9.2-musl.diff b/srcpkgs/cross-arm-linux-musleabi/files/gcc-4.9.2-musl.diff new file mode 120000 index 00000000000..3d53eb4055f --- /dev/null +++ b/srcpkgs/cross-arm-linux-musleabi/files/gcc-4.9.2-musl.diff @@ -0,0 +1 @@ +../../gcc/files/gcc-4.9.2-musl.diff \ No newline at end of file diff --git a/srcpkgs/cross-arm-linux-musleabi/template b/srcpkgs/cross-arm-linux-musleabi/template new file mode 100644 index 00000000000..6b8a1c0a26a --- /dev/null +++ b/srcpkgs/cross-arm-linux-musleabi/template @@ -0,0 +1,223 @@ +# Template build file for 'cross-arm-linux-musleabi' +# +_binutils_version=2.25 +_gcc_version=4.9.3 +_musl_version=1.1.10 +_linux_version=3.18.6 + +_triplet=arm-linux-musleabi +_fpuflags="--with-arch=armv5te --without-fp --with-float=soft" +_archflags="-march=armv5te -msoft-float -mfloat-abi=soft" +_sysroot="/usr/${_triplet}" + + +pkgname=cross-${_triplet} +version=0.20 +revision=1 +short_desc="Cross toolchain for ARMv5 TE target (musl)" +maintainer="Juan RP " +homepage="http://www.voidlinux.eu" +license="Public Domain" +distfiles=" + http://ftp.gnu.org/pub/gnu/binutils/binutils-${_binutils_version}.tar.bz2 + http://ftp.gnu.org/pub/gnu/gcc/gcc-${_gcc_version}/gcc-${_gcc_version}.tar.bz2 + http://www.kernel.org/pub/linux/kernel/v3.x/linux-${_linux_version}.tar.xz + http://www.musl-libc.org/releases/musl-${_musl_version}.tar.gz" +checksum=" + 22defc65cfa3ef2a3395faaea75d6331c6e62ea5dfacfed3e2ec17b08c882923 + 2332b2a5a321b57508b9031354a8503af6fdfb868b8c1748d33028d100a8b67e + c4c1a4841173aa572d79b7530db92ce493dbefe8049e6f461a46dd897df253f5 + 45bbe9b1c7f7a0f743477af1e103b6889bfe4dd9815e16f6c89f6c90831c8b7c" + +lib32disabled=yes +nocross=yes +nodebug=yes +create_wrksrc=yes + +hostmakedepends="perl flex" +makedepends="zlib-devel gmp-devel mpfr-devel libmpc-devel" +nostrip_files="libgcc.a libgcov.a libgcc_eh.a" +depends="${pkgname}-libc-${version}_${revision}" + +_apply_patch() { + local args="$1" pname="$(basename $2)" + + if [ ! -f ".${pname}_done" ]; then + patch -N $args -i ${2} + touch .${pname}_done + fi +} + +_binutils_build() { + [ -f ${wrksrc}/.binutils_build_done ] && return 0 + + cd ${wrksrc} + msg_normal "Building cross binutils bootstrap\n" + + [ ! -d binutils-build ] && mkdir binutils-build + cd binutils-build + + ../binutils-${_binutils_version}/configure \ + --prefix=/usr --target=${_triplet} --with-sysroot=${_sysroot} \ + --disable-nls --disable-multilib --disable-werror \ + --disable-shared ${_fpuflags} + + make configure-host && make ${makejobs} + make install + + touch ${wrksrc}/.binutils_build_done +} + +_gcc_bootstrap() { + [ -f ${wrksrc}/.gcc_bootstrap_done ] && return 0 + + cd ${wrksrc}/gcc-${_gcc_version} + _apply_patch -p1 ${FILESDIR}/gcc-4.9.2-musl.diff + + msg_normal "Building cross gcc bootstrap\n" + + [ ! -d ../gcc-bootstrap ] && mkdir ../gcc-bootstrap + cd ../gcc-bootstrap + + CFLAGS="-O0 -g0" CXXFLAGS="-O0 -g0" \ + ../gcc-${_gcc_version}/configure --prefix=/usr \ + --target=${_triplet} --with-sysroot=${_sysroot} --with-newlib \ + --enable-languages=c --with-newlib --disable-libssp --disable-nls \ + --disable-libquadmath --disable-threads --disable-decimal-float \ + --disable-shared --disable-libmudflap --disable-libgomp \ + --disable-libatomic ${_fpuflags} + + make ${makejobs} + make install + + touch ${wrksrc}/.gcc_bootstrap_done +} + +_linux_headers() { + [ -f ${wrksrc}/.linux_build_done ] && return 0 + + cd ${wrksrc} + msg_normal "Building Linux API headers for ARM\n" + + cd linux-${_linux_version} + for f in ${XBPS_SRCPKGDIR}/kernel-libc-headers/patches/*.patch; do + _apply_patch -p0 $f + done + + make ARCH=arm headers_check + make ARCH=arm INSTALL_HDR_PATH=${_sysroot}/usr headers_install + + touch ${wrksrc}/.linux_build_done +} + +_musl_build() { + [ -f ${wrksrc}/.musl_build_done ] && return 0 + + cd ${wrksrc}/musl-${_musl_version} + msg_normal "Building cross musl libc\n" + + CC="${_triplet}-gcc" CFLAGS="-Os -pipe ${_archflags}" \ + ./configure --prefix=/usr \ + + make ${makejobs} + make DESTDIR=${_sysroot} install + + touch ${wrksrc}/.musl_build_done +} + +_gcc_build() { + [ -f ${wrksrc}/.gcc_build_done ] && return 0 + + cd ${wrksrc} + msg_normal "Building cross gcc final\n" + + [ ! -d gcc-build ] && mkdir gcc-build + cd gcc-build + + ../gcc-${_gcc_version}/configure \ + --target=${_triplet} --with-sysroot=${_sysroot} --prefix=/usr \ + --enable-languages=c,c++,lto --enable-lto --disable-libsanitizer \ + --disable-multilib --disable-nls --disable-libquadmath \ + --disable-libmudflap --enable-shared ${_fpuflags} + + make ${makejobs} + + touch ${wrksrc}/.gcc_build_done +} + +do_build() { + # Ensure we use sane environment + unset CC CXX CPP LD AS AR RANLIB OBJDUMP READELF NM + unset CFLAGS CXXFLAGS CPPFLAGS LDFLAGS + export CFLAGS="-Os -pipe" CXXFLAGS="-Os -pipe" + + for f in include lib libexec bin sbin; do + if [ ! -d ${_sysroot}/usr/${f} ]; then + mkdir -p ${_sysroot}/usr/${f} + fi + if [ ! -h ${_sysroot}/${f} ]; then + ln -sfr ${_sysroot}/usr/${f} ${_sysroot}/${f} + fi + done + + _binutils_build + _gcc_bootstrap + _linux_headers + _musl_build + _gcc_build +} + +do_install() { + for f in include lib libexec bin sbin; do + if [ ! -d ${DESTDIR}/${_sysroot}/usr/${f} ]; then + mkdir -p ${DESTDIR}/${_sysroot}/usr/${f} + fi + if [ ! -h ${DESTDIR}/${_sysroot}/${f} ]; then + ln -sfr ${DESTDIR}/${_sysroot}/usr/${f} \ + ${DESTDIR}/${_sysroot}/${f} + fi + done + + # install linux API headers + cd ${wrksrc}/linux-${_linux_version} + make ARCH=arm INSTALL_HDR_PATH=${DESTDIR}/${_sysroot}/usr headers_install + rm -f $(find ${DESTDIR}/${_sysroot}/usr/include -name .install -or -name ..install.cmd) + rm -rf ${DESTDIR}/${_sysroot}/usr/include/drm + + # install cross binutils + cd ${wrksrc}/binutils-build + make DESTDIR=${DESTDIR} install + + # install cross gcc + cd ${wrksrc}/gcc-build + make DESTDIR=${DESTDIR} install + + # install musl libc for target + cd ${wrksrc}/musl-${_musl_version} + make DESTDIR=${DESTDIR}/${_sysroot} install + + # Remove useless headers. + rm -rf ${DESTDIR}/usr/lib/gcc/${_triplet}/*/include-fixed/ + + # Make ld-musl-arm.so.1 symlink relative. + ln -sf libc.so ${DESTDIR}/${_sysroot}/usr/lib/ld-musl-arm.so.1 + + # Remove unnecessary stuff + rm -f ${DESTDIR}/usr/lib*/libiberty.a + rm -rf ${DESTDIR}/usr/share + rm -rf ${DESTDIR}/${_sysroot}/{etc,var} + rm -rf ${DESTDIR}/${_sysroot}/usr/{sbin,share,libexec} + rm -f ${DESTDIR}/${_sysroot}/libexec + rm -f ${DESTDIR}/${_sysroot}/lib/*.py + rm -rf ${DESTDIR}/${_sysroot}/{bin,sbin,lib} +} + +cross-arm-linux-musleabi-libc_package() { + short_desc+=" - libc files" + noarch=yes + noshlibprovides=yes + noverifyrdeps=yes + pkg_install() { + vmove ${_sysroot} + } +} From c340dc122a3a20670fc5dbbffef2511a551666af Mon Sep 17 00:00:00 2001 From: Andrea Brancaleoni Date: Sun, 20 Sep 2015 22:54:21 +0200 Subject: [PATCH 4/6] musl: enable for armv5tel-musl arch --- srcpkgs/musl/template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcpkgs/musl/template b/srcpkgs/musl/template index 22fdb686ea3..5d9f89031f4 100644 --- a/srcpkgs/musl/template +++ b/srcpkgs/musl/template @@ -15,7 +15,7 @@ checksum=bb9e6da51b7b12641f5d1abb39705c6c6c1b2fbd20002362948aa736a0aa353f nostrip_files="libc.so" shlib_provides="libc.so" -only_for_archs="i686-musl x86_64-musl armv6l-musl armv7l-musl aarch64-musl mips-musl mipsel-musl" +only_for_archs="i686-musl x86_64-musl armv5tel-musl armv6l-musl armv7l-musl aarch64-musl mips-musl mipsel-musl" post_build() { $CC $CFLAGS $LDFLAGS ${FILESDIR}/getent.c -o getent From fcc9d6cb59bf1cabac34bf9b7f81eb48c91e6e52 Mon Sep 17 00:00:00 2001 From: Andrea Brancaleoni Date: Sun, 20 Sep 2015 23:01:28 +0200 Subject: [PATCH 5/6] gcc: add armv5tel-musl triplet --- srcpkgs/gcc/template | 1 + 1 file changed, 1 insertion(+) diff --git a/srcpkgs/gcc/template b/srcpkgs/gcc/template index bfad7fa2256..e71cb19bc33 100644 --- a/srcpkgs/gcc/template +++ b/srcpkgs/gcc/template @@ -48,6 +48,7 @@ case "$XBPS_TARGET_MACHINE" in x86_64) _triplet="x86_64-unknown-linux-gnu";; x86_64-musl) _triplet="x86_64-linux-musl";; armv5tel) _triplet="arm-linux-gnueabi";; + armv5tel-musl) _triplet="arm-linux-musleabi";; armv6l) _triplet="arm-linux-gnueabihf";; armv7l) _triplet="armv7l-linux-gnueabihf";; armv6l-musl) _triplet="arm-linux-musleabihf";; From 876d855823688b9bef24f29c96e69c92d3bbfc05 Mon Sep 17 00:00:00 2001 From: Andrea Brancaleoni Date: Sun, 20 Sep 2015 23:38:31 +0200 Subject: [PATCH 6/6] argp-standalone: enable for armv5tel-musl arch --- srcpkgs/argp-standalone/template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/srcpkgs/argp-standalone/template b/srcpkgs/argp-standalone/template index 5c01455d601..4e3485e4592 100644 --- a/srcpkgs/argp-standalone/template +++ b/srcpkgs/argp-standalone/template @@ -10,7 +10,7 @@ license="Public Domain" distfiles="http://www.lysator.liu.se/~nisse/misc/argp-standalone-${version}.tar.gz" checksum=dec79694da1319acd2238ce95df57f3680fea2482096e483323fddf3d818d8be -only_for_archs="i686-musl x86_64-musl armv6l-musl armv7l-musl aarch64-musl" +only_for_archs="i686-musl x86_64-musl armv5tel-musl armv6l-musl armv7l-musl aarch64-musl" CFLAGS="-fPIC"