From d850967d5b32ca579944acc45e1fb9eeba10445e Mon Sep 17 00:00:00 2001 From: q66 Date: Fri, 25 Dec 2020 14:58:38 +0100 Subject: [PATCH 01/16] gcc: use consistent patch level for musl patches needed for cross build style --- srcpkgs/gcc/files/libgnarl-musl.patch | 8 ++++---- srcpkgs/gcc/files/libssp-musl.patch | 12 ++++++------ srcpkgs/gcc/template | 4 ++-- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/srcpkgs/gcc/files/libgnarl-musl.patch b/srcpkgs/gcc/files/libgnarl-musl.patch index 31d39607ea4..5ed9f16f558 100644 --- a/srcpkgs/gcc/files/libgnarl-musl.patch +++ b/srcpkgs/gcc/files/libgnarl-musl.patch @@ -3,8 +3,8 @@ Upstream: Unknown Reason: Patch libgnarl to not use function missing from musl. diff -rup gcc-8.2.0/gcc/ada/libgnarl/s-osinte__linux.ads gcc-8.2.0-new/gcc/ada/libgnarl/s-osinte__linux.ads ---- gcc-8.2.0/gcc/ada/libgnarl/s-osinte__linux.ads 2018-01-11 00:55:25.000000000 -0800 -+++ gcc-8.2.0-new/gcc/ada/libgnarl/s-osinte__linux.ads 2018-11-01 16:16:23.372452951 -0700 +--- gcc/ada/libgnarl/s-osinte__linux.ads 2018-01-11 00:55:25.000000000 -0800 ++++ gcc/ada/libgnarl/s-osinte__linux.ads 2018-11-01 16:16:23.372452951 -0700 @@ -394,12 +394,6 @@ package System.OS_Interface is PTHREAD_RWLOCK_PREFER_WRITER_NP : constant := 1; PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP : constant := 2; @@ -31,8 +31,8 @@ diff -rup gcc-8.2.0/gcc/ada/libgnarl/s-osinte__linux.ads gcc-8.2.0-new/gcc/ada/l sched_priority : int; -- scheduling priority end record; diff -rup gcc-8.2.0/gcc/ada/libgnarl/s-taprop__linux.adb gcc-8.2.0-new/gcc/ada/libgnarl/s-taprop__linux.adb ---- gcc-8.2.0/gcc/ada/libgnarl/s-taprop__linux.adb 2018-01-11 00:55:25.000000000 -0800 -+++ gcc-8.2.0-new/gcc/ada/libgnarl/s-taprop__linux.adb 2018-11-13 11:28:36.433964449 -0800 +--- gcc/ada/libgnarl/s-taprop__linux.adb 2018-01-11 00:55:25.000000000 -0800 ++++ gcc/ada/libgnarl/s-taprop__linux.adb 2018-11-13 11:28:36.433964449 -0800 @@ -202,9 +202,6 @@ package body System.Task_Primitives.Oper pragma Import (C, GNAT_pthread_condattr_setup, "__gnat_pthread_condattr_setup"); diff --git a/srcpkgs/gcc/files/libssp-musl.patch b/srcpkgs/gcc/files/libssp-musl.patch index 8a692c0d664..8d47b442aa1 100644 --- a/srcpkgs/gcc/files/libssp-musl.patch +++ b/srcpkgs/gcc/files/libssp-musl.patch @@ -2,8 +2,8 @@ First part taken from Alpine. Second part added to prevent gccgo from thinking it can -fsplit-stack on musl. ---- a/gcc/gcc.c -+++ b/gcc/gcc.c +--- gcc/gcc.c ++++ gcc/gcc.c @@ -876,9 +876,8 @@ #endif @@ -15,8 +15,8 @@ Second part added to prevent gccgo from thinking it can -fsplit-stack on musl. #else #define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \ "|fstack-protector-strong|fstack-protector-explicit" \ ---- a/gcc/config/i386/gnu-user-common.h -+++ b/gcc/config/i386/gnu-user-common.h +--- gcc/config/i386/gnu-user-common.h ++++ gcc/config/i386/gnu-user-common.h @@ -64,9 +64,3 @@ along with GCC; see the file COPYING3. If not see /* Static stack checking is supported by means of probes. */ @@ -27,8 +27,8 @@ Second part added to prevent gccgo from thinking it can -fsplit-stack on musl. -#if HAVE_GAS_CFI_PERSONALITY_DIRECTIVE -#define TARGET_CAN_SPLIT_STACK -#endif ---- a/gcc/config/i386/gnu.h -+++ b/gcc/config/i386/gnu.h +--- gcc/config/i386/gnu.h ++++ gcc/config/i386/gnu.h @@ -40,11 +40,6 @@ along with GCC. If not, see . /* i386 glibc provides __stack_chk_guard in %gs:0x14. */ #define TARGET_THREAD_SSP_OFFSET 0x14 diff --git a/srcpkgs/gcc/template b/srcpkgs/gcc/template index 472b952eae3..02a7516002d 100644 --- a/srcpkgs/gcc/template +++ b/srcpkgs/gcc/template @@ -173,8 +173,8 @@ pre_configure() { sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" {gcc,libiberty}/configure case "$XBPS_TARGET_MACHINE" in *-musl) - patch -p1 -i ${FILESDIR}/libgnarl-musl.patch - patch -p1 -i ${FILESDIR}/libssp-musl.patch + patch -p0 -i ${FILESDIR}/libgnarl-musl.patch + patch -p0 -i ${FILESDIR}/libssp-musl.patch patch -p0 -i ${FILESDIR}/gccgo-musl.patch ;; esac From e7c59969dd9f35e6499411416b4edb0d13ba2884 Mon Sep 17 00:00:00 2001 From: q66 Date: Fri, 25 Dec 2020 00:42:26 +0100 Subject: [PATCH 02/16] common/build-style: add void-cross this introduces a new build-style void-cross, which can be used to write system crosstoolchain templates; this is to reduce the amount of maintenance, resolve existing problems with the cross toolchain templates and remove repeated code --- common/build-style/void-cross.sh | 555 +++++++++++++++++++ common/environment/build-style/void-cross.sh | 11 + 2 files changed, 566 insertions(+) create mode 100644 common/build-style/void-cross.sh create mode 100644 common/environment/build-style/void-cross.sh diff --git a/common/build-style/void-cross.sh b/common/build-style/void-cross.sh new file mode 100644 index 00000000000..7ce1ca266bf --- /dev/null +++ b/common/build-style/void-cross.sh @@ -0,0 +1,555 @@ +# +# This helper is for void system crosstoolchain templates. +# +# Mandatory variables: +# +# - cross_triplet - the target triplet (e.g. aarch64-linux-gnu) +# - cross_wordsize - 32 or 64 +# - cross_libc - glibc or musl +# - cross_binutils_version +# - cross_gcc_version +# - cross_linux_version +# - cross_linux_arch - the source ARCH of the kernel (e.g. arm64) +# - cross_glibc_version +# - cross_musl_version +# - cross_libucontext_version - only on musl without cross_gcc_skip_go +# - cross_libucontext_arch - ditto, the libucontext arch +# +# Optional variables: +# +# - cross_gcc_skip_go - do not build gccgo support +# - cross_binutils_configure_args +# - cross_gcc_bootstrap_configure_args +# - cross_gcc_configure_args +# - cross_glibc_cflags +# - cross_glibc_ldflags +# - cross_glibc_configure_args +# - cross_musl_cflags +# - cross_musl_ldflags +# - cross_musl_configure_args +# +# configure_args is passed to both bootstrap gcc and final gcc +# if you need to pass some to one and not the other, use the +# respective cross_ variables for final gcc and bootstrap gcc +# + +_apply_patch() { + local args="$1" pname="$(basename $2)" + if [ ! -f ".${pname}_done" ]; then + patch -N $args -i $2 + touch .${pname}_done + fi +} + +_check_cross_dir() { + local dname=$1 + local sname=$2 + local var="cross_${dname}_version" + cd ${wrksrc} + if [ -f ".${sname:=${dname}}_done" ]; then + return 1 + fi + if [ ! -d "${1}-${!var}" ]; then + msg_error "${1}-${!var} does not exist" + fi +} + +_build_binutils() { + _check_cross_dir binutils || return 0 + + msg_normal "Building binutils for ${cross_triplet}\n" + + mkdir -p binutils_build + cd binutils_build + + ../binutils-${cross_binutils_version}/configure \ + --prefix=/usr \ + --sbindir=/usr/bin \ + --libdir=/usr/lib \ + --libexecdir=/usr/lib \ + --target=${cross_triplet} \ + --with-sysroot=/usr/${cross_triplet} \ + --disable-nls \ + --disable-shared \ + --disable-multilib \ + --disable-werror \ + --disable-gold \ + --with-system-zlib \ + --enable-deterministic-archives \ + --enable-default-hash-style=gnu \ + ${cross_binutils_configure_args} + + make configure-host + make ${makejobs} + + make install DESTDIR=${wrksrc}/build_root + + touch ${wrksrc}/.binutils_done +} + +_build_bootstrap_gcc() { + _check_cross_dir gcc gcc_bootstrap || return 0 + + msg_normal "Patching GCC for ${cross_triplet}\n" + + cd gcc-${cross_gcc_version} + for f in ${XBPS_SRCPKGDIR}/gcc/patches/*.patch; do + _apply_patch -p0 "$f" + done + if [ "$cross_libc" = "musl" ]; then + for f in ${XBPS_SRCPKGDIR}/gcc/files/*-musl.patch; do + _apply_patch -p0 "$f" + done + fi + cd .. + + msg_normal "Building bootstrap GCC for ${cross_triplet}\n" + + mkdir -p gcc_bootstrap + cd gcc_bootstrap + + local extra_args + if [ "$cross_libc" = "musl" ]; then + extra_args+=" --with-newlib" + extra_args+=" --disable-symvers" + extra_args+=" libat_cv_have_ifunc=no" + else + extra_args+=" --without-headers" + fi + + ../gcc-${cross_gcc_version}/configure \ + --prefix=/usr \ + --sbindir=/usr/bin \ + --libdir=/usr/lib \ + --libexecdir=/usr/lib \ + --target=${cross_triplet} \ + --disable-nls \ + --disable-multilib \ + --disable-shared \ + --disable-libquadmath \ + --disable-decimal-float \ + --disable-libgomp \ + --disable-libmpx \ + --disable-libmudflap \ + --disable-libssp \ + --disable-libitm \ + --disable-libatomic \ + --disable-threads \ + --disable-sjlj-exceptions \ + --enable-languages=c \ + --with-gnu-ld \ + --with-gnu-as \ + ${extra_args} \ + ${configure_args} \ + ${cross_gcc_bootstrap_configure_args} + + make ${makejobs} + make install DESTDIR=${wrksrc}/build_root + + touch ${wrksrc}/.gcc_bootstrap_done +} + +_build_kernel_headers() { + _check_cross_dir linux linux_headers || return 0 + + msg_normal "Patching Linux headers for ${cross_triplet}\n" + + cd linux-${cross_linux_version} + for f in ${XBPS_SRCPKGDIR}/kernel-libc-headers/patches/*.patch; do + _apply_patch -p0 $f + done + cd .. + + msg_normal "Building Linux headers for ${cross_triplet}\n" + + cd linux-${cross_linux_version} + + make ARCH=$cross_linux_arch headers_check + make ARCH=$cross_linux_arch \ + INSTALL_HDR_PATH=${wrksrc}/build_root/usr/${cross_triplet}/usr \ + headers_install + + touch ${wrksrc}/.linux_headers_done +} + +_build_glibc_headers() { + _check_cross_dir glibc glibc_headers || return 0 + + local tgt=$cross_triplet + + msg_normal "Patching glibc for ${cross_triplet}\n" + + cd glibc-${cross_glibc_version} + if [ -d "${XBPS_SRCPKGDIR}/glibc/patches" ]; then + for f in ${XBPS_SRCPKGDIR}/glibc/patches/*.patch; do + _apply_patch -p1 "$f" + done + fi + cd .. + + msg_normal "Building glibc headers for ${cross_triplet}\n" + + mkdir -p glibc_headers + cd glibc_headers + + echo "libc_cv_forced_unwind=yes" > config.cache + echo "libc_cv_c_cleanup=yes" >> config.cache + + # we don't need any custom args here, it's just headers + CC="${tgt}-gcc" CXX="${tgt}-g++" CPP="${tgt}-cpp" LD="${tgt}-ld" \ + AS="${tgt}-as" NM="${tgt}-nm" CFLAGS="-pipe" CXXFLAGS="" CPPFLAGS="" \ + LDFLAGS="" \ + ../glibc-${cross_glibc_version}/configure \ + --prefix=/usr \ + --host=${tgt} \ + --with-headers=${wrksrc}/build_root/usr/${tgt}/usr/include \ + --config-cache \ + --enable-obsolete-rpc \ + --enable-obsolete-nsl \ + --enable-kernel=2.6.27 \ + ${cross_glibc_configure_args} + + make -k install-headers cross_compiling=yes \ + install_root=${wrksrc}/build_root/usr/${tgt} + + touch ${wrksrc}/.glibc_headers_done +} + +_build_glibc() { + _check_cross_dir glibc glibc_build || return 0 + + local tgt=$cross_triplet + + msg_normal "Building glibc for ${tgt}\n" + + mkdir -p glibc_build + cd glibc_build + + echo "slibdir=/usr/lib${cross_wordsize}" > configparms + + echo "libc_cv_forced_unwind=yes" > config.cache + echo "libc_cv_c_cleanup=yes" >> config.cache + + CC="${tgt}-gcc" CXX="${tgt}-g++" CPP="${tgt}-cpp" LD="${tgt}-ld" \ + AR="${tgt}-ar" AS="${tgt}-as" NM="${tgt}-nm" \ + CFLAGS="-pipe ${cross_glibc_cflags}" \ + CXXFLAGS="-pipe ${cross_glibc_cflags}" \ + CPPFLAGS="${cross_glibc_cflags}" \ + LDFLAGS="${cross_glibc_ldflags}" \ + ../glibc-${cross_glibc_version}/configure \ + --prefix=/usr \ + --libdir=/usr/lib${cross_wordsize} \ + --libexecdir=/usr/libexec \ + --host=${tgt} \ + --with-headers=${wrksrc}/build_root/usr/${tgt}/usr/include \ + --config-cache \ + --enable-obsolete-rpc \ + --enable-obsolete-nsl \ + --disable-profile \ + --disable-werror \ + --enable-kernel=2.6.27 \ + ${cross_glibc_configure_args} + + make ${makejobs} + make install_root=${wrksrc}/build_root/usr/${tgt} install + + touch ${wrksrc}/.glibc_build_done +} + +_build_musl() { + _check_cross_dir musl musl_build || return 0 + + local tgt=$cross_triplet + + msg_normal "Patching musl for ${tgt}\n" + + cd musl-${cross_musl_version} + if [ -d "${XBPS_SRCPKGDIR}/musl/patches" ]; then + for f in ${XBPS_SRCPKGDIR}/musl/patches/*.patch; do + _apply_patch -p0 "$f" + done + fi + cd .. + + msg_normal "Building musl for ${tgt}\n" + + mkdir -p musl_build + cd musl_build + + CC="${tgt}-gcc" CXX="${tgt}-g++" CPP="${tgt}-cpp" LD="${tgt}-ld" \ + AR="${tgt}-ar" AS="${tgt}-as" NM="${tgt}-nm" \ + CFLAGS="-pipe -fPIC ${cross_musl_cflags}" \ + CPPFLAGS="${cross_musl_cflags}" LDFLAGS="${cross_musl_ldflags}" \ + ../musl-${cross_musl_version}/configure \ + --prefix=/usr \ + --host=${tgt} \ + ${cross_musl_configure_args} + + make ${makejobs} + make DESTDIR=${wrksrc}/build_root/usr/${tgt} install + + touch ${wrksrc}/.musl_build_done +} + +_build_libucontext() { + [ -n "$cross_gcc_skip_go" ] && return 0 + _check_cross_dir libucontext || return 0 + + msg_normal "Building libucontext for ${cross_triplet}\n" + + cd libucontext-${cross_libucontext_version} + # a terrible hack but seems to work for now + CC="${cross_triplet}-gcc" AS="${cross_triplet}-as" AR="${cross_triplet}-ar" \ + CPPFLAGS="-pipe ${cross_musl_cflags} -g0 -Os -nostdinc -isystem ${wrksrc}/build_root/usr/${cross_triplet}/usr/include" \ + make ARCH=${cross_libucontext_arch} libucontext.a + + cp libucontext.a ${wrksrc}/build_root/usr/${cross_triplet}/usr/lib + + touch ${wrksrc}/.libucontext_build_done +} + +_build_gcc() { + _check_cross_dir gcc gcc_build || return 0 + + msg_normal "Building gcc for ${cross_triplet}\n" + + mkdir -p gcc_build + cd gcc_build + + local langs="c,c++,fortran,objc,obj-c++,ada,lto" + if [ -z "$cross_gcc_skip_go" ]; then + langs+=",go" + fi + + local extra_args + if [ "$cross_libc" = "musl" ]; then + extra_args+=" --enable-libssp" + # otherwise glibc hosts get confused and use the gnu impl + extra_args+=" --enable-clocale=generic" + extra_args+=" --disable-symvers" + extra_args+=" --disable-gnu-unique-object" + extra_args+=" libat_cv_have_ifunc=no" + else + extra_args+=" --disable-libssp" + extra_args+=" --enable-gnu-unique-object" + fi + + # note on --disable-libquadmath: + # on some platforms the library is actually necessary for the + # fortran frontend to build, but still disable it because it + # should not be in the resulting packages; it conflicts with + # the libquadmath you can install into the cross root + # + # platforms where this is a problem should explicitly force + # libquadmath to be on via cross_gcc_configure_args, the + # do_install in this build-style automatically removes it + # + ../gcc-${cross_gcc_version}/configure \ + --prefix=/usr \ + --sbindir=/usr/bin \ + --libdir=/usr/lib \ + --libexecdir=/usr/lib \ + --target=${cross_triplet} \ + --with-sysroot=/usr/${cross_triplet} \ + --with-build-sysroot=${wrksrc}/build_root/usr/${cross_triplet} \ + --enable-languages=${langs} \ + --disable-nls \ + --disable-multilib \ + --disable-sjlj-exceptions \ + --disable-libquadmath \ + --disable-libmudflap \ + --disable-libitm \ + --disable-libvtv \ + --disable-libsanitizer \ + --disable-libstdcxx-pch \ + --enable-shared \ + --enable-threads=posix \ + --enable-__cxa_atexit \ + --enable-linker-build-id \ + --enable-libada \ + --enable-lto \ + --enable-default-pie \ + --enable-default-ssp \ + --with-gnu-ld \ + --with-gnu-as \ + --with-linker-hash-style=gnu \ + ${extra_args} \ + ${configure_args} \ + ${cross_gcc_configure_args} + + make ${makejobs} + + touch ${wrksrc}/.gcc_build_done +} + +_check_cross_var() { + local var="cross_${1}" + if [ -z "${!var}" ]; then + msg_error "cross_${1} not defined in template" + fi +} + +do_build() { + # Verify toolchain versions + + _check_cross_var binutils_version + _check_cross_var gcc_version + _check_cross_var linux_version + + case "${cross_libc}" in + musl) + _check_cross_var musl_version + if [ -z "$cross_gcc_skip_go" ]; then + _check_cross_var libucontext_version + _check_cross_var libucontext_arch + fi + ;; + glibc) + _check_cross_var glibc_version + ;; + *) msg_error "allowed cross_libc values are 'glibc', 'musl'\n" ;; + esac + + # Verify triplet + _check_cross_var triplet + _check_cross_var wordsize + _check_cross_var linux_arch + + local sysroot="/usr/${cross_triplet}" + + # Prepare environment + cd ${wrksrc} + + # Core directories for the build root + mkdir -p build_root/usr/{bin,lib,include,share} + mkdir -p build_root/usr/${cross_triplet}/usr/{bin,lib,include,share} + + # Host root uses host wordsize + ln -sf usr/lib build_root/lib + ln -sf usr/lib build_root/lib${XBPS_TARGET_WORDSIZE} + ln -sf lib build_root/usr/lib${XBPS_TARGET_WORDSIZE} + + # Target sysroot uses target wordsize + ln -sf usr/lib build_root/${sysroot}/lib + ln -sf usr/lib build_root/${sysroot}/lib${cross_wordsize} + ln -sf lib build_root/${sysroot}/usr/lib${cross_wordsize} + ln -sf lib build_root/${sysroot}/usr/libexec + + _build_binutils + + # Prepare environment so we can use temporary prefix + local oldpath="$PATH" + local oldldlib="$LD_LIBRARY_PATH" + + export PATH="${wrksrc}/build_root/usr/bin:$PATH" + export LD_LIBRARY_PATH="${wrksrc}/build_root/usr/lib:$PATH" + + _build_bootstrap_gcc + _build_kernel_headers + + if [ "$cross_libc" = "musl" ]; then + _build_musl + _build_libucontext + else + _build_glibc_headers + _build_glibc + fi + + _build_gcc + + # restore this stuff in case later hooks depend on it + export PATH="$oldpath" + export LD_LIBRARY_PATH="$oldldlib" +} + +do_install() { + # We need to be able to access binutils in the root + local oldpath="$PATH" + local oldldlib="$LD_LIBRARY_PATH" + export PATH="${wrksrc}/build_root/usr/bin:$PATH" + export LD_LIBRARY_PATH="${wrksrc}/build_root/usr/lib:$PATH" + + local sysroot="/usr/${cross_triplet}" + + # Core directories for the sysroot + # + # libexec is created for sysroot but not for dest, since in sysroot + # we configure glibc with separate libexec, elsewhere it's just lib + # and we want to delete the libexec from glibc afterwards to save space + mkdir -p ${DESTDIR}/${sysroot}/usr/{bin,lib,libexec,include,share} + # Sysroot base symlinks + ln -sf usr/lib ${DESTDIR}/${sysroot}/lib + ln -sf usr/lib ${DESTDIR}/${sysroot}/lib${cross_wordsize} + ln -sf lib ${DESTDIR}/${sysroot}/usr/lib${cross_wordsize} + + # Install Linux headers + cd ${wrksrc}/linux-${cross_linux_version} + make ARCH=${cross_linux_arch} \ + 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 binutils + cd ${wrksrc}/binutils_build + make install DESTDIR=${DESTDIR} + + # Install final gcc + cd ${wrksrc}/gcc_build + make install DESTDIR=${DESTDIR} + + # Move libcc1.so* to the sysroot + mv ${DESTDIR}/usr/lib/libcc1.so* ${DESTDIR}/${sysroot}/usr/lib + + if [ "$cross_libc" = "musl" ]; then + # Install musl + cd ${wrksrc}/musl_build + make DESTDIR=${DESTDIR}/${sysroot} install + + # Remove useless headers + rm -rf ${DESTDIR}/usr/lib/gcc/${cross_triplet}/*/include-fixed + + # Make ld-musl.so symlinks relative + for f in ${DESTDIR}/${sysroot}/usr/lib/ld-musl-*.so.*; do + ln -sf libc.so ${f} + done + else + # Install glibc + cd ${wrksrc}/glibc_build + make install_root=${DESTDIR}/${sysroot} install install-headers + + # Remove bad header + rm -f ${DESTDIR}/usr/lib/gcc/${cross__triplet}/*/include-fixed/bits/statx.h + fi + + # Symlinks for gnarl and gnat shared libraries + local majorver=${cross_gcc_version%.*.*} + local adalib=usr/lib/gcc/${_triplet}/${_gcc_version}/adalib + mv ${DESTDIR}/${adalib}/libgnarl-${majorver}.so \ + ${DESTDIR}/${sysroot}/usr/lib + mv ${DESTDIR}/${adalib}/libgnat-${majorver}.so \ + ${DESTDIR}/${sysroot}/usr/lib + ln -sf libgnarl-${majorver}.so ${DESTDIR}/${sysroot}/usr/lib/libgnarl.so + ln -sf libgnat-${majorver}.so ${DESTDIR}/${sysroot}/usr/lib/libgnat.so + rm -vf ${DESTDIR}/${adalib}/libgna{rl,t}.so + + # Remove unnecessary libatomic which is only built for gccgo + rm -rf ${DESTDIR}/${sysroot}/usr/lib/libatomic.* + + # If libquadmath was forced (needed for gfortran on some platforms) + # then remove it because it conflicts with libquadmath package + rm -rf ${DESTDIR}/${sysroot}/usr/lib/libquadmath.* + + # Remove leftover symlinks + rm -f ${DESTDIR}/usr/lib${XBPS_TARGET_WORDSIZE} + rm -f ${DESTDIR}/lib* + rm -f ${DESTDIR}/*bin + # Remove unnecessary stuff + rm -rf ${DESTDIR}/${sysroot}/{sbin,etc,var,libexec} + rm -rf ${DESTDIR}/${sysroot}/usr/{sbin,share,libexec} + rm -rf ${DESTDIR}/usr/share + rm -f ${DESTDIR}/usr/lib*/libiberty.a + + export PATH="$oldpath" + export LD_LIBRARY_PATH="$oldldlib" +} diff --git a/common/environment/build-style/void-cross.sh b/common/environment/build-style/void-cross.sh new file mode 100644 index 00000000000..80aaab47fd2 --- /dev/null +++ b/common/environment/build-style/void-cross.sh @@ -0,0 +1,11 @@ +lib32disabled=yes +nocross=yes +nopie=yes +create_wrksrc=yes + +nostrip_files+="libcaf_single.a libgcc.a libgcov.a libgcc_eh.a + libgnarl_pic.a libgnarl.a libgnat_pic.a libgnat.a libgmem.a" + +if [ "$cross_libc" = "glibc" -a "$XBPS_TARGET_LIBC" != "glibc" ]; then + broken="glibc crosstoolchains are only available on glibc hosts for now" +fi From 9a0e4094e4ddf7d8917eceeb3440313cf93ec9af Mon Sep 17 00:00:00 2001 From: q66 Date: Fri, 25 Dec 2020 00:43:48 +0100 Subject: [PATCH 03/16] cross-aarch64-linux-gnu: redo with void-cross --- srcpkgs/cross-aarch64-linux-gnu/template | 367 ++--------------------- 1 file changed, 19 insertions(+), 348 deletions(-) diff --git a/srcpkgs/cross-aarch64-linux-gnu/template b/srcpkgs/cross-aarch64-linux-gnu/template index b0122c8ec4a..f50d17b8b80 100644 --- a/srcpkgs/cross-aarch64-linux-gnu/template +++ b/srcpkgs/cross-aarch64-linux-gnu/template @@ -1,21 +1,21 @@ -# Template build file for 'cross-aarch64-linux-gnu' -# +# Template file for 'cross-aarch64-linux-gnu' +_triplet=aarch64-linux-gnu _binutils_version=2.32 _gcc_version=9.3.0 _glibc_version=2.30 _linux_version=4.19 - -_triplet=aarch64-linux-gnu -_archflags="-march=armv8-a" -_sysroot="/usr/${_triplet}" - pkgname=cross-${_triplet} version=0.33 revision=3 -short_desc="GNU Cross toolchain for the ${_triplet} LE target (binutils/gcc/glibc)" +build_style=void-cross +configure_args="--with-arch=armv8-a" +hostmakedepends="tar gcc-objc gcc-go flex perl python3" +makedepends="isl15-devel libmpc-devel zlib-devel gmp-devel mpfr-devel" +depends="${pkgname}-libc-${version}_${revision}" +short_desc="Void cross toolchain for ${_triplet}" maintainer="Leah Neukirchen " -homepage="https://www.voidlinux.org/" license="GPL-2.0-or-later, GPL-3.0-or-later, LGPL-2.1-or-later" +homepage="https://www.voidlinux.org/" distfiles=" ${GNU_SITE}/binutils/binutils-${_binutils_version}.tar.xz ${GNU_SITE}/gcc/gcc-${_gcc_version}/gcc-${_gcc_version}.tar.xz @@ -26,349 +26,20 @@ checksum="0ab6c55dd86a92ed561972ba15b9b70a8b9f75557f896446c82e8b36e473ee04 e2c4114e569afbe7edbc29131a43be833850ab9a459d81beb2588016d2bbb8af 0c68f5655528aed4f99dae71a5b259edc93239fa899e2df79c055275c21749a1" -lib32disabled=yes -nocross=yes -nopie=yes -create_wrksrc=yes -hostmakedepends="tar gcc-objc gcc-go flex perl python3" -makedepends="isl15-devel libmpc-devel zlib-devel" -depends="${pkgname}-libc-${version}_${revision}" -nostrip_files="libcaf_single.a libgcc.a libgcov.a libgcc_eh.a - libgnarl_pic.a libgnarl.a libgnat_pic.a libgnat.a libgmem.a" - -if [ "$XBPS_TARGET_LIBC" != "glibc" ]; then - broken="glibc crosstoolchain only available on glibc" -fi - -if [ "$XBPS_TARGET_WORDSIZE" != "64" ]; then - broken="64-bit crosstoolchain only available on 64-bit host" -fi +cross_triplet=${_triplet} +cross_wordsize=64 +cross_libc=glibc +cross_binutils_version=${_binutils_version} +cross_gcc_version=${_gcc_version} +cross_glibc_version=${_glibc_version} +cross_linux_version=${_linux_version} +cross_linux_arch=arm64 +cross_glibc_cflags="-O2 -march=armv8-a" if [ "$XBPS_TARGET_MACHINE" = "aarch64" ]; then broken="Can't build crosstoolchain to itself" fi -_apply_patch() { - local args="$1" pname="$(basename $2)" - - if [ ! -f ".${pname}_done" ]; then - patch -N $args -i $2 - touch .${pname}_done - fi -} - -_linux_headers() { - [ -f ${wrksrc}/.linux_build_done ] && return 0 - - cd ${wrksrc} - msg_normal "Building Linux API headers for ARM\n" - - cd linux-${_linux_version} - - make ARCH=arm64 headers_check - make ARCH=arm64 INSTALL_HDR_PATH=${_sysroot}/usr headers_install - - touch ${wrksrc}/.linux_build_done -} - -_binutils_build() { - local _args - - [ -f ${wrksrc}/.binutils_build_done ] && return 0 - - cd ${wrksrc} - msg_normal "Building cross binutils\n" - [ ! -d binutils-build ] && mkdir binutils-build - cd binutils-build - - _args="--prefix=/usr" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --disable-nls" - _args+=" --disable-shared" - _args+=" --disable-multilib" - _args+=" --disable-werror" - _args+=" --disable-gold" - _args+=" --with-system-zlib" - ../binutils-${_binutils_version}/configure ${_args} - - make configure-host && make ${makejobs} - make install - - touch ${wrksrc}/.binutils_build_done -} - -_gcc_bootstrap() { - local _args - - [ -f ${wrksrc}/.gcc_bootstrap_done ] && return 0 - - cd ${wrksrc}/gcc-${_gcc_version} - for f in ${XBPS_SRCPKGDIR}/gcc/patches/*.patch; do - _apply_patch -p0 "$f" - done - - msg_normal "Building cross gcc bootstrap\n" - - [ ! -d ../gcc-bootstrap ] && mkdir ../gcc-bootstrap - cd ../gcc-bootstrap - - _args="--prefix=/usr" - _args+=" --target=${_triplet}" - _args+=" --without-headers" - _args+=" --disable-nls" - _args+=" --disable-shared" - _args+=" --disable-libquadmath" - _args+=" --disable-decimal-float" - _args+=" --disable-libgomp" - _args+=" --disable-libmpx" - _args+=" --disable-libmudflap" - _args+=" --disable-libssp" - _args+=" --disable-libitm" - _args+=" --disable-libatomic" - _args+=" --disable-threads" - _args+=" --enable-languages=c" - _args+=" --disable-sjlj-exceptions" - _args+=" --disable-multilib" - _args+=" --with-gnu-ld" - _args+=" --with-gnu-as" - - ../gcc-${_gcc_version}/configure ${_args} - - make ${makejobs} - make install - - touch ${wrksrc}/.gcc_bootstrap_done -} - -_glibc_headers() { - local _args f - - [ -f ${wrksrc}/.glibc_headers_done ] && return 0 - - cd ${wrksrc}/glibc-${_glibc_version} - if [ -d "${XBPS_SRCPKGDIR}/glibc/patches" ]; then - for f in ${XBPS_SRCPKGDIR}/glibc/patches/*.patch; do - _apply_patch -p1 "$f" - done - fi - - cd ${wrksrc} - msg_normal "Building cross glibc headers\n" - - [ ! -d glibc-headers ] && mkdir glibc-headers - cd glibc-headers - - echo "libc_cv_forced_unwind=yes" > config.cache - echo "libc_cv_c_cleanup=yes" >> config.cache - - export CC="${_triplet}-gcc" LD="${_triplet}-ld" \ - AS="${_triplet}-as" CPP="${_triplet}-cpp" \ - NM="${_triplet}-nm" - - _args="--prefix=/usr" - _args+=" --host=${_triplet}" - _args+=" --with-headers=${_sysroot}/usr/include" - _args+=" --config-cache" - _args+=" --enable-obsolete-rpc" - _args+=" --enable-obsolete-nsl" - _args+=" --enable-kernel=2.6.27" - - ../glibc-${_glibc_version}/configure ${_args} - - make -k install-headers cross_compiling=yes \ - install_root=${_sysroot} - - touch ${wrksrc}/.glibc_headers_done -} - -_glibc_build() { - local _args - - [ -f ${wrksrc}/.glibc_build_done ] && return 0 - - cd ${wrksrc} - msg_normal "Building cross glibc\n" - - [ ! -d glibc-build ] && mkdir glibc-build - cd glibc-build - - echo "slibdir=/usr/lib64" > configparms - - echo "libc_cv_forced_unwind=yes" > config.cache - echo "libc_cv_c_cleanup=yes" >> config.cache - - export CC="${_triplet}-gcc" CXX="${_triplet}-g++" LD="${_triplet}-ld" \ - AS="${_triplet}-as" CPP="${_triplet}-cpp" \ - NM="${_triplet}-nm" - export CFLAGS="-O1 -pipe ${_archflags}" - - _args="--prefix=/usr" - _args+=" --libdir=/usr/lib64" - _args+=" --host=${_triplet}" - _args+=" --with-headers=${_sysroot}/usr/include" - _args+=" --config-cache" - _args+=" --enable-obsolete-rpc" - _args+=" --enable-obsolete-nsl" - _args+=" --disable-profile" - _args+=" --enable-kernel=2.6.27" - _args+=" --disable-werror" - - ../glibc-${_glibc_version}/configure ${_args} - - make ${makejobs} - make install_root=${_sysroot} install - - touch ${wrksrc}/.glibc_build_done -} - -_gcc_build() { - local _args - - [ -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 - - export CC="gcc" CXX="g++" CFLAGS="-Os -pipe" - unset LD AS - - # Make this link to target libs. - if [ ! -f .sed_subst_done ]; then - sed -e "s, /lib/, ${_sysroot}/lib/,g;s, /usr/lib/, ${_sysroot}/usr/lib/,g" \ - -i ${_sysroot}/lib/libc.so - sed -e "s, /lib64/, ${_sysroot}/lib64/,g;s, /usr/lib64/, ${_sysroot}/usr/lib64/,g" \ - -i ${_sysroot}/lib/libc.so - touch .sed_subst_done - fi - - _args="--prefix=/usr" - _args+=" --libexecdir=/usr/lib" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --enable-languages=c,ada,c++,objc,obj-c++,go,fortran,lto" - _args+=" --with-gnu-as" - _args+=" --with-gnu-ld" - _args+=" --disable-multilib" - _args+=" --disable-nls" - _args+=" --disable-sjlj-exceptions" - _args+=" --enable-threads=posix" - _args+=" --enable-long-longx" - _args+=" --enable-shared" - _args+=" --enable-linker-build-id" - _args+=" --enable-gnu-unique-object" - _args+=" --enable-libada" - _args+=" --enable-lto" - _args+=" --enable-default-pie" - _args+=" --enable-default-ssp" - _args+=" --disable-libquadmath" - _args+=" --disable-libssp" - _args+=" --disable-libmudflap" - _args+=" --disable-libsanitizer" - _args+=" --disable-libcilkrts" - _args+=" --disable-libitm" - _args+=" --disable-libvtv" - _args+=" --disable-libstdcxx-pch" - _args+=" --enable-libstdcxx-time" - _args+=" --with-linker-hash-style=gnu" - - ../gcc-${_gcc_version}/configure ${_args} - - make ${makejobs} - - touch ${wrksrc}/.gcc_build_done -} - -do_build() { - unset LDFLAGS - export CFLAGS="-Os" CXXFLAGS="-Os" - - 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 - ln -sf lib ${_sysroot}/usr/lib64 - ln -sf usr/lib ${_sysroot}/lib64 - - _binutils_build - _gcc_bootstrap - _linux_headers - _glibc_headers - _glibc_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 - ln -sf lib ${DESTDIR}/${_sysroot}/usr/lib64 - ln -sf usr/lib ${DESTDIR}/${_sysroot}/lib64 - - # install cross binutils - cd ${wrksrc}/binutils-build - make DESTDIR=${DESTDIR} install - - # install cross gcc - cd ${wrksrc}/gcc-build - make DESTDIR=${DESTDIR} install - - # move libcc1.so* to the sysroot - mv ${DESTDIR}/usr/lib/libcc1.so* ${DESTDIR}/${_sysroot}/usr/lib - - # install linux API headers for ARM64 - cd ${wrksrc}/linux-${_linux_version} - make ARCH=arm64 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 glibc for target - cd ${wrksrc}/glibc-build - make install_root=${DESTDIR}/${_sysroot} install install-headers - - # symlinks for gnarl and gnat shared libraries - _majorver=${_gcc_version%.*.*} - _adalib=usr/lib/gcc/${_triplet}/${_gcc_version}/adalib - mv -v ${DESTDIR}/${_adalib}/libgnarl-${_majorver}.so ${DESTDIR}/${_sysroot}/usr/lib - mv -v ${DESTDIR}/${_adalib}/libgnat-${_majorver}.so ${DESTDIR}/${_sysroot}/usr/lib - ln -svf libgnarl-${_majorver}.so libgnarl.so - ln -svf libgnat-${_majorver}.so libgnat.so - rm -vf ${DESTDIR}/${_adalib}/libgna{rl,t}.so - - # We need to build libatomic in target gcc as gccgo needs it to - # build... but it's not needed at runtime, so remove it from the - # destdir so it doesn't conflict with the libatomic package - rm -f ${DESTDIR}/${_sysroot}/usr/lib/libatomic.* - - # Remove unnecessary stuff - rm -f ${DESTDIR}/usr/lib*/libiberty.a - rm -rf ${DESTDIR}/usr/share - rm -rf ${DESTDIR}/${_sysroot}/{sbin,etc,var} - rm -rf ${DESTDIR}/${_sysroot}/usr/{sbin,share,libexec} - rm -f ${DESTDIR}/${_sysroot}/libexec -} - -do_clean() { - # Remove temporary stuff from masterdir - rm -rf ${_sysroot} - rm -f /usr/bin/${_triplet}* - rm -rf /usr/lib/gcc/${_triplet} - rm -rf /usr/libexec/gcc/${_triplet} -} - cross-aarch64-linux-gnu-libc_package() { short_desc+=" - glibc files" nostrip=yes @@ -376,6 +47,6 @@ cross-aarch64-linux-gnu-libc_package() { noverifyrdeps=yes pkg_install() { - vmove ${_sysroot} + vmove usr/${cross_triplet} } } From c26fa5452fd8d6f3ec1d09a82d69359dfb41a47c Mon Sep 17 00:00:00 2001 From: q66 Date: Fri, 25 Dec 2020 14:52:36 +0100 Subject: [PATCH 04/16] cross-aarch64-linux-musl: redo with void-cross --- srcpkgs/cross-aarch64-linux-musl/template | 309 ++-------------------- 1 file changed, 21 insertions(+), 288 deletions(-) diff --git a/srcpkgs/cross-aarch64-linux-musl/template b/srcpkgs/cross-aarch64-linux-musl/template index 8d4587cfe48..76b36b660b6 100644 --- a/srcpkgs/cross-aarch64-linux-musl/template +++ b/srcpkgs/cross-aarch64-linux-musl/template @@ -1,19 +1,19 @@ -# Template build file for 'cross-aarch64-linux-musl' -# +# Template file for 'cross-aarch64-linux-musl' +_triplet=aarch64-linux-musl _binutils_version=2.32 _gcc_version=9.3.0 _musl_version=1.1.24 _linux_version=4.19 _libucontext_version=0.9.0 - -_triplet=aarch64-linux-musl -_archflags="-march=armv8-a" -_sysroot="/usr/${_triplet}" - pkgname=cross-${_triplet} version=0.33 revision=4 -short_desc="Cross toolchain for ARM64 LE target (musl)" +build_style=void-cross +configure_args="--with-arch=armv8-a" +hostmakedepends="tar gcc-objc gcc-go flex perl python3" +makedepends="isl15-devel libmpc-devel zlib-devel gmp-devel mpfr-devel" +depends="${pkgname}-libc-${version}_${revision}" +short_desc="Void cross toolchain for ${_triplet}" maintainer="Orphaned " homepage="https://www.voidlinux.org/" license="GPL-2.0-or-later, GPL-3.0-or-later, MIT" @@ -29,296 +29,29 @@ checksum="0ab6c55dd86a92ed561972ba15b9b70a8b9f75557f896446c82e8b36e473ee04 0c68f5655528aed4f99dae71a5b259edc93239fa899e2df79c055275c21749a1 0d53a415a307ef175153bbe60a572c940a922cb736ce13530b666e7ec2795d68" -lib32disabled=yes -nocross=yes -nopie=yes -nodebug=yes -create_wrksrc=yes - -hostmakedepends="tar gcc-objc gcc-go flex perl python3" -makedepends="zlib-devel gmp-devel mpfr-devel libmpc-devel isl15-devel" -nostrip_files="libcaf_single.a libgcc.a libgcov.a libgcc_eh.a - libgnarl_pic.a libgnarl.a libgnat_pic.a libgnat.a libgmem.a" -depends="${pkgname}-libc-${version}_${revision}" - -if [ "$XBPS_TARGET_WORDSIZE" != "64" ]; then - broken="64-bit crosstoolchain only available on 64-bit host" -fi +cross_triplet=${_triplet} +cross_wordsize=64 +cross_libc=musl +cross_binutils_version=${_binutils_version} +cross_gcc_version=${_gcc_version} +cross_musl_version=${_musl_version} +cross_linux_version=${_linux_version} +cross_libucontext_version=${_libucontext_version} +cross_libucontext_arch=aarch64 +cross_linux_arch=arm64 +cross_musl_cflags="-O2 -march=armv8-a" if [ "$XBPS_TARGET_MACHINE" = "aarch64-musl" ]; then broken="Can't build crosstoolchain to itself" fi -_apply_patch() { - local args="$1" pname="$(basename $2)" - - if [ ! -f ".${pname}_done" ]; then - patch -N $args -i $2 - touch .${pname}_done - fi -} - -_binutils_build() { - local _args - - [ -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 - _args="--prefix=/usr" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --disable-nls" - _args+=" --disable-multilib" - _args+=" --disable-werror" - _args+=" --disable-shared" - _args+=" --with-system-zlib" - - ../binutils-${_binutils_version}/configure ${_args} - - make configure-host && make ${makejobs} - make install - - touch ${wrksrc}/.binutils_build_done -} - -_gcc_bootstrap() { - local _args - [ -f ${wrksrc}/.gcc_bootstrap_done ] && return 0 - - cd ${wrksrc}/gcc-${_gcc_version} - for f in ${XBPS_SRCPKGDIR}/gcc/patches/*.patch; do - _apply_patch -p0 "$f" - done - for f in ${XBPS_SRCPKGDIR}/gcc/files/*-musl.patch; do - _apply_patch -p1 "$f" - done - - msg_normal "Building cross gcc bootstrap\n" - - [ ! -d ../gcc-bootstrap ] && mkdir ../gcc-bootstrap - cd ../gcc-bootstrap - - _args="--prefix=/usr" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --with-newlib" - _args+=" --enable-languages=c" - _args+=" --with-newlib" - _args+=" --disable-libssp" - _args+=" --disable-nls" - _args+=" --disable-libquadmath" - _args+=" --disable-threads" - _args+=" --disable-decimal-float" - _args+=" --disable-shared" - _args+=" --disable-libmudflap" - _args+=" --disable-libgomp" - _args+=" --disable-libatomic" - _args+=" --disable-symvers" - _args+=" libat_cv_have_ifunc=no" - - CFLAGS="-O0 -g0" CXXFLAGS="-O0 -g0" \ - ../gcc-${_gcc_version}/configure ${_args} - - 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\n" - - cd linux-${_linux_version} - - for f in ${XBPS_SRCPKGDIR}/kernel-libc-headers/patches/*.patch; do - _apply_patch -p0 $f - done - - make ARCH=arm64 headers_check - make ARCH=arm64 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" - - # Apply musl patches if there are any - if [ -d "${XBPS_SRCPKGDIR}/musl/patches" ]; then - for f in ${XBPS_SRCPKGDIR}/musl/patches/*.patch; do - _apply_patch -p0 "$f" - done - fi - - CC="${_triplet}-gcc" LD="${_triplet}-ld" AR="${_triplet}-ar" \ - AS="${_triplet}-as" RANLIB="${_triplet}-ranlib" \ - CFLAGS="-Os -pipe -fPIC ${_archflags}" \ - ./configure --prefix=/usr - - make ${makejobs} - make DESTDIR=${_sysroot} install - - touch ${wrksrc}/.musl_build_done -} - -_libucontext_build() { - [ -f ${wrksrc}/.libucontext_build_done ] && return 0 - - cd ${wrksrc}/libucontext-${_libucontext_version} - msg_normal "Building cross libucontext\n" - - # it's ok if we're static only here - CC="${_triplet}-gcc" AR="${_triplet}-ar" AS="${_triplet}-as" \ - CFLAGS="-Os -pipe ${_archflags}" \ - make ARCH=aarch64 libucontext.a - - cp libucontext.a ${_sysroot}/usr/lib - - touch ${wrksrc}/.libucontext_build_done -} - -_gcc_build() { - local _args - - [ -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 - - _args="--prefix=/usr" - _args+=" --libexecdir=/usr/lib" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --enable-languages=c,ada,c++,objc,obj-c++,go,fortran,lto" - _args+=" --enable-libada" - _args+=" --enable-lto" - _args+=" --enable-default-pie" - _args+=" --enable-default-ssp" - _args+=" --enable-libssp" - _args+=" --disable-libsanitizer" - _args+=" --disable-multilib" - _args+=" --disable-nls" - _args+=" --disable-libquadmath" - _args+=" --disable-libmudflap" - _args+=" --enable-shared" - _args+=" --disable-symvers" - _args+=" libat_cv_have_ifunc=no" - - ../gcc-${_gcc_version}/configure ${_args} - - 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 - ln -sf lib ${_sysroot}/usr/lib64 - ln -sf usr/lib ${_sysroot}/lib64 - - _binutils_build - _gcc_bootstrap - _linux_headers - _musl_build - _libucontext_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 - ln -sf lib ${DESTDIR}/${_sysroot}/usr/lib64 - ln -sf usr/lib ${DESTDIR}/${_sysroot}/lib64 - - # install linux API headers - cd ${wrksrc}/linux-${_linux_version} - make ARCH=arm64 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 - - # move libcc1.so* to the sysroot - mv ${DESTDIR}/usr/lib/libcc1.so* ${DESTDIR}/${_sysroot}/usr/lib - - # 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.so symlinks relative. - ln -sf libc.so ${DESTDIR}/${_sysroot}/usr/lib/ld-musl-aarch64.so.1 - - # symlinks for gnarl and gnat shared libraries - _majorver=${_gcc_version%.*.*} - _adalib=usr/lib/gcc/${_triplet}/${_gcc_version}/adalib - mv -v ${DESTDIR}/${_adalib}/libgnarl-${_majorver}.so ${DESTDIR}/${_sysroot}/usr/lib - mv -v ${DESTDIR}/${_adalib}/libgnat-${_majorver}.so ${DESTDIR}/${_sysroot}/usr/lib - ln -svf libgnarl-${_majorver}.so libgnarl.so - ln -svf libgnat-${_majorver}.so libgnat.so - rm -vf ${DESTDIR}/${_adalib}/libgna{rl,t}.so - - # We need to build libatomic in target gcc as gccgo needs it to - # build... but it's not needed at runtime, so remove it from the - # destdir so it doesn't conflict with the libatomic package - rm -f ${DESTDIR}/${_sysroot}/usr/lib/libatomic.* - - # 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 -f ${DESTDIR}/${_sysroot}/sbin -} - cross-aarch64-linux-musl-libc_package() { short_desc+=" - libc files" nostrip=yes noshlibprovides=yes noverifyrdeps=yes + pkg_install() { - vmove ${_sysroot} + vmove usr/${cross_triplet} } } From 473e984839b72f81544098f1c1e48396b9d8eef9 Mon Sep 17 00:00:00 2001 From: q66 Date: Fri, 25 Dec 2020 20:10:35 +0100 Subject: [PATCH 05/16] cross-arm-linux-gnueabi: redo with void-cross --- srcpkgs/cross-arm-linux-gnueabi/template | 367 ++--------------------- 1 file changed, 21 insertions(+), 346 deletions(-) diff --git a/srcpkgs/cross-arm-linux-gnueabi/template b/srcpkgs/cross-arm-linux-gnueabi/template index e58100e68df..920e54164d7 100644 --- a/srcpkgs/cross-arm-linux-gnueabi/template +++ b/srcpkgs/cross-arm-linux-gnueabi/template @@ -1,22 +1,21 @@ -# Template build file for 'cross-arm-linux-gnueabi' -# +# Template file for 'cross-arm-linux-gnueabi' +_triplet=arm-linux-gnueabi _binutils_version=2.32 _gcc_version=9.3.0 _glibc_version=2.30 _linux_version=4.19 - -_triplet=arm-linux-gnueabi -_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.33 revision=2 -short_desc="GNU Cross toolchain for the ${_triplet} LE target (binutils/gcc/glibc)" +build_style=void-cross +configure_args="--with-arch=armv5te --with-float=soft" +hostmakedepends="tar gcc-objc gcc-go flex perl python3" +makedepends="isl15-devel libmpc-devel zlib-devel gmp-devel mpfr-devel" +depends="${pkgname}-libc-${version}_${revision}" +short_desc="Void cross toolchain for ${_triplet}" maintainer="Orphaned " +license="GPL-2.0-or-later, GPL-3.0-or-later, LGPL-2.1-or-later" homepage="https://www.voidlinux.org/" -license="GPL-2.0-or-later, GPL-3.0-or-later, LGPL-2.1.0-or-later" distfiles=" ${GNU_SITE}/binutils/binutils-${_binutils_version}.tar.xz ${GNU_SITE}/gcc/gcc-${_gcc_version}/gcc-${_gcc_version}.tar.xz @@ -27,346 +26,22 @@ checksum="0ab6c55dd86a92ed561972ba15b9b70a8b9f75557f896446c82e8b36e473ee04 e2c4114e569afbe7edbc29131a43be833850ab9a459d81beb2588016d2bbb8af 0c68f5655528aed4f99dae71a5b259edc93239fa899e2df79c055275c21749a1" -lib32disabled=yes -nocross=yes -nopie=yes -nodebug=yes -create_wrksrc=yes - -hostmakedepends="tar gcc-objc gcc-go flex perl python3" -makedepends="isl15-devel libmpc-devel zlib-devel" -depends="${pkgname}-libc-${version}_${revision}" -nostrip_files="libcaf_single.a libgcc.a libgcov.a libgcc_eh.a - libgnarl_pic.a libgnarl.a libgnat_pic.a libgnat.a libgmem.a" - -if [ "$XBPS_TARGET_LIBC" != "glibc" ]; then - broken="glibc crosstoolchain only available on glibc" -fi +cross_triplet=${_triplet} +cross_wordsize=32 +cross_libc=glibc +cross_binutils_version=${_binutils_version} +cross_gcc_version=${_gcc_version} +cross_glibc_version=${_glibc_version} +cross_linux_version=${_linux_version} +cross_linux_arch=arm +cross_binutils_configure_args="--without-fp" +cross_glibc_configure_args="--without-fp" +cross_glibc_cflags="-Os -march=armv5te -msoft-float -mfloat-abi=soft" if [ "$XBPS_TARGET_MACHINE" = "armv5tel" ]; then broken="Can't build crosstoolchain to itself" fi -_apply_patch() { - local args="$1" pname="$(basename $2)" - - if [ ! -f ".${pname}_done" ]; then - patch -N $args -i $2 - touch .${pname}_done - fi -} - -_linux_headers() { - [ -f ${wrksrc}/.linux_build_done ] && return 0 - - cd ${wrksrc} - msg_normal "Building Linux API headers for ARM\n" - - cd linux-${_linux_version} - - make ARCH=arm headers_check - make ARCH=arm INSTALL_HDR_PATH=${_sysroot}/usr headers_install - - touch ${wrksrc}/.linux_build_done -} - -_binutils_build() { - local _args - - [ -f ${wrksrc}/.binutils_build_done ] && return 0 - - cd ${wrksrc} - msg_normal "Building cross binutils\n" - [ ! -d binutils-build ] && mkdir binutils-build - cd binutils-build - _args="--prefix=/usr" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --disable-nls" - _args+=" --disable-shared" - _args+=" --disable-multilib" - _args+=" --disable-werror" - _args+=" --with-system-zlib" - - ../binutils-${_binutils_version}/configure ${_args} - - make configure-host - make ${makejobs} - make install - - touch ${wrksrc}/.binutils_build_done -} - -_gcc_bootstrap() { - local _args - - [ -f ${wrksrc}/.gcc_bootstrap_done ] && return 0 - - cd ${wrksrc}/gcc-${_gcc_version} - for f in ${XBPS_SRCPKGDIR}/gcc/patches/*.patch; do - _apply_patch -p0 "$f" - done - - msg_normal "Building cross gcc bootstrap\n" - - [ ! -d ../gcc-bootstrap ] && mkdir ../gcc-bootstrap - cd ../gcc-bootstrap - - _args="--prefix=/usr" - _args+=" --target=${_triplet}" - _args+=" --without-headers" - _args+=" --disable-nls" - _args+=" --disable-shared" - _args+=" --disable-libquadmath" - _args+=" --disable-decimal-float" - _args+=" --disable-libgomp" - _args+=" --disable-libmpx" - _args+=" --disable-libmudflap" - _args+=" --disable-libssp" - _args+=" --disable-libitm" - _args+=" --disable-libatomic" - _args+=" --disable-threads" - _args+=" --enable-languages=c" - _args+=" --disable-sjlj-exceptions" - _args+=" --disable-multilib" - _args+=" --with-gnu-ld" - _args+=" --with-gnu-as" - _args+=" ${_fpuflags}" - - CFLAGS="-O0 -g0" CXXFLAGS="-O0 -g0" \ - ../gcc-${_gcc_version}/configure ${_args} - - make ${makejobs} - make install - - touch ${wrksrc}/.gcc_bootstrap_done -} - -_glibc_headers() { - local _args f - - [ -f ${wrksrc}/.glibc_headers_done ] && return 0 - - cd ${wrksrc}/glibc-${_glibc_version} - if [ -d "${XBPS_SRCPKGDIR}/glibc/patches" ]; then - for f in ${XBPS_SRCPKGDIR}/glibc/patches/*.patch; do - _apply_patch -p1 "$f" - done - fi - - cd ${wrksrc} - msg_normal "Building cross glibc headers\n" - - [ ! -d glibc-headers ] && mkdir glibc-headers - cd glibc-headers - - echo "libc_cv_forced_unwind=yes" > config.cache - echo "libc_cv_c_cleanup=yes" >> config.cache - - export CC="${_triplet}-gcc" LD="${_triplet}-ld" \ - AS="${_triplet}-as" CPP="${_triplet}-cpp" - - _args="--prefix=/usr" - _args+=" --host=${_triplet}" - _args+=" --with-headers=${_sysroot}/usr/include" - _args+=" --config-cache" - _args+=" --enable-obsolete-rpc" - _args+=" --enable-obsolete-nsl" - _args+=" --enable-kernel=2.6.27" - _args+=" ${_fpuflags}" - - ../glibc-${_glibc_version}/configure ${_args} - - make -k install-headers cross_compiling=yes \ - install_root=${_sysroot} - - touch ${wrksrc}/.glibc_headers_done -} - -_glibc_build() { - local _args - - [ -f ${wrksrc}/.glibc_build_done ] && return 0 - - cd ${wrksrc} - msg_normal "Building cross glibc\n" - - [ ! -d glibc-build ] && mkdir glibc-build - cd glibc-build - - echo "slibdir=/usr/lib32" > configparms - - echo "libc_cv_forced_unwind=yes" > config.cache - echo "libc_cv_c_cleanup=yes" >> config.cache - - export CC="${_triplet}-gcc" LD="${_triplet}-ld" \ - AS="${_triplet}-as" CPP="${_triplet}-cpp" - export CFLAGS="-Os -pipe ${_archflags}" - - _args="--prefix=/usr" - _args+=" --libdir=/usr/lib32" - _args+=" --host=${_triplet}" - _args+=" --with-headers=${_sysroot}/usr/include" - _args+=" --config-cache" - _args+=" --disable-profile" - _args+=" --enable-obsolete-rpc" - _args+=" --enable-obsolete-nsl" - _args+=" --disable-werror" - _args+=" --enable-kernel=2.6.27" - _args+=" ${_fpuflags}" - - ../glibc-${_glibc_version}/configure ${_args} - - make ${makejobs} - make install_root=${_sysroot} install - - touch ${wrksrc}/.glibc_build_done -} - -_gcc_build() { - local _args - - [ -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 - - unset LD AS CPP - export CC="gcc" CFLAGS="-Os -pipe" - - # Make this link to target libs. - if [ ! -f .sed_subst_done ]; then - sed -e "s, /lib/, ${_sysroot}/lib/,g;s, /usr/lib/, ${_sysroot}/usr/lib/,g" \ - -i ${_sysroot}/lib/libc.so - sed -e "s, /lib32/, ${_sysroot}/lib32/,g;s, /usr/lib32/, ${_sysroot}/usr/lib32/,g" \ - -i ${_sysroot}/lib/libc.so - touch .sed_subst_done - fi - - _args="--prefix=/usr" - _args+=" --libexecdir=/usr/lib" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --enable-languages=c,ada,c++,objc,obj-c++,go,fortran,lto" - _args+=" --with-gnu-as" - _args+=" --with-gnu-ld" - _args+=" --disable-multilib" - _args+=" --disable-werror" - _args+=" --disable-nls" - _args+=" --disable-sjlj-exceptions" - _args+=" --enable-threads=posix" - _args+=" --enable-long-longx" - _args+=" --enable-shared" - _args+=" --enable-linker-build-id" - _args+=" --enable-gnu-unique-object" - _args+=" --enable-libada" - _args+=" --enable-lto" - _args+=" --enable-default-pie" - _args+=" --enable-default-ssp" - _args+=" --disable-libquadmath" - _args+=" --disable-libssp" - _args+=" --disable-libmpx" - _args+=" --disable-libmudflap" - _args+=" --disable-libsanitizer" - _args+=" --disable-libcilkrts" - _args+=" --disable-libitm" - _args+=" --disable-libvtv" - _args+=" --disable-libstdcxx-pch" - _args+=" --enable-libstdcxx-time" - _args+=" --with-linker-hash-style=gnu" - _args+=" ${_fpuflags}" - - ../gcc-${_gcc_version}/configure ${_args} - - make ${makejobs} - - touch ${wrksrc}/.gcc_build_done -} - -do_build() { - 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 - ln -sf lib ${_sysroot}/usr/lib32 - ln -sf usr/lib ${_sysroot}/lib32 - - # Ensure we use sane environment - unset CC CXX CPP LD AS AR RANLIB OBJDUMP READELF NM - unset CFLAGS CXXFLAGS CPPFLAGS LDFLAGS - export CFLAGS="-Os" CXXFLAGS="-Os" - - _binutils_build - _gcc_bootstrap - _linux_headers - _glibc_headers - _glibc_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 - ln -sf lib ${DESTDIR}/${_sysroot}/usr/lib32 - ln -sf usr/lib ${DESTDIR}/${_sysroot}/lib32 - - # install cross binutils - cd ${wrksrc}/binutils-build - make DESTDIR=${DESTDIR} install - - # install cross gcc - cd ${wrksrc}/gcc-build - make DESTDIR=${DESTDIR} install - - # move libcc1.so* to the sysroot - mv ${DESTDIR}/usr/lib/libcc1.so* ${DESTDIR}/${_sysroot}/usr/lib - - # install linux API headers for MIPS - 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 glibc for target - cd ${wrksrc}/glibc-build - make install_root=${DESTDIR}/${_sysroot} install install-headers - - # symlinks for gnarl and gnat shared libraries - _majorver=${_gcc_version%.*.*} - _adalib=usr/lib/gcc/${_triplet}/${_gcc_version}/adalib - mv -v ${DESTDIR}/${_adalib}/libgnarl-${_majorver}.so ${DESTDIR}/${_sysroot}/usr/lib - mv -v ${DESTDIR}/${_adalib}/libgnat-${_majorver}.so ${DESTDIR}/${_sysroot}/usr/lib - ln -svf libgnarl-${_majorver}.so libgnarl.so - ln -svf libgnat-${_majorver}.so libgnat.so - rm -vf ${DESTDIR}/${_adalib}/libgna{rl,t}.so - - # We need to build libatomic in target gcc as gccgo needs it to - # build... but it's not needed at runtime, so remove it from the - # destdir so it doesn't conflict with the libatomic package - rm -f ${DESTDIR}/${_sysroot}/usr/lib/libatomic.* - - # Remove unnecessary stuff - rm -f ${DESTDIR}/usr/lib*/libiberty.a - rm -rf ${DESTDIR}/usr/share - rm -rf ${DESTDIR}/${_sysroot}/{sbin,lib,etc,var} - rm -rf ${DESTDIR}/${_sysroot}/usr/{sbin,share,libexec} - rm -f ${DESTDIR}/${_sysroot}/libexec -} - cross-arm-linux-gnueabi-libc_package() { short_desc+=" - glibc files" nostrip=yes @@ -374,6 +49,6 @@ cross-arm-linux-gnueabi-libc_package() { noverifyrdeps=yes pkg_install() { - vmove ${_sysroot} + vmove usr/${cross_triplet} } } From 4ba542975df22fa58267acde7edd5da65c8fe130 Mon Sep 17 00:00:00 2001 From: q66 Date: Fri, 25 Dec 2020 20:10:45 +0100 Subject: [PATCH 06/16] cross-arm-linux-gnueabihf: redo with void-cross --- srcpkgs/cross-arm-linux-gnueabihf/template | 365 ++------------------- 1 file changed, 19 insertions(+), 346 deletions(-) diff --git a/srcpkgs/cross-arm-linux-gnueabihf/template b/srcpkgs/cross-arm-linux-gnueabihf/template index 4e46ba1e306..f21a4ebb485 100644 --- a/srcpkgs/cross-arm-linux-gnueabihf/template +++ b/srcpkgs/cross-arm-linux-gnueabihf/template @@ -1,22 +1,21 @@ -# Template build file for 'cross-arm-linux-gnueabihf' -# +# Template file for 'cross-arm-linux-gnueabihf' +_triplet=arm-linux-gnueabihf _binutils_version=2.32 _gcc_version=9.3.0 _glibc_version=2.30 _linux_version=4.19 - -_triplet=arm-linux-gnueabihf -_fpuflags="--with-arch=armv6 --with-fpu=vfp --with-float=hard" -_archflags="-march=armv6 -mfpu=vfp -mfloat-abi=hard" -_sysroot="/usr/${_triplet}" - pkgname=cross-${_triplet} version=0.33 revision=2 -short_desc="GNU Cross toolchain for the ${_triplet} LE target (binutils/gcc/glibc)" +build_style=void-cross +configure_args="--with-arch=armv6 --with-fpu=vfp --with-float=hard" +hostmakedepends="tar gcc-objc gcc-go flex perl python3" +makedepends="isl15-devel libmpc-devel zlib-devel gmp-devel mpfr-devel" +depends="${pkgname}-libc-${version}_${revision}" +short_desc="Void cross toolchain for ${_triplet}" maintainer="Orphaned " +license="GPL-2.0-or-later, GPL-3.0-or-later, LGPL-2.1-or-later" homepage="https://www.voidlinux.org/" -license="Public Domain" distfiles=" ${GNU_SITE}/binutils/binutils-${_binutils_version}.tar.xz ${GNU_SITE}/gcc/gcc-${_gcc_version}/gcc-${_gcc_version}.tar.xz @@ -27,346 +26,20 @@ checksum="0ab6c55dd86a92ed561972ba15b9b70a8b9f75557f896446c82e8b36e473ee04 e2c4114e569afbe7edbc29131a43be833850ab9a459d81beb2588016d2bbb8af 0c68f5655528aed4f99dae71a5b259edc93239fa899e2df79c055275c21749a1" -lib32disabled=yes -nocross=yes -nopie=yes -nodebug=yes -create_wrksrc=yes - -hostmakedepends="tar gcc-objc gcc-go flex perl python3" -makedepends="isl15-devel libmpc-devel zlib-devel" -depends="${pkgname}-libc-${version}_${revision}" -nostrip_files="libcaf_single.a libgcc.a libgcov.a libgcc_eh.a - libgnarl_pic.a libgnarl.a libgnat_pic.a libgnat.a libgmem.a" - -if [ "$XBPS_TARGET_LIBC" != "glibc" ]; then - broken="glibc crosstoolchain only available on glibc" -fi +cross_triplet=${_triplet} +cross_wordsize=32 +cross_libc=glibc +cross_binutils_version=${_binutils_version} +cross_gcc_version=${_gcc_version} +cross_glibc_version=${_glibc_version} +cross_linux_version=${_linux_version} +cross_linux_arch=arm +cross_glibc_cflags="-Os -march=armv6 -mfpu=vfp -mfloat-abi=hard" if [ "$XBPS_TARGET_MACHINE" = "armv6l" ]; then broken="Can't build crosstoolchain to itself" fi -_apply_patch() { - local args="$1" pname="$(basename $2)" - - if [ ! -f ".${pname}_done" ]; then - patch -N $args -i $2 - touch .${pname}_done - fi -} - -_linux_headers() { - [ -f ${wrksrc}/.linux_build_done ] && return 0 - - cd ${wrksrc} - msg_normal "Building Linux API headers for ARM\n" - - cd linux-${_linux_version} - - make ARCH=arm headers_check - make ARCH=arm INSTALL_HDR_PATH=${_sysroot}/usr headers_install - - touch ${wrksrc}/.linux_build_done -} - -_binutils_build() { - local _args - - [ -f ${wrksrc}/.binutils_build_done ] && return 0 - - cd ${wrksrc} - msg_normal "Building cross binutils\n" - [ ! -d binutils-build ] && mkdir binutils-build - cd binutils-build - - _args="--prefix=/usr" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --disable-nls" - _args+=" --disable-shared" - _args+=" --disable-multilib" - _args+=" --disable-werror" - _args+=" --with-system-zlib" - - ../binutils-${_binutils_version}/configure ${_args} - - make configure-host - make ${makejobs} - make install - - touch ${wrksrc}/.binutils_build_done -} - -_gcc_bootstrap() { - local _args - - [ -f ${wrksrc}/.gcc_bootstrap_done ] && return 0 - - cd ${wrksrc}/gcc-${_gcc_version} - for f in ${XBPS_SRCPKGDIR}/gcc/patches/*.patch; do - _apply_patch -p0 "$f" - done - - msg_normal "Building cross gcc bootstrap\n" - - [ ! -d ../gcc-bootstrap ] && mkdir ../gcc-bootstrap - cd ../gcc-bootstrap - - _args="--prefix=/usr" - _args+=" --target=${_triplet}" - _args+=" --without-headers" - _args+=" --disable-nls" - _args+=" --disable-shared" - _args+=" --disable-libquadmath" - _args+=" --disable-decimal-float" - _args+=" --disable-libgomp" - _args+=" --disable-libmpx" - _args+=" --disable-libmudflap" - _args+=" --disable-libssp" - _args+=" --disable-libitm" - _args+=" --disable-libatomic" - _args+=" --disable-threads" - _args+=" --enable-languages=c" - _args+=" --disable-sjlj-exceptions" - _args+=" --disable-multilib" - _args+=" --with-gnu-ld" - _args+=" --with-gnu-as" - _args+=" ${_fpuflags}" - - CFLAGS="-O0 -g0" CXXFLAGS="-O0 -g0" \ - ../gcc-${_gcc_version}/configure ${_args} - - make ${makejobs} - make install - - touch ${wrksrc}/.gcc_bootstrap_done -} - -_glibc_headers() { - local _args f - - [ -f ${wrksrc}/.glibc_headers_done ] && return 0 - - cd ${wrksrc}/glibc-${_glibc_version} - if [ -d "${XBPS_SRCPKGDIR}/glibc/patches" ]; then - for f in ${XBPS_SRCPKGDIR}/glibc/patches/*.patch; do - _apply_patch -p1 "$f" - done - fi - - cd ${wrksrc} - msg_normal "Building cross glibc headers\n" - - [ ! -d glibc-headers ] && mkdir glibc-headers - cd glibc-headers - - echo "libc_cv_forced_unwind=yes" > config.cache - echo "libc_cv_c_cleanup=yes" >> config.cache - - export CC="${_triplet}-gcc" LD="${_triplet}-ld" \ - AS="${_triplet}-as" CPP="${_triplet}-cpp" - - _args="--prefix=/usr" - _args+=" --host=${_triplet}" - _args+=" --with-headers=${_sysroot}/usr/include" - _args+=" --config-cache" - _args+=" --enable-obsolete-rpc" - _args+=" --enable-obsolete-nsl" - _args+=" --enable-kernel=2.6.27" - _args+=" ${_fpuflags}" - - ../glibc-${_glibc_version}/configure ${_args} - - make -k install-headers cross_compiling=yes \ - install_root=${_sysroot} - - touch ${wrksrc}/.glibc_headers_done -} - -_glibc_build() { - local _args - - [ -f ${wrksrc}/.glibc_build_done ] && return 0 - - cd ${wrksrc} - msg_normal "Building cross glibc\n" - - [ ! -d glibc-build ] && mkdir glibc-build - cd glibc-build - - echo "slibdir=/usr/lib32" > configparms - - echo "libc_cv_forced_unwind=yes" > config.cache - echo "libc_cv_c_cleanup=yes" >> config.cache - - export CC="${_triplet}-gcc" LD="${_triplet}-ld" \ - AS="${_triplet}-as" CPP="${_triplet}-cpp" - export CFLAGS="-Os -pipe ${_archflags}" - - _args="--prefix=/usr" - _args+=" --libdir=/usr/lib32" - _args+=" --host=${_triplet}" - _args+=" --with-headers=${_sysroot}/usr/include" - _args+=" --config-cache" - _args+=" --disable-profile" - _args+=" --enable-obsolete-rpc" - _args+=" --enable-obsolete-nsl" - _args+=" --disable-werror" - _args+=" --enable-kernel=2.6.27" - _args+=" ${_fpuflags}" - - ../glibc-${_glibc_version}/configure ${_args} - - make ${makejobs} - make install_root=${_sysroot} install - - touch ${wrksrc}/.glibc_build_done -} - -_gcc_build() { - local _args - - [ -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 - - unset LD AS CPP - export CC="gcc" CFLAGS="-Os -pipe" - - # Make this link to target libs. - if [ ! -f .sed_subst_done ]; then - sed -e "s, /lib/, ${_sysroot}/lib/,g;s, /usr/lib/, ${_sysroot}/usr/lib/,g" \ - -i ${_sysroot}/lib/libc.so - sed -e "s, /lib32/, ${_sysroot}/lib32/,g;s, /usr/lib32/, ${_sysroot}/usr/lib32/,g" \ - -i ${_sysroot}/lib/libc.so - touch .sed_subst_done - fi - _args="--prefix=/usr" - _args+=" --libexecdir=/usr/lib" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --enable-languages=c,ada,c++,objc,obj-c++,go,fortran,lto" - _args+=" --with-gnu-as" - _args+=" --with-gnu-ld" - _args+=" --disable-multilib" - _args+=" --disable-werror" - _args+=" --disable-nls" - _args+=" --disable-sjlj-exceptions" - _args+=" --enable-threads=posix" - _args+=" --enable-long-longx" - _args+=" --enable-shared" - _args+=" --enable-linker-build-id" - _args+=" --enable-gnu-unique-object" - _args+=" --enable-libada" - _args+=" --enable-lto" - _args+=" --enable-default-pie" - _args+=" --enable-default-ssp" - _args+=" --disable-libquadmath" - _args+=" --disable-libssp" - _args+=" --disable-libmpx" - _args+=" --disable-libmudflap" - _args+=" --disable-libsanitizer" - _args+=" --disable-libcilkrts" - _args+=" --disable-libitm" - _args+=" --disable-libvtv" - _args+=" --disable-libstdcxx-pch" - _args+=" --enable-libstdcxx-time" - _args+=" --with-linker-hash-style=gnu" - _args+=" ${_fpuflags}" - - ../gcc-${_gcc_version}/configure ${_args} - - make ${makejobs} - - touch ${wrksrc}/.gcc_build_done -} - -do_build() { - 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 - ln -sf lib ${_sysroot}/usr/lib32 - ln -sf usr/lib ${_sysroot}/lib32 - - # Ensure we use sane environment - unset CC CXX CPP LD AS AR RANLIB OBJDUMP READELF NM - unset CFLAGS CXXFLAGS CPPFLAGS LDFLAGS - export CFLAGS="-Os" CXXFLAGS="-Os" - - _binutils_build - _gcc_bootstrap - _linux_headers - _glibc_headers - _glibc_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 - ln -sf lib ${DESTDIR}/${_sysroot}/usr/lib32 - ln -sf usr/lib ${DESTDIR}/${_sysroot}/lib32 - - # install cross binutils - cd ${wrksrc}/binutils-build - make DESTDIR=${DESTDIR} install - - # install cross gcc - cd ${wrksrc}/gcc-build - make DESTDIR=${DESTDIR} install - - # move libcc1.so* to the sysroot - mv ${DESTDIR}/usr/lib/libcc1.so* ${DESTDIR}/${_sysroot}/usr/lib - - # install linux API headers for MIPS - 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 glibc for target - cd ${wrksrc}/glibc-build - make install_root=${DESTDIR}/${_sysroot} install install-headers - - # symlinks for gnarl and gnat shared libraries - _majorver=${_gcc_version%.*.*} - _adalib=usr/lib/gcc/${_triplet}/${_gcc_version}/adalib - mv -v ${DESTDIR}/${_adalib}/libgnarl-${_majorver}.so ${DESTDIR}/${_sysroot}/usr/lib - mv -v ${DESTDIR}/${_adalib}/libgnat-${_majorver}.so ${DESTDIR}/${_sysroot}/usr/lib - ln -svf libgnarl-${_majorver}.so libgnarl.so - ln -svf libgnat-${_majorver}.so libgnat.so - rm -vf ${DESTDIR}/${_adalib}/libgna{rl,t}.so - - # We need to build libatomic in target gcc as gccgo needs it to - # build... but it's not needed at runtime, so remove it from the - # destdir so it doesn't conflict with the libatomic package - rm -f ${DESTDIR}/${_sysroot}/usr/lib/libatomic.* - - # Remove unnecessary stuff - rm -f ${DESTDIR}/usr/lib*/libiberty.a - rm -rf ${DESTDIR}/usr/share - rm -rf ${DESTDIR}/${_sysroot}/{sbin,lib,etc,var} - rm -rf ${DESTDIR}/${_sysroot}/usr/{sbin,share,libexec} - rm -f ${DESTDIR}/${_sysroot}/libexec -} - cross-arm-linux-gnueabihf-libc_package() { short_desc+=" - glibc files" nostrip=yes @@ -374,6 +47,6 @@ cross-arm-linux-gnueabihf-libc_package() { noverifyrdeps=yes pkg_install() { - vmove ${_sysroot} + vmove usr/${cross_triplet} } } From ef9172b819b977bb27090c4c908623455b611f3d Mon Sep 17 00:00:00 2001 From: q66 Date: Fri, 25 Dec 2020 21:08:27 +0100 Subject: [PATCH 07/16] cross-arm-linux-musleabi: rework with void-cross --- srcpkgs/cross-arm-linux-musleabi/template | 311 ++-------------------- 1 file changed, 22 insertions(+), 289 deletions(-) diff --git a/srcpkgs/cross-arm-linux-musleabi/template b/srcpkgs/cross-arm-linux-musleabi/template index 74b8e8d4c11..49ea7c5b97d 100644 --- a/srcpkgs/cross-arm-linux-musleabi/template +++ b/srcpkgs/cross-arm-linux-musleabi/template @@ -1,20 +1,19 @@ -# Template build file for 'cross-arm-linux-musleabi' -# +# Template file for 'cross-arm-linux-musleabi' +_triplet=arm-linux-musleabi _binutils_version=2.32 _gcc_version=9.3.0 _musl_version=1.1.24 _linux_version=4.19 _libucontext_version=0.9.0 - -_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.33 revision=3 -short_desc="Cross toolchain for ARMv5 TE target (musl)" +build_style=void-cross +configure_args="--with-arch=armv5te --with-float=soft" +hostmakedepends="tar gcc-objc gcc-go flex perl python3" +makedepends="isl15-devel libmpc-devel zlib-devel gmp-devel mpfr-devel" +depends="${pkgname}-libc-${version}_${revision}" +short_desc="Void cross toolchain for ${_triplet}" maintainer="Orphaned " homepage="https://www.voidlinux.org/" license="GPL-2.0-or-later, GPL-3.0-or-later, MIT" @@ -30,296 +29,30 @@ checksum="0ab6c55dd86a92ed561972ba15b9b70a8b9f75557f896446c82e8b36e473ee04 0c68f5655528aed4f99dae71a5b259edc93239fa899e2df79c055275c21749a1 0d53a415a307ef175153bbe60a572c940a922cb736ce13530b666e7ec2795d68" -lib32disabled=yes -nocross=yes -nopie=yes -nodebug=yes -create_wrksrc=yes - -hostmakedepends="tar gcc-objc gcc-go flex perl python3" -makedepends="zlib-devel gmp-devel mpfr-devel libmpc-devel isl15-devel" -nostrip_files="libcaf_single.a libgcc.a libgcov.a libgcc_eh.a - libgnarl_pic.a libgnarl.a libgnat_pic.a libgnat.a libgmem.a" -depends="${pkgname}-libc-${version}_${revision}" +cross_triplet=${_triplet} +cross_wordsize=32 +cross_libc=musl +cross_binutils_version=${_binutils_version} +cross_gcc_version=${_gcc_version} +cross_musl_version=${_musl_version} +cross_linux_version=${_linux_version} +cross_libucontext_version=${_libucontext_version} +cross_libucontext_arch=arm +cross_linux_arch=arm +cross_binutils_configure_args="--without-fp" +cross_musl_cflags="-Os -march=armv5te -msoft-float -mfloat-abi=soft" if [ "$XBPS_TARGET_MACHINE" = "armv5tel-musl" ]; then broken="Can't build crosstoolchain to itself" fi -_apply_patch() { - local args="$1" pname="$(basename $2)" - - if [ ! -f ".${pname}_done" ]; then - patch -N $args -i $2 - touch .${pname}_done - fi -} - -_binutils_build() { - local _args - - [ -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 - - _args="--prefix=/usr" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --disable-nls" - _args+=" --disable-multilib" - _args+=" --disable-werror" - _args+=" --disable-shared" - _args+=" --with-system-zlib" - _args+=" ${_fpuflags}" - - ../binutils-${_binutils_version}/configure ${_args} - - make configure-host && make ${makejobs} - make install - - touch ${wrksrc}/.binutils_build_done -} - -_gcc_bootstrap() { - local _args - - [ -f ${wrksrc}/.gcc_bootstrap_done ] && return 0 - - cd ${wrksrc}/gcc-${_gcc_version} - for f in ${XBPS_SRCPKGDIR}/gcc/patches/*.patch; do - _apply_patch -p0 "$f" - done - for f in ${XBPS_SRCPKGDIR}/gcc/files/*-musl.patch; do - _apply_patch -p1 "$f" - done - - msg_normal "Building cross gcc bootstrap\n" - - [ ! -d ../gcc-bootstrap ] && mkdir ../gcc-bootstrap - cd ../gcc-bootstrap - - _args="--prefix=/usr" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --with-newlib" - _args+=" --enable-languages=c" - _args+=" --with-newlib" - _args+=" --disable-libssp" - _args+=" --disable-nls" - _args+=" --disable-libquadmath" - _args+=" --disable-threads" - _args+=" --disable-decimal-float" - _args+=" --disable-shared" - _args+=" --disable-libmpx" - _args+=" --disable-libmudflap" - _args+=" --disable-libgomp" - _args+=" --disable-libatomic" - _args+=" --disable-symvers" - _args+=" libat_cv_have_ifunc=no" - _args+=" ${_fpuflags}" - - CFLAGS="-O0 -g0" CXXFLAGS="-O0 -g0" \ - ../gcc-${_gcc_version}/configure ${_args} - - 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" - - # Apply musl patches if there are any - if [ -d "${XBPS_SRCPKGDIR}/musl/patches" ]; then - for f in ${XBPS_SRCPKGDIR}/musl/patches/*.patch; do - _apply_patch -p0 "$f" - done - fi - - CC="${_triplet}-gcc" CFLAGS="-Os -pipe -fPIC ${_archflags}" \ - ./configure --prefix=/usr - - make ${makejobs} - make DESTDIR=${_sysroot} install - - touch ${wrksrc}/.musl_build_done -} - -_libucontext_build() { - [ -f ${wrksrc}/.libucontext_build_done ] && return 0 - - cd ${wrksrc}/libucontext-${_libucontext_version} - msg_normal "Building cross libucontext\n" - - # it's ok if we're static only here - CC="${_triplet}-gcc" AR="${_triplet}-ar" AS="${_triplet}-as" \ - CFLAGS="-Os -pipe ${_archflags}" \ - make ARCH=arm libucontext.a - - cp libucontext.a ${_sysroot}/usr/lib - - touch ${wrksrc}/.libucontext_build_done -} - -_gcc_build() { - local _args - - [ -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 - - _args="--prefix=/usr" - _args+=" --libexecdir=/usr/lib" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --enable-languages=c,ada,c++,objc,obj-c++,go,fortran,lto" - _args+=" --enable-libada" - _args+=" --enable-lto" - _args+=" --enable-default-pie" - _args+=" --enable-default-ssp" - _args+=" --enable-libssp" - _args+=" --disable-libsanitizer" - _args+=" --disable-multilib" - _args+=" --disable-nls" - _args+=" --disable-libmpx" - _args+=" --disable-libmudflap" - _args+=" --disable-libquadmath" - _args+=" --enable-shared" - _args+=" --disable-symvers" - _args+=" libat_cv_have_ifunc=no" - _args+=" ${_fpuflags}" - - ../gcc-${_gcc_version}/configure ${_args} - - 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 - ln -sf lib ${_sysroot}/usr/lib32 - ln -sf usr/lib ${_sysroot}/lib32 - - _binutils_build - _gcc_bootstrap - _linux_headers - _musl_build - _libucontext_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 - ln -sf lib ${DESTDIR}/${_sysroot}/usr/lib32 - ln -sf usr/lib ${DESTDIR}/${_sysroot}/lib32 - - # 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 - - # move libcc1.so* to the sysroot - mv ${DESTDIR}/usr/lib/libcc1.so* ${DESTDIR}/${_sysroot}/usr/lib - - # 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 - - # symlinks for gnarl and gnat shared libraries - _majorver=${_gcc_version%.*.*} - _adalib=usr/lib/gcc/${_triplet}/${_gcc_version}/adalib - mv -v ${DESTDIR}/${_adalib}/libgnarl-${_majorver}.so ${DESTDIR}/${_sysroot}/usr/lib - mv -v ${DESTDIR}/${_adalib}/libgnat-${_majorver}.so ${DESTDIR}/${_sysroot}/usr/lib - ln -svf libgnarl-${_majorver}.so libgnarl.so - ln -svf libgnat-${_majorver}.so libgnat.so - rm -vf ${DESTDIR}/${_adalib}/libgna{rl,t}.so - - # We need to build libatomic in target gcc as gccgo needs it to - # build... but it's not needed at runtime, so remove it from the - # destdir so it doesn't conflict with the libatomic package - rm -f ${DESTDIR}/${_sysroot}/usr/lib/libatomic.* - - # 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}/{sbin,lib} -} - cross-arm-linux-musleabi-libc_package() { short_desc+=" - libc files" nostrip=yes noshlibprovides=yes noverifyrdeps=yes + pkg_install() { - vmove ${_sysroot} + vmove usr/${cross_triplet} } } From c0a20080b1281721347ad6552f78c857a986dfa1 Mon Sep 17 00:00:00 2001 From: q66 Date: Fri, 25 Dec 2020 21:08:39 +0100 Subject: [PATCH 08/16] cross-arm-linux-musleabihf: rework with void-cross --- srcpkgs/cross-arm-linux-musleabihf/template | 309 ++------------------ 1 file changed, 21 insertions(+), 288 deletions(-) diff --git a/srcpkgs/cross-arm-linux-musleabihf/template b/srcpkgs/cross-arm-linux-musleabihf/template index 92e25f49e47..f8b5366f228 100644 --- a/srcpkgs/cross-arm-linux-musleabihf/template +++ b/srcpkgs/cross-arm-linux-musleabihf/template @@ -1,20 +1,19 @@ -# Template build file for 'cross-arm-linux-musleabihf' -# +# Template file for 'cross-arm-linux-musleabihf' +_triplet=arm-linux-musleabihf _binutils_version=2.32 _gcc_version=9.3.0 _musl_version=1.1.24 _linux_version=4.19 _libucontext_version=0.9.0 - -_triplet=arm-linux-musleabihf -_fpuflags="--with-arch=armv6 --with-fpu=vfp --with-float=hard" -_archflags="-march=armv6 -mfpu=vfp -mfloat-abi=hard" -_sysroot="/usr/${_triplet}" - pkgname=cross-${_triplet} version=0.33 revision=3 -short_desc="Cross toolchain for ARMv6 LE Hard Float target (musl)" +build_style=void-cross +configure_args="--with-arch=armv6 --with-fpu=vfp --with-float=hard" +hostmakedepends="tar gcc-objc gcc-go flex perl python3" +makedepends="isl15-devel libmpc-devel zlib-devel gmp-devel mpfr-devel" +depends="${pkgname}-libc-${version}_${revision}" +short_desc="Void cross toolchain for ${_triplet}" maintainer="Orphaned " homepage="https://www.voidlinux.org/" license="GPL-2.0-or-later, GPL-3.0-or-later, MIT" @@ -30,295 +29,29 @@ checksum="0ab6c55dd86a92ed561972ba15b9b70a8b9f75557f896446c82e8b36e473ee04 0c68f5655528aed4f99dae71a5b259edc93239fa899e2df79c055275c21749a1 0d53a415a307ef175153bbe60a572c940a922cb736ce13530b666e7ec2795d68" -lib32disabled=yes -nocross=yes -nopie=yes -nodebug=yes -create_wrksrc=yes - -hostmakedepends="tar gcc-objc gcc-go flex perl python3" -makedepends="zlib-devel gmp-devel mpfr-devel libmpc-devel isl15-devel" -nostrip_files="libcaf_single.a libgcc.a libgcov.a libgcc_eh.a - libgnarl_pic.a libgnarl.a libgnat_pic.a libgnat.a libgmem.a" -depends="${pkgname}-libc-${version}_${revision}" +cross_triplet=${_triplet} +cross_wordsize=32 +cross_libc=musl +cross_binutils_version=${_binutils_version} +cross_gcc_version=${_gcc_version} +cross_musl_version=${_musl_version} +cross_linux_version=${_linux_version} +cross_libucontext_version=${_libucontext_version} +cross_libucontext_arch=arm +cross_linux_arch=arm +cross_musl_cflags="-Os -march=armv6 -mfpu=vfp -mfloat-abi=hard" if [ "$XBPS_TARGET_MACHINE" = "armv6l-musl" ]; then broken="Can't build crosstoolchain to itself" fi -_apply_patch() { - local args="$1" pname="$(basename $2)" - - if [ ! -f ".${pname}_done" ]; then - patch -N $args -i $2 - touch .${pname}_done - fi -} - -_binutils_build() { - local _args - - [ -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 - - _args="--prefix=/usr" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --disable-nls" - _args+=" --disable-multilib" - _args+=" --disable-werror" - _args+=" --disable-shared" - _args+=" --with-system-zlib" - _args+=" ${_fpuflags}" - - ../binutils-${_binutils_version}/configure ${_args} - - make configure-host && make ${makejobs} - make install - - touch ${wrksrc}/.binutils_build_done -} - -_gcc_bootstrap() { - local _args - - [ -f ${wrksrc}/.gcc_bootstrap_done ] && return 0 - - cd ${wrksrc}/gcc-${_gcc_version} - for f in ${XBPS_SRCPKGDIR}/gcc/patches/*.patch; do - _apply_patch -p0 "$f" - done - for f in ${XBPS_SRCPKGDIR}/gcc/files/*-musl.patch; do - _apply_patch -p1 "$f" - done - - msg_normal "Building cross gcc bootstrap\n" - - [ ! -d ../gcc-bootstrap ] && mkdir ../gcc-bootstrap - cd ../gcc-bootstrap - - _args="--prefix=/usr" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --with-newlib" - _args+=" --enable-languages=c" - _args+=" --with-newlib" - _args+=" --disable-libssp" - _args+=" --disable-nls" - _args+=" --disable-libquadmath" - _args+=" --disable-threads" - _args+=" --disable-decimal-float" - _args+=" --disable-shared" - _args+=" --disable-libmpx" - _args+=" --disable-libmudflap" - _args+=" --disable-libgomp" - _args+=" --disable-libatomic" - _args+=" --disable-symvers" - _args+=" libat_cv_have_ifunc=no" - _args+=" ${_fpuflags}" - - CFLAGS="-O0 -g0" CXXFLAGS="-O0 -g0" \ - ../gcc-${_gcc_version}/configure ${_args} - - 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" - - # Apply musl patches if there are any - if [ -d "${XBPS_SRCPKGDIR}/musl/patches" ]; then - for f in ${XBPS_SRCPKGDIR}/musl/patches/*.patch; do - _apply_patch -p0 "$f" - done - fi - - CC="${_triplet}-gcc" CFLAGS="-Os -pipe -fPIC ${_archflags}" \ - ./configure --prefix=/usr - - make ${makejobs} - make DESTDIR=${_sysroot} install - - touch ${wrksrc}/.musl_build_done -} - -_libucontext_build() { - [ -f ${wrksrc}/.libucontext_build_done ] && return 0 - - cd ${wrksrc}/libucontext-${_libucontext_version} - msg_normal "Building cross libucontext\n" - - # it's ok if we're static only here - CC="${_triplet}-gcc" AR="${_triplet}-ar" AS="${_triplet}-as" \ - CFLAGS="-Os -pipe ${_archflags}" \ - make ARCH=arm libucontext.a - - cp libucontext.a ${_sysroot}/usr/lib - - touch ${wrksrc}/.libucontext_build_done -} - -_gcc_build() { - local _args - [ -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 - - _args="--prefix=/usr" - _args+=" --libexecdir=/usr/lib" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --enable-languages=c,ada,c++,objc,obj-c++,go,fortran,lto" - _args+=" --enable-libada" - _args+=" --enable-lto" - _args+=" --enable-default-pie" - _args+=" --enable-default-ssp" - _args+=" --enable-libssp" - _args+=" --disable-libsanitizer" - _args+=" --disable-multilib" - _args+=" --disable-nls" - _args+=" --disable-libquadmath" - _args+=" --disable-libmpx" - _args+=" --disable-libmudflap" - _args+=" --enable-shared" - _args+=" --disable-symvers" - _args+=" libat_cv_have_ifunc=no" - _args+=" ${_fpuflags}" - - ../gcc-${_gcc_version}/configure ${_args} - - 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 - ln -sf lib ${_sysroot}/usr/lib32 - ln -sf usr/lib ${_sysroot}/lib32 - - _binutils_build - _gcc_bootstrap - _linux_headers - _musl_build - _libucontext_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 - ln -sf lib ${DESTDIR}/${_sysroot}/usr/lib32 - ln -sf usr/lib ${DESTDIR}/${_sysroot}/lib32 - - # 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 - - # move libcc1.so* to the sysroot - mv ${DESTDIR}/usr/lib/libcc1.so* ${DESTDIR}/${_sysroot}/usr/lib - - # 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-armhf.so.1 symlink relative. - ln -sf libc.so ${DESTDIR}/${_sysroot}/usr/lib/ld-musl-armhf.so.1 - - # symlinks for gnarl and gnat shared libraries - _majorver=${_gcc_version%.*.*} - _adalib=usr/lib/gcc/${_triplet}/${_gcc_version}/adalib - mv -v ${DESTDIR}/${_adalib}/libgnarl-${_majorver}.so ${DESTDIR}/${_sysroot}/usr/lib - mv -v ${DESTDIR}/${_adalib}/libgnat-${_majorver}.so ${DESTDIR}/${_sysroot}/usr/lib - ln -svf libgnarl-${_majorver}.so libgnarl.so - ln -svf libgnat-${_majorver}.so libgnat.so - rm -vf ${DESTDIR}/${_adalib}/libgna{rl,t}.so - - # We need to build libatomic in target gcc as gccgo needs it to - # build... but it's not needed at runtime, so remove it from the - # destdir so it doesn't conflict with the libatomic package - rm -f ${DESTDIR}/${_sysroot}/usr/lib/libatomic.* - - # 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}/{sbin,lib} -} - cross-arm-linux-musleabihf-libc_package() { short_desc+=" - libc files" nostrip=yes noshlibprovides=yes noverifyrdeps=yes + pkg_install() { - vmove ${_sysroot} + vmove usr/${cross_triplet} } } From c7f7557e205de5cc9e5148c805faa1fb7c7f0d52 Mon Sep 17 00:00:00 2001 From: q66 Date: Fri, 25 Dec 2020 21:36:33 +0100 Subject: [PATCH 09/16] cross-armv7l-linux-gnueabihf: rework with void-cross --- srcpkgs/cross-armv7l-linux-gnueabihf/template | 369 +----------------- 1 file changed, 21 insertions(+), 348 deletions(-) diff --git a/srcpkgs/cross-armv7l-linux-gnueabihf/template b/srcpkgs/cross-armv7l-linux-gnueabihf/template index 9696697dceb..706662e5ed2 100644 --- a/srcpkgs/cross-armv7l-linux-gnueabihf/template +++ b/srcpkgs/cross-armv7l-linux-gnueabihf/template @@ -1,379 +1,52 @@ -# Template build file for 'cross-armv7l-linux-gnueabihf' -# +# Template file for 'cross-armv7l-linux-gnueabihf' +_triplet=armv7l-linux-gnueabihf _binutils_version=2.32 _gcc_version=9.3.0 _glibc_version=2.30 _linux_version=4.19 - -_triplet=armv7l-linux-gnueabihf -_fpuflags="--with-arch=armv7-a --with-fpu=vfpv3 --with-float=hard" -_archflags="-march=armv7-a -mfpu=vfpv3 -mfloat-abi=hard" -_sysroot="/usr/${_triplet}" - pkgname=cross-${_triplet} version=0.33 revision=2 -short_desc="GNU Cross toolchain for the ${_triplet} LE target (binutils/gcc/glibc)" +build_style=void-cross +configure_args="--with-arch=armv7-a --with-fpu=vfpv3 --with-float=hard" +hostmakedepends="tar gcc-objc gcc-go flex perl python3" +makedepends="isl15-devel libmpc-devel zlib-devel gmp-devel mpfr-devel" +depends="${pkgname}-libc-${version}_${revision}" +short_desc="Void cross toolchain for ${_triplet}" maintainer="Orphaned " -homepage="https://www.voidlinux.org/" license="GPL-2.0-or-later, GPL-3.0-or-later, LGPL-2.1-or-later" +homepage="https://www.voidlinux.org/" distfiles=" ${GNU_SITE}/binutils/binutils-${_binutils_version}.tar.xz ${GNU_SITE}/gcc/gcc-${_gcc_version}/gcc-${_gcc_version}.tar.xz - http://ftp.gnu.org/gnu/glibc/glibc-${_glibc_version}.tar.xz + ${GNU_SITE}/glibc/glibc-${_glibc_version}.tar.xz ${KERNEL_SITE}/kernel/v4.x/linux-${_linux_version}.tar.xz" checksum="0ab6c55dd86a92ed561972ba15b9b70a8b9f75557f896446c82e8b36e473ee04 71e197867611f6054aa1119b13a0c0abac12834765fe2d81f35ac57f84f742d1 e2c4114e569afbe7edbc29131a43be833850ab9a459d81beb2588016d2bbb8af 0c68f5655528aed4f99dae71a5b259edc93239fa899e2df79c055275c21749a1" -lib32disabled=yes -nocross=yes -nopie=yes -nodebug=yes -create_wrksrc=yes - -hostmakedepends="tar gcc-objc gcc-go flex perl python3" -makedepends="isl15-devel libmpc-devel zlib-devel" -depends="${pkgname}-libc-${version}_${revision}" -nostrip_files="libcaf_single.a libgcc.a libgcov.a libgcc_eh.a - libgnarl_pic.a libgnarl.a libgnat_pic.a libgnat.a libgmem.a" - -if [ "$XBPS_TARGET_LIBC" != "glibc" ]; then - broken="glibc crosstoolchain only available on glibc" -fi +cross_triplet=${_triplet} +cross_wordsize=32 +cross_libc=glibc +cross_binutils_version=${_binutils_version} +cross_gcc_version=${_gcc_version} +cross_glibc_version=${_glibc_version} +cross_linux_version=${_linux_version} +cross_linux_arch=arm +cross_glibc_cflags="-O2 -march=armv7-a -mfpu=vfpv3 -mfloat-abi=hard" if [ "$XBPS_TARGET_MACHINE" = "armv7l" ]; then broken="Can't build crosstoolchain to itself" fi -_apply_patch() { - local args="$1" pname="$(basename $2)" - - if [ ! -f ".${pname}_done" ]; then - patch -N $args -i $2 - touch .${pname}_done - fi -} - -_linux_headers() { - [ -f ${wrksrc}/.linux_build_done ] && return 0 - - cd ${wrksrc} - msg_normal "Building Linux API headers for ARM\n" - - cd linux-${_linux_version} - - make ARCH=arm headers_check - make ARCH=arm INSTALL_HDR_PATH=${_sysroot}/usr headers_install - - touch ${wrksrc}/.linux_build_done -} - -_binutils_build() { - local _args - - [ -f ${wrksrc}/.binutils_build_done ] && return 0 - - cd ${wrksrc} - msg_normal "Building cross binutils\n" - [ ! -d binutils-build ] && mkdir binutils-build - cd binutils-build - - _args="--prefix=/usr" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --disable-nls" - _args+=" --disable-shared" - _args+=" --disable-multilib" - _args+=" --disable-werror" - _args+=" --with-system-zlib" - - ../binutils-${_binutils_version}/configure ${_args} - - make configure-host - make ${makejobs} - make install - - touch ${wrksrc}/.binutils_build_done -} - -_gcc_bootstrap() { - local _args - - [ -f ${wrksrc}/.gcc_bootstrap_done ] && return 0 - - cd ${wrksrc}/gcc-${_gcc_version} - for f in ${XBPS_SRCPKGDIR}/gcc/patches/*.patch; do - _apply_patch -p0 "$f" - done - - msg_normal "Building cross gcc bootstrap\n" - - [ ! -d ../gcc-bootstrap ] && mkdir ../gcc-bootstrap - cd ../gcc-bootstrap - - _args="--prefix=/usr" - _args+=" --target=${_triplet}" - _args+=" --without-headers" - _args+=" --disable-nls" - _args+=" --disable-shared" - _args+=" --disable-libquadmath" - _args+=" --disable-decimal-float" - _args+=" --disable-libgomp" - _args+=" --disable-libmpx" - _args+=" --disable-libmudflap" - _args+=" --disable-libssp" - _args+=" --disable-libitm" - _args+=" --disable-libatomic" - _args+=" --disable-threads" - _args+=" --enable-languages=c" - _args+=" --disable-sjlj-exceptions" - _args+=" --disable-multilib" - _args+=" --with-gnu-ld" - _args+=" --with-gnu-as" - _args+=" ${_fpuflags}" - - CFLAGS="-O0 -g0" CXXFLAGS="-O0 -g0" \ - ../gcc-${_gcc_version}/configure ${_args} - - make ${makejobs} - make install - - touch ${wrksrc}/.gcc_bootstrap_done -} - -_glibc_headers() { - local _args f - - [ -f ${wrksrc}/.glibc_headers_done ] && return 0 - - cd ${wrksrc}/glibc-${_glibc_version} - if [ -d "${XBPS_SRCPKGDIR}/glibc/patches" ]; then - for f in ${XBPS_SRCPKGDIR}/glibc/patches/*.patch; do - _apply_patch -p1 "$f" - done - fi - - cd ${wrksrc} - msg_normal "Building cross glibc headers\n" - - [ ! -d glibc-headers ] && mkdir glibc-headers - cd glibc-headers - - echo "libc_cv_forced_unwind=yes" > config.cache - echo "libc_cv_c_cleanup=yes" >> config.cache - - export CC="${_triplet}-gcc" LD="${_triplet}-ld" \ - AS="${_triplet}-as" CPP="${_triplet}-cpp" - - _args="--prefix=/usr" - _args+=" --host=${_triplet}" - _args+=" --with-headers=${_sysroot}/usr/include" - _args+=" --config-cache" - _args+=" --enable-obsolete-rpc" - _args+=" --enable-obsolete-nsl" - _args+=" --enable-kernel=2.6.27" - _args+=" ${_fpuflags}" - - ../glibc-${_glibc_version}/configure ${_args} - - make -k install-headers cross_compiling=yes \ - install_root=${_sysroot} - - touch ${wrksrc}/.glibc_headers_done -} - -_glibc_build() { - local _args - - [ -f ${wrksrc}/.glibc_build_done ] && return 0 - - cd ${wrksrc} - msg_normal "Building cross glibc\n" - - [ ! -d glibc-build ] && mkdir glibc-build - cd glibc-build - - echo "slibdir=/usr/lib32" > configparms - - echo "libc_cv_forced_unwind=yes" > config.cache - echo "libc_cv_c_cleanup=yes" >> config.cache - - export CC="${_triplet}-gcc" LD="${_triplet}-ld" \ - AS="${_triplet}-as" CPP="${_triplet}-cpp" - export CFLAGS="-Os -pipe ${_archflags}" - - _args="--prefix=/usr" - _args+=" --libdir=/usr/lib32" - _args+=" --host=${_triplet}" - _args+=" --with-headers=${_sysroot}/usr/include" - _args+=" --config-cache" - _args+=" --disable-profile" - _args+=" --enable-obsolete-rpc" - _args+=" --enable-obsolete-nsl" - _args+=" --disable-werror" - _args+=" --enable-kernel=2.6.27" - _args+=" ${_fpuflags}" - - ../glibc-${_glibc_version}/configure ${_args} - - make ${makejobs} - make install_root=${_sysroot} install - - touch ${wrksrc}/.glibc_build_done -} - -_gcc_build() { - local _args - - [ -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 - - unset LD AS CPP - export CC="gcc" CFLAGS="-Os -pipe" - - # Make this link to target libs. - if [ ! -f .sed_subst_done ]; then - sed -e "s, /lib/, ${_sysroot}/lib/,g;s, /usr/lib/, ${_sysroot}/usr/lib/,g" \ - -i ${_sysroot}/lib/libc.so - sed -e "s, /lib32/, ${_sysroot}/lib32/,g;s, /usr/lib32/, ${_sysroot}/usr/lib32/,g" \ - -i ${_sysroot}/lib/libc.so - touch .sed_subst_done - fi - - _args="--prefix=/usr" - _args+=" --libexecdir=/usr/lib" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --enable-languages=c,ada,c++,objc,obj-c++,go,fortran,lto" - _args+=" --with-gnu-as" - _args+=" --with-gnu-ld" - _args+=" --disable-multilib" - _args+=" --disable-werror" - _args+=" --disable-nls" - _args+=" --disable-sjlj-exceptions" - _args+=" --enable-threads=posix" - _args+=" --enable-long-longx" - _args+=" --enable-shared" - _args+=" --enable-linker-build-id" - _args+=" --enable-gnu-unique-object" - _args+=" --enable-libada" - _args+=" --enable-lto" - _args+=" --enable-default-pie" - _args+=" --enable-default-ssp" - _args+=" --disable-libquadmath" - _args+=" --disable-libssp" - _args+=" --disable-libmpx" - _args+=" --disable-libmudflap" - _args+=" --disable-libsanitizer" - _args+=" --disable-libcilkrts" - _args+=" --disable-libitm" - _args+=" --disable-libvtv" - _args+=" --disable-libstdcxx-pch" - _args+=" --enable-libstdcxx-time" - _args+=" --with-linker-hash-style=gnu" - _args+=" ${_fpuflags}" - - ../gcc-${_gcc_version}/configure ${_args} - - make ${makejobs} - - touch ${wrksrc}/.gcc_build_done -} - -do_build() { - 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 - ln -sf lib ${_sysroot}/usr/lib32 - ln -sf usr/lib ${_sysroot}/lib32 - - # Ensure we use sane environment - unset CC CXX CPP LD AS AR RANLIB OBJDUMP READELF NM - unset CFLAGS CXXFLAGS CPPFLAGS LDFLAGS - export CFLAGS="-Os" CXXFLAGS="-Os" - - _binutils_build - _gcc_bootstrap - _linux_headers - _glibc_headers - _glibc_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 - ln -sf lib ${DESTDIR}/${_sysroot}/usr/lib32 - ln -sf usr/lib ${DESTDIR}/${_sysroot}/lib32 - - # install cross binutils - cd ${wrksrc}/binutils-build - make DESTDIR=${DESTDIR} install - - # install cross gcc - cd ${wrksrc}/gcc-build - make DESTDIR=${DESTDIR} install - - # move libcc1.so* to the sysroot - mv ${DESTDIR}/usr/lib/libcc1.so* ${DESTDIR}/${_sysroot}/usr/lib - - # install linux API headers for MIPS - 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 glibc for target - cd ${wrksrc}/glibc-build - make install_root=${DESTDIR}/${_sysroot} install install-headers - - # symlinks for gnarl and gnat shared libraries - _majorver=${_gcc_version%.*.*} - _adalib=usr/lib/gcc/${_triplet}/${_gcc_version}/adalib - mv -v ${DESTDIR}/${_adalib}/libgnarl-${_majorver}.so ${DESTDIR}/${_sysroot}/usr/lib - mv -v ${DESTDIR}/${_adalib}/libgnat-${_majorver}.so ${DESTDIR}/${_sysroot}/usr/lib - ln -svf libgnarl-${_majorver}.so libgnarl.so - ln -svf libgnat-${_majorver}.so libgnat.so - rm -vf ${DESTDIR}/${_adalib}/libgna{rl,t}.so - - # We need to build libatomic in target gcc as gccgo needs it to - # build... but it's not needed at runtime, so remove it from the - # destdir so it doesn't conflict with the libatomic package - rm -f ${DESTDIR}/${_sysroot}/usr/lib/libatomic.* - - # Remove unnecessary stuff - rm -f ${DESTDIR}/usr/lib*/libiberty.a - rm -rf ${DESTDIR}/usr/share - rm -rf ${DESTDIR}/${_sysroot}/{sbin,lib,etc,var} - rm -rf ${DESTDIR}/${_sysroot}/usr/{sbin,share,libexec} - rm -f ${DESTDIR}/${_sysroot}/libexec -} - cross-armv7l-linux-gnueabihf-libc_package() { short_desc+=" - glibc files" nostrip=yes noshlibprovides=yes noverifyrdeps=yes + pkg_install() { - vmove ${_sysroot} + vmove usr/${cross_triplet} } } From 8a783410cbb0de7b24999020aa223151b61af4a6 Mon Sep 17 00:00:00 2001 From: q66 Date: Fri, 25 Dec 2020 21:38:44 +0100 Subject: [PATCH 10/16] cross-armv7l-linux-musleabihf: rework with void-cross --- .../cross-armv7l-linux-musleabihf/template | 312 ++---------------- 1 file changed, 21 insertions(+), 291 deletions(-) diff --git a/srcpkgs/cross-armv7l-linux-musleabihf/template b/srcpkgs/cross-armv7l-linux-musleabihf/template index 55e345b5cc1..6eccd7661aa 100644 --- a/srcpkgs/cross-armv7l-linux-musleabihf/template +++ b/srcpkgs/cross-armv7l-linux-musleabihf/template @@ -1,20 +1,19 @@ -# Template build file for 'cross-armv7l-linux-musleabihf' -# +# Template file for 'cross-armv7l-linux-musleabihf' +_triplet=armv7l-linux-musleabihf _binutils_version=2.32 _gcc_version=9.3.0 _musl_version=1.1.24 _linux_version=4.19 _libucontext_version=0.9.0 - -_triplet=armv7l-linux-musleabihf -_fpuflags="--with-arch=armv7-a --with-fpu=vfpv3 --with-float=hard" -_archflags="-march=armv7-a -mfpu=vfpv3 -mfloat-abi=hard" -_sysroot="/usr/${_triplet}" - pkgname=cross-${_triplet} version=0.33 revision=3 -short_desc="Cross toolchain for ARMv7 LE Hard Float target (musl)" +build_style=void-cross +configure_args="--with-arch=armv7-a --with-fpu=vfpv3 --with-float=hard" +hostmakedepends="tar gcc-objc gcc-go flex perl python3" +makedepends="isl15-devel libmpc-devel zlib-devel gmp-devel mpfr-devel" +depends="${pkgname}-libc-${version}_${revision}" +short_desc="Void cross toolchain for ${_triplet}" maintainer="Orphaned " homepage="https://www.voidlinux.org/" license="GPL-2.0-or-later, GPL-3.0-or-later, MIT" @@ -30,298 +29,29 @@ checksum="0ab6c55dd86a92ed561972ba15b9b70a8b9f75557f896446c82e8b36e473ee04 0c68f5655528aed4f99dae71a5b259edc93239fa899e2df79c055275c21749a1 0d53a415a307ef175153bbe60a572c940a922cb736ce13530b666e7ec2795d68" -lib32disabled=yes -nocross=yes -nopie=yes -nodebug=yes -create_wrksrc=yes - -hostmakedepends="tar gcc-objc gcc-go flex perl python3" -makedepends="zlib-devel gmp-devel mpfr-devel libmpc-devel isl15-devel" -nostrip_files="libcaf_single.a libgcc.a libgcov.a libgcc_eh.a - libgnarl_pic.a libgnarl.a libgnat_pic.a libgnat.a libgmem.a" -depends="${pkgname}-libc-${version}_${revision}" +cross_triplet=${_triplet} +cross_wordsize=32 +cross_libc=musl +cross_binutils_version=${_binutils_version} +cross_gcc_version=${_gcc_version} +cross_musl_version=${_musl_version} +cross_linux_version=${_linux_version} +cross_libucontext_version=${_libucontext_version} +cross_libucontext_arch=arm +cross_linux_arch=arm +cross_musl_cflags="-O2 -march=armv7-a -mfpu=vfpv3 -mfloat-abi=hard" if [ "$XBPS_TARGET_MACHINE" = "armv7l-musl" ]; then broken="Can't build crosstoolchain to itself" fi -_apply_patch() { - local args="$1" pname="$(basename $2)" - - if [ ! -f ".${pname}_done" ]; then - patch -N $args -i $2 - touch .${pname}_done - fi -} - -_binutils_build() { - local _args - - [ -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 - - _args="--prefix=/usr" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --disable-nls" - _args+=" --disable-multilib" - _args+=" --disable-werror" - _args+=" --disable-shared" - _args+=" --with-system-zlib" - _args+=" ${_fpuflags}" - - ../binutils-${_binutils_version}/configure ${_args} - - make configure-host && make ${makejobs} - make install - - touch ${wrksrc}/.binutils_build_done -} - -_gcc_bootstrap() { - local _args - - [ -f ${wrksrc}/.gcc_bootstrap_done ] && return 0 - - cd ${wrksrc}/gcc-${_gcc_version} - for f in ${XBPS_SRCPKGDIR}/gcc/patches/*.patch; do - _apply_patch -p0 "$f" - done - for f in ${XBPS_SRCPKGDIR}/gcc/files/*-musl.patch; do - _apply_patch -p1 "$f" - done - - msg_normal "Building cross gcc bootstrap\n" - - [ ! -d ../gcc-bootstrap ] && mkdir ../gcc-bootstrap - cd ../gcc-bootstrap - - _args="--prefix=/usr" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --with-newlib" - _args+=" --enable-languages=c" - _args+=" --with-newlib" - _args+=" --disable-libssp" - _args+=" --disable-nls" - _args+=" --disable-libquadmath" - _args+=" --disable-threads" - _args+=" --disable-decimal-float" - _args+=" --disable-shared" - _args+=" --disable-libmpx" - _args+=" --disable-libmudflap" - _args+=" --disable-libgomp" - _args+=" --disable-libatomic" - _args+=" --disable-symvers" - _args+=" libat_cv_have_ifunc=no" - _args+=" ${_fpuflags}" - - CFLAGS="-O0 -g0" CXXFLAGS="-O0 -g0" \ - ../gcc-${_gcc_version}/configure ${_args} - - 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" - - # Apply musl patches if there are any - if [ -d "${XBPS_SRCPKGDIR}/musl/patches" ]; then - for f in ${XBPS_SRCPKGDIR}/musl/patches/*.patch; do - _apply_patch -p0 "$f" - done - fi - - CC="${_triplet}-gcc" CFLAGS="-Os -pipe -fPIC ${_archflags}" \ - ./configure --prefix=/usr - - make ${makejobs} - make DESTDIR=${_sysroot} install - - touch ${wrksrc}/.musl_build_done -} - -_libucontext_build() { - [ -f ${wrksrc}/.libucontext_build_done ] && return 0 - - cd ${wrksrc}/libucontext-${_libucontext_version} - msg_normal "Building cross libucontext\n" - - # it's ok if we're static only here - CC="${_triplet}-gcc" AR="${_triplet}-ar" AS="${_triplet}-as" \ - CFLAGS="-Os -pipe ${_archflags}" \ - make ARCH=arm libucontext.a - - cp libucontext.a ${_sysroot}/usr/lib - - touch ${wrksrc}/.libucontext_build_done -} - -_gcc_build() { - local _args - - [ -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 - - _args="--prefix=/usr" - _args+=" --libexecdir=/usr/lib" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --enable-languages=c,ada,c++,objc,obj-c++,go,fortran,lto" - _args+=" --enable-libada" - _args+=" --enable-lto" - _args+=" --enable-default-pie" - _args+=" --enable-default-ssp" - _args+=" --enable-libssp" - _args+=" --disable-libsanitizer" - _args+=" --disable-multilib" - _args+=" --disable-nls" - _args+=" --disable-libquadmath" - _args+=" --disable-libmpx" - _args+=" --disable-libmudflap" - _args+=" --enable-shared" - _args+=" --disable-symvers" - _args+=" libat_cv_have_ifunc=no" - _args+=" ${_fpuflags}" - - ../gcc-${_gcc_version}/configure ${_args} - - 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 - ln -sf lib ${_sysroot}/usr/lib32 - ln -sf usr/lib ${_sysroot}/lib32 - - _binutils_build - _gcc_bootstrap - _linux_headers - _musl_build - _libucontext_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 - ln -sf lib ${DESTDIR}/${_sysroot}/usr/lib32 - ln -sf usr/lib ${DESTDIR}/${_sysroot}/lib32 - - # 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 - - # move libcc1.so* to the sysroot - mv ${DESTDIR}/usr/lib/libcc1.so* ${DESTDIR}/${_sysroot}/usr/lib - - # 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-armhf.so.1 symlink relative. - ln -sf libc.so ${DESTDIR}/${_sysroot}/usr/lib/ld-musl-armhf.so.1 - - # symlinks for gnarl and gnat shared libraries - _majorver=${_gcc_version%.*.*} - _adalib=usr/lib/gcc/${_triplet}/${_gcc_version}/adalib - mv -v ${DESTDIR}/${_adalib}/libgnarl-${_majorver}.so ${DESTDIR}/${_sysroot}/usr/lib - mv -v ${DESTDIR}/${_adalib}/libgnat-${_majorver}.so ${DESTDIR}/${_sysroot}/usr/lib - ln -svf libgnarl-${_majorver}.so libgnarl.so - ln -svf libgnat-${_majorver}.so libgnat.so - rm -vf ${DESTDIR}/${_adalib}/libgna{rl,t}.so - - # We need to build libatomic in target gcc as gccgo needs it to - # build... but it's not needed at runtime, so remove it from the - # destdir so it doesn't conflict with the libatomic package - rm -f ${DESTDIR}/${_sysroot}/usr/lib/libatomic.* - - # 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 -f ${DESTDIR}/${_sysroot}/{sbin,lib} -} - cross-armv7l-linux-musleabihf-libc_package() { short_desc+=" - libc files" nostrip=yes noshlibprovides=yes noverifyrdeps=yes - pkg_install() { - vmove ${_sysroot} + pkg_install() { + vmove usr/${cross_triplet} } } From 18d20ff3e565278a52c8911d719758e04357fd26 Mon Sep 17 00:00:00 2001 From: q66 Date: Fri, 25 Dec 2020 22:51:01 +0100 Subject: [PATCH 11/16] cross-i686-pc-linux-gnu: rework with void-cross --- srcpkgs/cross-i686-pc-linux-gnu/template | 365 ++--------------------- 1 file changed, 21 insertions(+), 344 deletions(-) diff --git a/srcpkgs/cross-i686-pc-linux-gnu/template b/srcpkgs/cross-i686-pc-linux-gnu/template index 056d2553040..bfe2d5eafbe 100644 --- a/srcpkgs/cross-i686-pc-linux-gnu/template +++ b/srcpkgs/cross-i686-pc-linux-gnu/template @@ -1,21 +1,20 @@ -# Template build file for 'cross-i686-pc-linux-gnu' -# +# Template file for 'cross-i686-pc-linux-gnu' +_triplet=i686-pc-linux-gnu _binutils_version=2.32 _gcc_version=9.3.0 _glibc_version=2.30 _linux_version=4.19 - -_triplet=i686-pc-linux-gnu -_archflags="-march=i686 -mtune=generic" -_sysroot="/usr/${_triplet}" - pkgname=cross-${_triplet} version=0.33 revision=4 -short_desc="GNU Cross toolchain for the ${_triplet} target (binutils/gcc/glibc)" +build_style=void-cross +hostmakedepends="tar gcc-objc gcc-go flex perl python3" +makedepends="isl15-devel libmpc-devel zlib-devel gmp-devel mpfr-devel" +depends="${pkgname}-libc-${version}_${revision}" +short_desc="Void cross toolchain for ${_triplet}" maintainer="Jürgen Buchmüller " -homepage="https://www.voidlinux.org/" license="GPL-2.0-or-later, GPL-3.0-or-later, LGPL-2.1-or-later" +homepage="https://www.voidlinux.org/" distfiles=" ${GNU_SITE}/binutils/binutils-${_binutils_version}.tar.xz ${GNU_SITE}/gcc/gcc-${_gcc_version}/gcc-${_gcc_version}.tar.xz @@ -26,351 +25,29 @@ checksum="0ab6c55dd86a92ed561972ba15b9b70a8b9f75557f896446c82e8b36e473ee04 e2c4114e569afbe7edbc29131a43be833850ab9a459d81beb2588016d2bbb8af 0c68f5655528aed4f99dae71a5b259edc93239fa899e2df79c055275c21749a1" -nocross=yes -nopie=yes -nodebug=yes -lib32disabled=yes -create_wrksrc=yes -hostmakedepends="tar gcc-objc gcc-go flex perl python3" -makedepends="isl15-devel libmpc-devel zlib-devel" -depends="${pkgname}-libc-${version}_${revision}" -nostrip_files="libcaf_single.a libgcc.a libgcov.a libgcc_eh.a - libgnarl_pic.a libgnarl.a libgnat_pic.a libgnat.a libgmem.a" - -if [ "$XBPS_TARGET_LIBC" != "glibc" ]; then - broken="glibc crosstoolchain only available on glibc" -fi +cross_triplet=${_triplet} +cross_wordsize=32 +cross_libc=glibc +cross_binutils_version=${_binutils_version} +cross_gcc_version=${_gcc_version} +cross_glibc_version=${_glibc_version} +cross_linux_version=${_linux_version} +cross_linux_arch=x86 +# explicitly enable for final gcc, as gfortran does not build without on x86 +cross_gcc_configure_args="--enable-libquadmath" +cross_glibc_cflags="-O2 -Wno-error -march=i686 -mtune=generic" if [ "$XBPS_TARGET_MACHINE" = "i686" ]; then broken="Can't build crosstoolchain to itself" fi -_apply_patch() { - local args="$1" pname="$(basename $2)" - - if [ ! -f ".${pname}_done" ]; then - patch -N $args -i $2 - touch .${pname}_done - fi -} - -_binutils_build() { - local _args - - [ -f ${wrksrc}/.binutils_build_done ] && return 0 - - cd ${wrksrc}/binutils-${_binutils_version} - - msg_normal "Building cross binutils bootstrap\n" - - [ ! -d ../binutils-build ] && mkdir ../binutils-build - cd ../binutils-build - _args="--prefix=/usr" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --disable-nls" - _args+=" --disable-shared" - _args+=" --disable-multilib" - _args+=" --disable-werror" - _args+=" --with-system-zlib" - - ../binutils-${_binutils_version}/configure ${_args} - - make configure-host && make ${makejobs} - make install - - touch ${wrksrc}/.binutils_build_done -} - -_gcc_bootstrap() { - local _args - [ -f ${wrksrc}/.gcc_bootstrap_done ] && return 0 - - cd ${wrksrc}/gcc-${_gcc_version} - for f in ${XBPS_SRCPKGDIR}/gcc/patches/*.patch; do - _apply_patch -p0 "$f" - done - - msg_normal "Building cross gcc bootstrap\n" - - [ ! -d ../gcc-bootstrap ] && mkdir ../gcc-bootstrap - cd ../gcc-bootstrap - - # Fix https://build.voidlinux.org/builders/x86_64_builder/builds/24895/steps/shell_3/logs/stdio - export gcc_cv_libc_provides_ssp=yes - _args="--prefix=/usr" - _args+=" --target=${_triplet}" - _args+=" --without-headers" - _args+=" --disable-nls" - _args+=" --disable-shared" - _args+=" --disable-libquadmath" - _args+=" --disable-decimal-float" - _args+=" --disable-libgomp" - _args+=" --disable-libmpx" - _args+=" --disable-libmudflap" - _args+=" --disable-libssp" - _args+=" --disable-libitm" - _args+=" --disable-libatomic" - _args+=" --disable-threads" - _args+=" --enable-languages=c" - _args+=" --disable-sjlj-exceptions" - _args+=" --disable-multilib" - _args+=" --with-gnu-ld" - _args+=" --with-gnu-as" - _args+=" ${_fpuflags}" - - CFLAGS="-O0 -g0" CXXFLAGS="-O0 -g0" \ - ../gcc-${_gcc_version}/configure ${_args} - - 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 x86\n" - - cd linux-${_linux_version} - - make ARCH=x86 headers_check - make ARCH=x86 INSTALL_HDR_PATH=${_sysroot}/usr headers_install - - touch ${wrksrc}/.linux_build_done -} - -_glibc_headers() { - local _args f - [ -f ${wrksrc}/.glibc_headers_done ] && return 0 - - cd ${wrksrc}/glibc-${_glibc_version} - if [ -d "${XBPS_SRCPKGDIR}/glibc/patches" ]; then - for f in ${XBPS_SRCPKGDIR}/glibc/patches/*.patch; do - _apply_patch -p1 "$f" - done - fi - - cd ${wrksrc} - msg_normal "Building cross glibc headers\n" - - [ ! -d glibc-headers ] && mkdir glibc-headers - cd glibc-headers - - echo "libc_cv_forced_unwind=yes" > config.cache - echo "libc_cv_c_cleanup=yes" >> config.cache - echo "libc_cv_ssp=no" >> config.cache - - export CC="${_triplet}-gcc" LD="${_triplet}-ld" \ - AS="${_triplet}-as" CPP="${_triplet}-cpp" - - _args="--host=${_triplet}" - _args+=" --prefix=/usr" - _args+=" --with-headers=${_sysroot}/usr/include" - _args+=" --config-cache" - _args+=" --enable-obsolete-rpc" - _args+=" --enable-obsolete-nsl" - _args+=" --enable-kernel=2.6.27" - _args+=" ${_fpuflags}" - - ../glibc-${_glibc_version}/configure ${_args} - - make -k install-headers cross_compiling=yes \ - install_root=${_sysroot} - - touch ${wrksrc}/.glibc_headers_done -} - -_glibc_build() { - local _args - [ -f ${wrksrc}/.glibc_build_done ] && return 0 - - cd ${wrksrc} - msg_normal "Building cross glibc\n" - - [ ! -d glibc-build ] && mkdir glibc-build - cd glibc-build - - echo "slibdir=/usr/lib32" > configparms - - echo "libc_cv_forced_unwind=yes" > config.cache - echo "libc_cv_c_cleanup=yes" >> config.cache - echo "libc_cv_ssp=no" >> config.cache - - export CC="${_triplet}-gcc" LD="${_triplet}-ld" \ - AS="${_triplet}-as" CPP="${_triplet}-cpp" - export CFLAGS="-O2 -pipe -Wno-error ${_archflags}" - _args="--host=${_triplet}" - _args+=" --prefix=/usr" - _args+=" --libdir=/usr/lib32" - _args+=" --with-headers=${_sysroot}/usr/include" - _args+=" --config-cache" - _args+=" --enable-obsolete-rpc" - _args+=" --enable-obsolete-nsl" - _args+=" --enable-kernel=2.6.27" - _args+=" ${_fpuflags}" - - ../glibc-${_glibc_version}/configure ${_args} - - make ${makejobs} - make install_root=${_sysroot} install - - touch ${wrksrc}/.glibc_build_done -} - -_gcc_build() { - local _args - - [ -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 - - unset LD AS CPP - - # Make this link to target libs. - if [ ! -f .sed_subst_done ]; then - sed -e "s, /lib/, ${_sysroot}/lib/,g;s, /usr/lib/, ${_sysroot}/usr/lib/,g" \ - -i ${_sysroot}/lib/libc.so - sed -e "s, /lib32/, ${_sysroot}/lib32/,g;s, /usr/lib32/, ${_sysroot}/usr/lib32/,g" \ - -i ${_sysroot}/lib/libc.so - touch .sed_subst_done - fi - _args="--target=${_triplet}" - _args+=" --target=${_triplet}" - _args+=" --prefix=/usr" - _args+=" --libexecdir=/usr/lib" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --enable-languages=c,ada,c++,objc,obj-c++,go,fortran,lto" - _args+=" --with-gnu-as" - _args+=" --with-gnu-ld" - _args+=" --disable-multilib" - _args+=" --disable-nls" - _args+=" --disable-sjlj-exceptions" - _args+=" --enable-threads=posix" - _args+=" --enable-long-longx" - _args+=" --enable-shared" - _args+=" --enable-linker-build-id" - _args+=" --enable-gnu-unique-object" - _args+=" --enable-libada" - _args+=" --enable-lto" - _args+=" --enable-default-pie" - _args+=" --enable-default-ssp" - _args+=" --enable-gnu-indirect-function" - _args+=" --enable-libquadmath" - _args+=" --disable-libssp" - _args+=" --disable-libmpx" - _args+=" --disable-libmudflap" - _args+=" --disable-libsanitizer" - _args+=" --disable-libcilkrts" - _args+=" --disable-libitm" - _args+=" --disable-libvtv" - _args+=" --disable-libstdcxx-pch" - _args+=" --enable-libstdcxx-time" - _args+=" --with-linker-hash-style=gnu" - _args+=" ${_fpuflags}" - - CC="gcc" CFLAGS="-O2 -pipe" \ - ../gcc-${_gcc_version}/configure ${_args} - - 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" CXXFLAGS="-Os" - - 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 - ln -sf lib ${_sysroot}/usr/lib32 - ln -sf usr/lib ${_sysroot}/lib32 - - _binutils_build - _gcc_bootstrap - _linux_headers - _glibc_headers - _glibc_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 - ln -sf lib ${DESTDIR}/${_sysroot}/usr/lib32 - ln -sf usr/lib ${DESTDIR}/${_sysroot}/lib32 - - # install cross binutils - cd ${wrksrc}/binutils-build - make DESTDIR=${DESTDIR} install - - # install cross gcc - cd ${wrksrc}/gcc-build - make DESTDIR=${DESTDIR} install - - # move libcc1.so* to the sysroot - mv ${DESTDIR}/usr/lib/libcc1.so* ${DESTDIR}/${_sysroot}/usr/lib - - # install linux API headers for x86. - cd ${wrksrc}/linux-${_linux_version} - make ARCH=x86 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 glibc for target - cd ${wrksrc}/glibc-build - make install_root=${DESTDIR}/${_sysroot} install install-headers - - # symlinks for gnarl and gnat shared libraries - _majorver=${_gcc_version%.*.*} - _adalib=usr/lib/gcc/${_triplet}/${_gcc_version}/adalib - mv -v ${DESTDIR}/${_adalib}/libgnarl-${_majorver}.so ${DESTDIR}/${_sysroot}/usr/lib - mv -v ${DESTDIR}/${_adalib}/libgnat-${_majorver}.so ${DESTDIR}/${_sysroot}/usr/lib - ln -svf libgnarl-${_majorver}.so libgnarl.so - ln -svf libgnat-${_majorver}.so libgnat.so - rm -vf ${DESTDIR}/${_adalib}/libgna{rl,t}.so - - # We need to build libatomic in target gcc as gccgo needs it to - # build... but it's not needed at runtime, so remove it from the - # destdir so it doesn't conflict with the libatomic package - rm -f ${DESTDIR}/${_sysroot}/usr/lib/libatomic.* - - # Remove unnecessary stuff - rm -f ${DESTDIR}/usr/lib*/libiberty.a - rm -rf ${DESTDIR}/usr/share - rm -rf ${DESTDIR}/${_sysroot}/{sbin,lib,etc,var} - rm -rf ${DESTDIR}/${_sysroot}/usr/{sbin,share,libexec} - rm -f ${DESTDIR}/${_sysroot}/libexec -} - cross-i686-pc-linux-gnu-libc_package() { short_desc+=" - glibc files" nostrip=yes noverifyrdeps=yes noshlibprovides=yes + pkg_install() { - vmove ${_sysroot} + vmove usr/${cross_triplet} } } From 6b2275c46d5c83cbc32898aff6da45c931a5b60b Mon Sep 17 00:00:00 2001 From: q66 Date: Fri, 25 Dec 2020 22:57:41 +0100 Subject: [PATCH 12/16] cross-i686-linux-musl: rework with void-cross --- srcpkgs/cross-i686-linux-musl/template | 317 ++----------------------- 1 file changed, 25 insertions(+), 292 deletions(-) diff --git a/srcpkgs/cross-i686-linux-musl/template b/srcpkgs/cross-i686-linux-musl/template index 8d09e4c7e05..384953f6c49 100644 --- a/srcpkgs/cross-i686-linux-musl/template +++ b/srcpkgs/cross-i686-linux-musl/template @@ -1,19 +1,18 @@ -# Template build file for 'cross-i686-linux-musl' -# +# Template file for 'cross-i686-linux-musl' +_triplet=i686-linux-musl _binutils_version=2.32 _gcc_version=9.3.0 _musl_version=1.1.24 _linux_version=4.19 _libucontext_version=0.9.0 - -_triplet=i686-linux-musl -_sysroot="/usr/${_triplet}" -_archflags="-march=i686" - pkgname=cross-${_triplet} version=0.33 revision=3 -short_desc="Cross toolchain for i686 target (musl)" +build_style=void-cross +hostmakedepends="tar gcc-objc gcc-go flex perl python3" +makedepends="isl15-devel libmpc-devel zlib-devel gmp-devel mpfr-devel" +depends="${pkgname}-libc-${version}_${revision}" +short_desc="Void cross toolchain for ${_triplet}" maintainer="Jürgen Buchmüller " homepage="https://www.voidlinux.org/" license="GPL-2.0-or-later, GPL-3.0-or-later, MIT" @@ -29,294 +28,27 @@ checksum="0ab6c55dd86a92ed561972ba15b9b70a8b9f75557f896446c82e8b36e473ee04 0c68f5655528aed4f99dae71a5b259edc93239fa899e2df79c055275c21749a1 0d53a415a307ef175153bbe60a572c940a922cb736ce13530b666e7ec2795d68" -lib32disabled=yes -nocross=yes -nopie=yes -nodebug=yes -create_wrksrc=yes -hostmakedepends="tar gcc-objc gcc-go flex perl python3" -makedepends="zlib-devel gmp-devel mpfr-devel libmpc-devel isl15-devel" -nostrip_files="libcaf_single.a libgcc.a libgcov.a libgcc_eh.a - libgnarl_pic.a libgnarl.a libgnat_pic.a libgnat.a libgmem.a" -depends="${pkgname}-libc-${version}_${revision}" +cross_triplet=${_triplet} +cross_wordsize=32 +cross_libc=musl +cross_binutils_version=${_binutils_version} +cross_gcc_version=${_gcc_version} +cross_musl_version=${_musl_version} +cross_linux_version=${_linux_version} +cross_libucontext_version=${_libucontext_version} +cross_libucontext_arch=x86 +cross_linux_arch=x86 +# explicitly enable for final gcc, as gfortran does not build without on x86 +cross_gcc_configure_args="--enable-libquadmath" +cross_musl_cflags="-O2 -march=i686 -mtune=generic" if [ "$XBPS_TARGET_MACHINE" = "i686-musl" ]; then broken="Can't build crosstoolchain to itself" fi -_apply_patch() { - local args="$1" pname="$(basename $2)" - - if [ ! -f ".${pname}_done" ]; then - patch -N $args -i $2 - touch .${pname}_done - fi -} - -_binutils_build() { - local _args - - [ -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 - _args="--prefix=/usr" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --disable-nls" - _args+=" --disable-multilib" - _args+=" --disable-werror" - _args+=" --disable-shared" - _args+=" --with-system-zlib" - _args+=" ${_fpuflags}" - - ../binutils-${_binutils_version}/configure ${_args} - - make configure-host - make ${makejobs} - make install - - touch ${wrksrc}/.binutils_build_done -} - -_gcc_bootstrap() { - local _args - - [ -f ${wrksrc}/.gcc_bootstrap_done ] && return 0 - - cd ${wrksrc}/gcc-${_gcc_version} - for f in ${XBPS_SRCPKGDIR}/gcc/patches/*.patch; do - _apply_patch -p0 "$f" - done - for f in ${XBPS_SRCPKGDIR}/gcc/files/*-musl.patch; do - _apply_patch -p1 "$f" - done - - msg_normal "Building cross gcc bootstrap\n" - - [ ! -d ../gcc-bootstrap ] && mkdir ../gcc-bootstrap - cd ../gcc-bootstrap - - _args="--target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --prefix=/usr" - _args+=" --enable-languages=c" - _args+=" --with-newlib" - _args+=" --disable-nls" - _args+=" --disable-libssp" - _args+=" --disable-libquadmath" - _args+=" --disable-threads" - _args+=" --disable-decimal-float" - _args+=" --disable-shared" - _args+=" --disable-libmpx" - _args+=" --disable-libmudflap" - _args+=" --disable-libgomp" - _args+=" --disable-libatomic" - _args+=" --disable-symvers" - _args+=" libat_cv_have_ifunc=no" - _args+=" ${_fpuflags}" - CFLAGS="-O0 -g0" CXXFLAGS="-O0 -g0" \ - ../gcc-${_gcc_version}/configure ${_args} - - 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\n" - - cd linux-${_linux_version} - - for f in ${XBPS_SRCPKGDIR}/kernel-libc-headers/patches/*.patch; do - _apply_patch -p0 $f - done - - make ARCH=x86 headers_check - make ARCH=x86 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" - - # Apply musl patches if there are any - if [ -d "${XBPS_SRCPKGDIR}/musl/patches" ]; then - for f in ${XBPS_SRCPKGDIR}/musl/patches/*.patch; do - _apply_patch -p0 "$f" - done - fi - - CC="${_triplet}-gcc" CFLAGS="-Os -pipe -fPIC ${_archflags}" \ - ./configure --prefix=/usr - - make ${makejobs} - make DESTDIR=${_sysroot} install - - touch ${wrksrc}/.musl_build_done -} - -_libucontext_build() { - [ -f ${wrksrc}/.libucontext_build_done ] && return 0 - - cd ${wrksrc}/libucontext-${_libucontext_version} - msg_normal "Building cross libucontext\n" - - vsed -i arch/x86/startcontext.S -e \ - "s;__i686.get_pc_thunk.bx;i686_get_pc_thunk_bx;g" - - # it's ok if we're static only here - CC="${_triplet}-gcc" AR="${_triplet}-ar" AS="${_triplet}-as" \ - CFLAGS="-Os -pipe ${_archflags}" \ - make ARCH=x86 libucontext.a - - cp libucontext.a ${_sysroot}/usr/lib - - touch ${wrksrc}/.libucontext_build_done -} - -_gcc_build() { - local _args - [ -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 - - _args="--target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --prefix=/usr" - _args+=" --libexecdir=/usr/lib" - _args+=" --enable-languages=c,ada,c++,objc,obj-c++,go,fortran,lto" - _args+=" --enable-lto" - _args+=" --enable-default-pie" - _args+=" --enable-default-ssp" - _args+=" --enable-libssp" - _args+=" --disable-libsanitizer" - _args+=" --disable-multilib" - _args+=" --disable-libmpx" - _args+=" --disable-libmudflap" - _args+=" --enable-libada" - _args+=" --enable-libquadmath" - _args+=" --enable-shared" - _args+=" --disable-symvers" - _args+=" libat_cv_have_ifunc=no" - _args+=" ${_fpuflags}" - - ../gcc-${_gcc_version}/configure ${_args} - - 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 - ln -sf lib ${_sysroot}/usr/lib32 - ln -sf usr/lib ${_sysroot}/lib32 - - _binutils_build - _gcc_bootstrap - _linux_headers - _musl_build - _libucontext_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 - ln -sf lib ${DESTDIR}/${_sysroot}/usr/lib32 - ln -sf usr/lib ${DESTDIR}/${_sysroot}/lib32 - - # install linux API headers for x86 - cd ${wrksrc}/linux-${_linux_version} - make ARCH=x86 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 - - # move libcc1.so* to the sysroot - mv ${DESTDIR}/usr/lib/libcc1.so* ${DESTDIR}/${_sysroot}/usr/lib - - # 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-i386.so.1 symlink relative to cwd. - cd ${DESTDIR}/${_sysroot}/usr/lib - ln -sf libc.so ld-musl-i386.so.1 - - # Move files to /usr/lib (lib64). - if [ -d ${DESTDIR}/${_sysroot}/usr/lib64 ]; then - mv ${DESTDIR}/${_sysroot}/usr/lib64/* ${DESTDIR}/${_sysroot}/usr/lib/ - rmdir ${DESTDIR}/${_sysroot}/usr/lib64 - fi - - # symlinks for gnarl and gnat shared libraries - _majorver=${_gcc_version%.*.*} - _adalib=usr/lib/gcc/${_triplet}/${_gcc_version}/adalib - mv -v ${DESTDIR}/${_adalib}/libgnarl-${_majorver}.so ${DESTDIR}/${_sysroot}/usr/lib - mv -v ${DESTDIR}/${_adalib}/libgnat-${_majorver}.so ${DESTDIR}/${_sysroot}/usr/lib - ln -svf libgnarl-${_majorver}.so libgnarl.so - ln -svf libgnat-${_majorver}.so libgnat.so - rm -vf ${DESTDIR}/${_adalib}/libgna{rl,t}.so - - # We need to build libatomic in target gcc as gccgo needs it to - # build... but it's not needed at runtime, so remove it from the - # destdir so it doesn't conflict with the libatomic package - rm -f ${DESTDIR}/${_sysroot}/usr/lib/libatomic.* - - # 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 -f ${DESTDIR}/${_sysroot}/{sbin,lib} +post_patch() { + vsed -i libucontext-${_libucontext_version}/arch/x86/startcontext.S \ + -e \ "s;__i686.get_pc_thunk.bx;i686_get_pc_thunk_bx;g" } cross-i686-linux-musl-libc_package() { @@ -324,7 +56,8 @@ cross-i686-linux-musl-libc_package() { nostrip=yes noverifyrdeps=yes noshlibprovides=yes + pkg_install() { - vmove ${_sysroot} + vmove usr/${cross_triplet} } } From 4b7792228abb55aa73fee6d755a4669336963e10 Mon Sep 17 00:00:00 2001 From: q66 Date: Sat, 26 Dec 2020 00:09:57 +0100 Subject: [PATCH 13/16] cross-mips-linux-musl: redo with void-cross --- srcpkgs/cross-mips-linux-musl/template | 291 ++----------------------- 1 file changed, 23 insertions(+), 268 deletions(-) diff --git a/srcpkgs/cross-mips-linux-musl/template b/srcpkgs/cross-mips-linux-musl/template index 19f600c9e5a..9d23de07af1 100644 --- a/srcpkgs/cross-mips-linux-musl/template +++ b/srcpkgs/cross-mips-linux-musl/template @@ -1,296 +1,51 @@ -# Template build file for 'cross-mips-linux-musl' -# +# Template file for 'cross-mips-linux-musl' +_triplet=mips-linux-musl _binutils_version=2.32 _gcc_version=9.3.0 _musl_version=1.1.24 _linux_version=4.19 - -_triplet=mips-linux-musl -_fpuflags="--with-float=soft --without-fp" -_archflags="-march=mips32r2 -msoft-float" -_sysroot="/usr/${_triplet}" - pkgname=cross-${_triplet} version=0.33 revision=3 -short_desc="Cross toolchain for MIPS32r2 BE softfloat target (musl)" +build_style=void-cross +configure_args="--with-arch=mips32r2 --with-float=soft + --with-linker-hash-style=sysv" +hostmakedepends="tar gcc-objc flex perl python3" +makedepends="isl15-devel libmpc-devel zlib-devel gmp-devel mpfr-devel" +depends="${pkgname}-libc-${version}_${revision}" +short_desc="Void cross toolchain for ${_triplet}" maintainer="Orphaned " homepage="https://www.voidlinux.org/" license="GPL-2.0-or-later, GPL-3.0-or-later, MIT" distfiles=" ${GNU_SITE}/binutils/binutils-${_binutils_version}.tar.xz ${GNU_SITE}/gcc/gcc-${_gcc_version}/gcc-${_gcc_version}.tar.xz - http://www.musl-libc.org/releases/musl-${_musl_version}.tar.gz + https://www.musl-libc.org/releases/musl-${_musl_version}.tar.gz ${KERNEL_SITE}/kernel/v4.x/linux-${_linux_version}.tar.xz" checksum="0ab6c55dd86a92ed561972ba15b9b70a8b9f75557f896446c82e8b36e473ee04 71e197867611f6054aa1119b13a0c0abac12834765fe2d81f35ac57f84f742d1 1370c9a812b2cf2a7d92802510cca0058cc37e66a7bedd70051f0a34015022a3 0c68f5655528aed4f99dae71a5b259edc93239fa899e2df79c055275c21749a1" -lib32disabled=yes -nocross=yes -nopie=yes -nodebug=yes -create_wrksrc=yes - -hostmakedepends="tar gcc-objc flex perl python3" -makedepends="zlib-devel gmp-devel mpfr-devel libmpc-devel isl15-devel" -nostrip_files="libcaf_single.a libgcc.a libgcov.a libgcc_eh.a - libgnarl_pic.a libgnarl.a libgnat_pic.a libgnat.a libgmem.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() { - local _args - - [ -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 - - _args="--prefix=/usr" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --disable-nls" - _args+=" --disable-multilib" - _args+=" --disable-werror" - _args+=" --disable-shared" - _args+=" --with-system-zlib" - _args+=" ${_fpuflags}" - - ../binutils-${_binutils_version}/configure ${_args} - - make configure-host && make ${makejobs} - make install - - touch ${wrksrc}/.binutils_build_done -} - -_gcc_bootstrap() { - local _args - - [ -f ${wrksrc}/.gcc_bootstrap_done ] && return 0 - - cd ${wrksrc}/gcc-${_gcc_version} - for f in ${XBPS_SRCPKGDIR}/gcc/patches/*.patch; do - _apply_patch -p0 "$f" - done - for f in ${XBPS_SRCPKGDIR}/gcc/files/*-musl.patch; do - _apply_patch -p1 "$f" - done - - msg_normal "Building cross gcc bootstrap\n" - - [ ! -d ../gcc-bootstrap ] && mkdir ../gcc-bootstrap - cd ../gcc-bootstrap - - _args="--prefix=/usr" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --with-newlib" - _args+=" --enable-languages=c" - _args+=" --with-newlib" - _args+=" --disable-libssp" - _args+=" --disable-nls" - _args+=" --disable-libquadmath" - _args+=" --disable-threads" - _args+=" --disable-decimal-float" - _args+=" --disable-shared" - _args+=" --disable-libmpx" - _args+=" --disable-libmudflap" - _args+=" --disable-libgomp" - _args+=" --disable-libatomic" - _args+=" ${_fpuflags}" - - CFLAGS="-O0 -g0" CXXFLAGS="-O0 -g0" \ - ../gcc-${_gcc_version}/configure ${_args} - - 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\n" - - cd linux-${_linux_version} - - for f in ${XBPS_SRCPKGDIR}/kernel-libc-headers/patches/*.patch; do - _apply_patch -p0 $f - done - - make ARCH=mips headers_check - make ARCH=mips 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" - - # Apply musl patches if there are any - if [ -d "${XBPS_SRCPKGDIR}/musl/patches" ]; then - for f in ${XBPS_SRCPKGDIR}/musl/patches/*.patch; do - _apply_patch -p0 "$f" - done - fi - - CC="${_triplet}-gcc" CFLAGS="-Os -pipe -fPIC ${_archflags}" \ - ./configure --prefix=/usr - - make ${makejobs} - make DESTDIR=${_sysroot} install - - touch ${wrksrc}/.musl_build_done -} - -_gcc_build() { - local _args - - [ -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 - - _args="--prefix=/usr" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --libexecdir=/usr/lib" - _args+=" --enable-languages=c,ada,c++,objc,obj-c++,fortran,lto" - _args+=" --enable-libada" - _args+=" --enable-lto" - _args+=" --enable-default-pie" - _args+=" --enable-default-ssp" - _args+=" --disable-libsanitizer" - _args+=" --disable-multilib" - _args+=" --disable-nls" - _args+=" --disable-libquadmath" - _args+=" --disable-libmpx" - _args+=" --disable-libmudflap" - _args+=" --disable-libatomic" - _args+=" --enable-libssp" - _args+=" --enable-shared" - _args+=" --disable-symvers" - _args+=" ${_fpuflags}" - - ../gcc-${_gcc_version}/configure ${_args} - - 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 - ln -sf lib ${_sysroot}/usr/lib32 - ln -sf usr/lib ${_sysroot}/lib32 - - _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 - ln -sf lib ${DESTDIR}/${_sysroot}/usr/lib32 - ln -sf usr/lib ${DESTDIR}/${_sysroot}/lib32 - - # install linux API headers - cd ${wrksrc}/linux-${_linux_version} - make ARCH=mips 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 - - # move libcc1.so* to the sysroot - mv ${DESTDIR}/usr/lib/libcc1.so* ${DESTDIR}/${_sysroot}/usr/lib - - # 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.so symlinks relative. - ln -sf libc.so ${DESTDIR}/${_sysroot}/usr/lib/ld-musl-mips.so.1 - ln -sf libc.so ${DESTDIR}/${_sysroot}/usr/lib/ld-musl-mips-sf.so.1 - - # symlinks for gnarl and gnat shared libraries - _majorver=${_gcc_version%.*.*} - _adalib=usr/lib/gcc/${_triplet}/${_gcc_version}/adalib - mv -v ${DESTDIR}/${_adalib}/libgnarl-${_majorver}.so ${DESTDIR}/${_sysroot}/usr/lib - mv -v ${DESTDIR}/${_adalib}/libgnat-${_majorver}.so ${DESTDIR}/${_sysroot}/usr/lib - ln -svf libgnarl-${_majorver}.so libgnarl.so - ln -svf libgnat-${_majorver}.so libgnat.so - rm -vf ${DESTDIR}/${_adalib}/libgna{rl,t}.so - - # 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 -f ${DESTDIR}/${_sysroot}/{sbin,lib} -} +cross_triplet=${_triplet} +cross_wordsize=32 +cross_libc=musl +cross_binutils_version=${_binutils_version} +cross_gcc_version=${_gcc_version} +cross_musl_version=${_musl_version} +cross_linux_version=${_linux_version} +cross_linux_arch=arm +cross_gcc_skip_go=yes +cross_binutils_configure_args="--without-fp --enable-default-hash-style=sysv" +cross_musl_cflags="-Os -march=mips32r2 -msoft-float" cross-mips-linux-musl-libc_package() { short_desc+=" - libc files" nostrip=yes noverifyrdeps=yes noshlibprovides=yes + pkg_install() { - vmove ${_sysroot} + vmove usr/${cross_triplet} } } From e302bfaff48d6bebcf4bd22ea538f70b5545e8c4 Mon Sep 17 00:00:00 2001 From: q66 Date: Sat, 26 Dec 2020 00:10:11 +0100 Subject: [PATCH 14/16] cross-mips-linux-muslhf: redo with void-cross --- srcpkgs/cross-mips-linux-muslhf/template | 288 ++--------------------- 1 file changed, 22 insertions(+), 266 deletions(-) diff --git a/srcpkgs/cross-mips-linux-muslhf/template b/srcpkgs/cross-mips-linux-muslhf/template index 7992864a8b6..ae9b505e406 100644 --- a/srcpkgs/cross-mips-linux-muslhf/template +++ b/srcpkgs/cross-mips-linux-muslhf/template @@ -1,19 +1,19 @@ -# Template build file for 'cross-mips-linux-muslhf' -# +# Template file for 'cross-mips-linux-muslhf' +_triplet=mips-linux-muslhf _binutils_version=2.32 _gcc_version=9.3.0 _musl_version=1.1.24 _linux_version=4.19 - -_triplet=mips-linux-muslhf -_fpuflags="--with-float=hard --with-fp" -_archflags="-march=mips32r2 -mhard-float" -_sysroot="/usr/${_triplet}" - pkgname=cross-${_triplet} version=0.33 revision=3 -short_desc="Cross toolchain for MIPS32r2 BE hardfloat target (musl)" +build_style=void-cross +configure_args="--with-arch=mips32r2 --with-float=hard + --with-linker-hash-style=sysv" +hostmakedepends="tar gcc-objc flex perl python3" +makedepends="isl15-devel libmpc-devel zlib-devel gmp-devel mpfr-devel" +depends="${pkgname}-libc-${version}_${revision}" +short_desc="Void cross toolchain for ${_triplet}" maintainer="hipperson0 " homepage="https://www.voidlinux.org/" license="GPL-2.0-or-later, GPL-3.0-or-later, MIT" @@ -27,269 +27,25 @@ checksum="0ab6c55dd86a92ed561972ba15b9b70a8b9f75557f896446c82e8b36e473ee04 1370c9a812b2cf2a7d92802510cca0058cc37e66a7bedd70051f0a34015022a3 0c68f5655528aed4f99dae71a5b259edc93239fa899e2df79c055275c21749a1" -lib32disabled=yes -nocross=yes -nopie=yes -nodebug=yes -create_wrksrc=yes - -hostmakedepends="tar gcc-objc flex perl python3" -makedepends="zlib-devel gmp-devel mpfr-devel libmpc-devel isl15-devel" -nostrip_files="libcaf_single.a libgcc.a libgcov.a libgcc_eh.a - libgnarl_pic.a libgnarl.a libgnat_pic.a libgnat.a libgmem.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() { - local _args - - [ -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 - - _args="--prefix=/usr" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --disable-nls" - _args+=" --disable-multilib" - _args+=" --disable-werror" - _args+=" --disable-shared" - _args+=" --with-system-zlib" - _args+=" ${_fpuflags}" - - ../binutils-${_binutils_version}/configure ${_args} - - make configure-host && make ${makejobs} - make install - - touch ${wrksrc}/.binutils_build_done -} - -_gcc_bootstrap() { - local _args - - [ -f ${wrksrc}/.gcc_bootstrap_done ] && return 0 - - cd ${wrksrc}/gcc-${_gcc_version} - for f in ${XBPS_SRCPKGDIR}/gcc/patches/*.patch; do - _apply_patch -p0 "$f" - done - for f in ${XBPS_SRCPKGDIR}/gcc/files/*-musl.patch; do - _apply_patch -p1 "$f" - done - - msg_normal "Building cross gcc bootstrap\n" - - [ ! -d ../gcc-bootstrap ] && mkdir ../gcc-bootstrap - cd ../gcc-bootstrap - - _args="--prefix=/usr" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --with-newlib" - _args+=" --enable-languages=c" - _args+=" --with-newlib" - _args+=" --disable-libssp" - _args+=" --disable-nls" - _args+=" --disable-libquadmath" - _args+=" --disable-threads" - _args+=" --disable-decimal-float" - _args+=" --disable-shared" - _args+=" --disable-libmpx" - _args+=" --disable-libmudflap" - _args+=" --disable-libgomp" - _args+=" --disable-libatomic" - _args+=" ${_fpuflags}" - - CFLAGS="-O0 -g0" CXXFLAGS="-O0 -g0" \ - ../gcc-${_gcc_version}/configure ${_args} - - 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\n" - - cd linux-${_linux_version} - - for f in ${XBPS_SRCPKGDIR}/kernel-libc-headers/patches/*.patch; do - _apply_patch -p0 $f - done - - make ARCH=mips headers_check - make ARCH=mips 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" - - # Apply musl patches if there are any - if [ -d "${XBPS_SRCPKGDIR}/musl/patches" ]; then - for f in ${XBPS_SRCPKGDIR}/musl/patches/*.patch; do - _apply_patch -p0 "$f" - done - fi - - CC="${_triplet}-gcc" CFLAGS="-Os -pipe -fPIC ${_archflags}" \ - ./configure --prefix=/usr - - make ${makejobs} - make DESTDIR=${_sysroot} install - - touch ${wrksrc}/.musl_build_done -} - -_gcc_build() { - local _args - - [ -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 - - _args="--prefix=/usr" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --libexecdir=/usr/lib" - _args+=" --enable-languages=c,ada,c++,objc,obj-c++,fortran,lto" - _args+=" --enable-libada" - _args+=" --enable-lto" - _args+=" --enable-default-pie" - _args+=" --enable-default-ssp" - _args+=" --disable-libsanitizer" - _args+=" --disable-multilib" - _args+=" --disable-nls" - _args+=" --disable-libquadmath" - _args+=" --disable-libmpx" - _args+=" --disable-libmudflap" - _args+=" --disable-libatomic" - _args+=" --enable-libssp" - _args+=" --enable-shared" - _args+=" --disable-symvers" - _args+=" ${_fpuflags}" - - ../gcc-${_gcc_version}/configure ${_args} - - 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 - ln -sf lib ${_sysroot}/usr/lib32 - ln -sf usr/lib ${_sysroot}/lib32 - - _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 - ln -sf lib ${DESTDIR}/${_sysroot}/usr/lib32 - ln -sf usr/lib ${DESTDIR}/${_sysroot}/lib32 - - # install linux API headers - cd ${wrksrc}/linux-${_linux_version} - make ARCH=mips 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 - - # move libcc1.so* to the sysroot - mv ${DESTDIR}/usr/lib/libcc1.so* ${DESTDIR}/${_sysroot}/usr/lib - - # 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.so symlinks relative. - ln -sf libc.so ${DESTDIR}/${_sysroot}/usr/lib/ld-musl-mips.so.1 - - # symlinks for gnarl and gnat shared libraries - _majorver=${_gcc_version%.*.*} - _adalib=usr/lib/gcc/${_triplet}/${_gcc_version}/adalib - mv -v ${DESTDIR}/${_adalib}/libgnarl-${_majorver}.so ${DESTDIR}/${_sysroot}/usr/lib - mv -v ${DESTDIR}/${_adalib}/libgnat-${_majorver}.so ${DESTDIR}/${_sysroot}/usr/lib - ln -svf libgnarl-${_majorver}.so libgnarl.so - ln -svf libgnat-${_majorver}.so libgnat.so - rm -vf ${DESTDIR}/${_adalib}/libgna{rl,t}.so - - # 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 -f ${DESTDIR}/${_sysroot}/{sbin,lib} -} +cross_triplet=${_triplet} +cross_wordsize=32 +cross_libc=musl +cross_binutils_version=${_binutils_version} +cross_gcc_version=${_gcc_version} +cross_musl_version=${_musl_version} +cross_linux_version=${_linux_version} +cross_linux_arch=arm +cross_gcc_skip_go=yes +cross_binutils_configure_args="--enable-default-hash-style=sysv" +cross_musl_cflags="-Os -march=mips32r2 -mhard-float" cross-mips-linux-muslhf-libc_package() { short_desc+=" - libc files" nostrip=yes noverifyrdeps=yes noshlibprovides=yes + pkg_install() { - vmove ${_sysroot} + vmove usr/${cross_triplet} } } From c69bc1bbce0b1a11905a5edbe77938335b60e439 Mon Sep 17 00:00:00 2001 From: q66 Date: Sat, 26 Dec 2020 00:11:45 +0100 Subject: [PATCH 15/16] cross-mipsel-linux-musl: rework with void-cross --- srcpkgs/cross-mipsel-linux-musl/template | 291 ++--------------------- 1 file changed, 23 insertions(+), 268 deletions(-) diff --git a/srcpkgs/cross-mipsel-linux-musl/template b/srcpkgs/cross-mipsel-linux-musl/template index 0c8b519b3f9..2c4d2bdd398 100644 --- a/srcpkgs/cross-mipsel-linux-musl/template +++ b/srcpkgs/cross-mipsel-linux-musl/template @@ -1,296 +1,51 @@ -# Template build file for 'cross-mipsel-linux-musl' -# +# Template file for 'cross-mipsel-linux-musl' +_triplet=mipsel-linux-musl _binutils_version=2.32 _gcc_version=9.3.0 _musl_version=1.1.24 _linux_version=4.19 - -_triplet=mipsel-linux-musl -_fpuflags="--with-float=soft --without-fp" -_archflags="-march=mips32r2 -msoft-float" -_sysroot="/usr/${_triplet}" - pkgname=cross-${_triplet} version=0.33 revision=3 -short_desc="Cross toolchain for MIPS32r2 LE softfloat target (musl)" +build_style=void-cross +configure_args="--with-arch=mips32r2 --with-float=soft + --with-linker-hash-style=sysv" +hostmakedepends="tar gcc-objc flex perl python3" +makedepends="isl15-devel libmpc-devel zlib-devel gmp-devel mpfr-devel" +depends="${pkgname}-libc-${version}_${revision}" +short_desc="Void cross toolchain for ${_triplet}" maintainer="Orphaned " homepage="https://www.voidlinux.org/" license="GPL-2.0-or-later, GPL-3.0-or-later, MIT" distfiles=" ${GNU_SITE}/binutils/binutils-${_binutils_version}.tar.xz ${GNU_SITE}/gcc/gcc-${_gcc_version}/gcc-${_gcc_version}.tar.xz - http://www.musl-libc.org/releases/musl-${_musl_version}.tar.gz + https://www.musl-libc.org/releases/musl-${_musl_version}.tar.gz ${KERNEL_SITE}/kernel/v4.x/linux-${_linux_version}.tar.xz" checksum="0ab6c55dd86a92ed561972ba15b9b70a8b9f75557f896446c82e8b36e473ee04 71e197867611f6054aa1119b13a0c0abac12834765fe2d81f35ac57f84f742d1 1370c9a812b2cf2a7d92802510cca0058cc37e66a7bedd70051f0a34015022a3 0c68f5655528aed4f99dae71a5b259edc93239fa899e2df79c055275c21749a1" -lib32disabled=yes -nocross=yes -nopie=yes -nodebug=yes -create_wrksrc=yes - -hostmakedepends="tar gcc-objc flex perl python3" -makedepends="zlib-devel gmp-devel mpfr-devel libmpc-devel isl15-devel" -nostrip_files="libcaf_single.a libgcc.a libgcov.a libgcc_eh.a - libgnarl_pic.a libgnarl.a libgnat_pic.a libgnat.a libgmem.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() { - local _args - - [ -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 - - _args="--prefix=/usr" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --disable-nls" - _args+=" --disable-multilib" - _args+=" --disable-werror" - _args+=" --disable-shared" - _args+=" --with-system-zlib" - _args+=" ${_fpuflags}" - - ../binutils-${_binutils_version}/configure ${_args} - - make configure-host && make ${makejobs} - make install - - touch ${wrksrc}/.binutils_build_done -} - -_gcc_bootstrap() { - local _args - - [ -f ${wrksrc}/.gcc_bootstrap_done ] && return 0 - - cd ${wrksrc}/gcc-${_gcc_version} - for f in ${XBPS_SRCPKGDIR}/gcc/patches/*.patch; do - _apply_patch -p0 "$f" - done - for f in ${XBPS_SRCPKGDIR}/gcc/files/*-musl.patch; do - _apply_patch -p1 "$f" - done - - msg_normal "Building cross gcc bootstrap\n" - - [ ! -d ../gcc-bootstrap ] && mkdir ../gcc-bootstrap - cd ../gcc-bootstrap - - _args="--prefix=/usr" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --with-newlib" - _args+=" --enable-languages=c" - _args+=" --with-newlib" - _args+=" --disable-libssp" - _args+=" --disable-nls" - _args+=" --disable-libquadmath" - _args+=" --disable-threads" - _args+=" --disable-decimal-float" - _args+=" --disable-shared" - _args+=" --disable-libmpx" - _args+=" --disable-libmudflap" - _args+=" --disable-libgomp" - _args+=" --disable-libatomic" - _args+=" ${_fpuflags}" - - CFLAGS="-O0 -g0" CXXFLAGS="-O0 -g0" \ - ../gcc-${_gcc_version}/configure ${_args} - - 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\n" - - cd linux-${_linux_version} - - for f in ${XBPS_SRCPKGDIR}/kernel-libc-headers/patches/*.patch; do - _apply_patch -p0 $f - done - - make ARCH=mips headers_check - make ARCH=mips 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" - - # Apply musl patches if there are any - if [ -d "${XBPS_SRCPKGDIR}/musl/patches" ]; then - for f in ${XBPS_SRCPKGDIR}/musl/patches/*.patch; do - _apply_patch -p0 "$f" - done - fi - - CC="${_triplet}-gcc" CFLAGS="-Os -pipe -fPIC ${_archflags}" \ - ./configure --prefix=/usr - - make ${makejobs} - make DESTDIR=${_sysroot} install - - touch ${wrksrc}/.musl_build_done -} - -_gcc_build() { - local _args - - [ -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 - - _args="--prefix=/usr" - _args+=" --libexecdir=/usr/lib" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --enable-languages=c,ada,c++,objc,obj-c++,fortran,lto" - _args+=" --enable-libada" - _args+=" --enable-lto" - _args+=" --enable-default-pie" - _args+=" --enable-default-ssp" - _args+=" --disable-libsanitizer" - _args+=" --disable-multilib" - _args+=" --disable-nls" - _args+=" --disable-libquadmath" - _args+=" --disable-libmpx" - _args+=" --disable-libmudflap" - _args+=" --disable-libatomic" - _args+=" --enable-libssp" - _args+=" --enable-shared" - _args+=" --disable-symvers" - _args+=" ${_fpuflags}" - - ../gcc-${_gcc_version}/configure ${_args} - - 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 - ln -sf lib ${_sysroot}/usr/lib32 - ln -sf usr/lib ${_sysroot}/lib32 - - _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 - ln -sf lib ${DESTDIR}/${_sysroot}/usr/lib32 - ln -sf usr/lib ${DESTDIR}/${_sysroot}/lib32 - - # install linux API headers - cd ${wrksrc}/linux-${_linux_version} - make ARCH=mips 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 - - # move libcc1.so* to the sysroot - mv ${DESTDIR}/usr/lib/libcc1.so* ${DESTDIR}/${_sysroot}/usr/lib - - # 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*.so.1 symlinks relative. - ln -sf libc.so ${DESTDIR}/${_sysroot}/usr/lib/ld-musl-mipsel.so.1 - ln -sf libc.so ${DESTDIR}/${_sysroot}/usr/lib/ld-musl-mipsel-sf.so.1 - - # symlinks for gnarl and gnat shared libraries - _majorver=${_gcc_version%.*.*} - _adalib=usr/lib/gcc/${_triplet}/${_gcc_version}/adalib - mv -v ${DESTDIR}/${_adalib}/libgnarl-${_majorver}.so ${DESTDIR}/${_sysroot}/usr/lib - mv -v ${DESTDIR}/${_adalib}/libgnat-${_majorver}.so ${DESTDIR}/${_sysroot}/usr/lib - ln -svf libgnarl-${_majorver}.so libgnarl.so - ln -svf libgnat-${_majorver}.so libgnat.so - rm -vf ${DESTDIR}/${_adalib}/libgna{rl,t}.so - - # 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 -f ${DESTDIR}/${_sysroot}/{sbin,lib} -} +cross_triplet=${_triplet} +cross_wordsize=32 +cross_libc=musl +cross_binutils_version=${_binutils_version} +cross_gcc_version=${_gcc_version} +cross_musl_version=${_musl_version} +cross_linux_version=${_linux_version} +cross_linux_arch=arm +cross_gcc_skip_go=yes +cross_binutils_configure_args="--without-fp --enable-default-hash-style=sysv" +cross_musl_cflags="-Os -march=mips32r2 -msoft-float" cross-mipsel-linux-musl-libc_package() { short_desc+=" - libc files" nostrip=yes noverifyrdeps=yes noshlibprovides=yes + pkg_install() { - vmove ${_sysroot} + vmove usr/${cross_triplet} } } From ddf58b10bdd98e0a4bf7433b79db2662fc1497e0 Mon Sep 17 00:00:00 2001 From: q66 Date: Sat, 26 Dec 2020 00:12:07 +0100 Subject: [PATCH 16/16] cross-mipsel-linux-muslhf: rework with void-cross --- srcpkgs/cross-mipsel-linux-muslhf/template | 290 ++------------------- 1 file changed, 23 insertions(+), 267 deletions(-) diff --git a/srcpkgs/cross-mipsel-linux-muslhf/template b/srcpkgs/cross-mipsel-linux-muslhf/template index bf75b9ec8d5..965f49b0110 100644 --- a/srcpkgs/cross-mipsel-linux-muslhf/template +++ b/srcpkgs/cross-mipsel-linux-muslhf/template @@ -1,295 +1,51 @@ -# Template build file for 'cross-mipsel-linux-muslhf' -# +# Template file for 'cross-mipsel-linux-muslhf' +_triplet=mipsel-linux-muslhf _binutils_version=2.32 _gcc_version=9.3.0 _musl_version=1.1.24 _linux_version=4.19 - -_triplet=mipsel-linux-muslhf -_fpuflags="--with-float=hard --with-fp" -_archflags="-march=mips32r2 -mhard-float" -_sysroot="/usr/${_triplet}" - pkgname=cross-${_triplet} version=0.33 revision=3 -short_desc="Cross toolchain for MIPS32r2 LE hardfloat target (musl)" +build_style=void-cross +configure_args="--with-arch=mips32r2 --with-float=hard + --with-linker-hash-style=sysv" +hostmakedepends="tar gcc-objc flex perl python3" +makedepends="isl15-devel libmpc-devel zlib-devel gmp-devel mpfr-devel" +depends="${pkgname}-libc-${version}_${revision}" +short_desc="Void cross toolchain for ${_triplet}" maintainer="Orphaned " homepage="https://www.voidlinux.org/" license="GPL-2.0-or-later, GPL-3.0-or-later, MIT" distfiles=" ${GNU_SITE}/binutils/binutils-${_binutils_version}.tar.xz ${GNU_SITE}/gcc/gcc-${_gcc_version}/gcc-${_gcc_version}.tar.xz - http://www.musl-libc.org/releases/musl-${_musl_version}.tar.gz + https://www.musl-libc.org/releases/musl-${_musl_version}.tar.gz ${KERNEL_SITE}/kernel/v4.x/linux-${_linux_version}.tar.xz" checksum="0ab6c55dd86a92ed561972ba15b9b70a8b9f75557f896446c82e8b36e473ee04 71e197867611f6054aa1119b13a0c0abac12834765fe2d81f35ac57f84f742d1 1370c9a812b2cf2a7d92802510cca0058cc37e66a7bedd70051f0a34015022a3 0c68f5655528aed4f99dae71a5b259edc93239fa899e2df79c055275c21749a1" -lib32disabled=yes -nocross=yes -nopie=yes -nodebug=yes -create_wrksrc=yes - -hostmakedepends="tar gcc-objc flex perl python3" -makedepends="zlib-devel gmp-devel mpfr-devel libmpc-devel isl15-devel" -nostrip_files="libcaf_single.a libgcc.a libgcov.a libgcc_eh.a - libgnarl_pic.a libgnarl.a libgnat_pic.a libgnat.a libgmem.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() { - local _args - - [ -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 - - _args="--prefix=/usr" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --disable-nls" - _args+=" --disable-multilib" - _args+=" --disable-werror" - _args+=" --disable-shared" - _args+=" --with-system-zlib" - _args+=" ${_fpuflags}" - - ../binutils-${_binutils_version}/configure ${_args} - - make configure-host && make ${makejobs} - make install - - touch ${wrksrc}/.binutils_build_done -} - -_gcc_bootstrap() { - local _args - - [ -f ${wrksrc}/.gcc_bootstrap_done ] && return 0 - - cd ${wrksrc}/gcc-${_gcc_version} - for f in ${XBPS_SRCPKGDIR}/gcc/patches/*.patch; do - _apply_patch -p0 "$f" - done - for f in ${XBPS_SRCPKGDIR}/gcc/files/*-musl.patch; do - _apply_patch -p1 "$f" - done - - msg_normal "Building cross gcc bootstrap\n" - - [ ! -d ../gcc-bootstrap ] && mkdir ../gcc-bootstrap - cd ../gcc-bootstrap - - _args="--prefix=/usr" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --with-newlib" - _args+=" --enable-languages=c" - _args+=" --with-newlib" - _args+=" --disable-libssp" - _args+=" --disable-nls" - _args+=" --disable-libquadmath" - _args+=" --disable-threads" - _args+=" --disable-decimal-float" - _args+=" --disable-shared" - _args+=" --disable-libmpx" - _args+=" --disable-libmudflap" - _args+=" --disable-libgomp" - _args+=" --disable-libatomic" - _args+=" ${_fpuflags}" - - CFLAGS="-O0 -g0" CXXFLAGS="-O0 -g0" \ - ../gcc-${_gcc_version}/configure ${_args} - - 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\n" - - cd linux-${_linux_version} - - for f in ${XBPS_SRCPKGDIR}/kernel-libc-headers/patches/*.patch; do - _apply_patch -p0 $f - done - - make ARCH=mips headers_check - make ARCH=mips 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" - - # Apply musl patches if there are any - if [ -d "${XBPS_SRCPKGDIR}/musl/patches" ]; then - for f in ${XBPS_SRCPKGDIR}/musl/patches/*.patch; do - _apply_patch -p0 "$f" - done - fi - - CC="${_triplet}-gcc" CFLAGS="-Os -pipe -fPIC ${_archflags}" \ - ./configure --prefix=/usr - - make ${makejobs} - make DESTDIR=${_sysroot} install - - touch ${wrksrc}/.musl_build_done -} - -_gcc_build() { - local _args - - [ -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 - - _args="--prefix=/usr" - _args+=" --libexecdir=/usr/lib" - _args+=" --target=${_triplet}" - _args+=" --with-sysroot=${_sysroot}" - _args+=" --enable-languages=c,ada,c++,objc,obj-c++,fortran,lto" - _args+=" --enable-libada" - _args+=" --enable-lto" - _args+=" --enable-default-pie" - _args+=" --enable-default-ssp" - _args+=" --disable-libsanitizer" - _args+=" --disable-multilib" - _args+=" --disable-nls" - _args+=" --disable-libquadmath" - _args+=" --disable-libmpx" - _args+=" --disable-libmudflap" - _args+=" --disable-libatomic" - _args+=" --enable-libssp" - _args+=" --enable-shared" - _args+=" --disable-symvers" - _args+=" ${_fpuflags}" - - ../gcc-${_gcc_version}/configure ${_args} - - 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 - ln -sf lib ${_sysroot}/usr/lib32 - ln -sf usr/lib ${_sysroot}/lib32 - - _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 - ln -sf lib ${DESTDIR}/${_sysroot}/usr/lib32 - ln -sf usr/lib ${DESTDIR}/${_sysroot}/lib32 - - # install linux API headers - cd ${wrksrc}/linux-${_linux_version} - make ARCH=mips 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 - - # move libcc1.so* to the sysroot - mv ${DESTDIR}/usr/lib/libcc1.so* ${DESTDIR}/${_sysroot}/usr/lib - - # 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.so symlinks relative. - ln -sf libc.so ${DESTDIR}/${_sysroot}/usr/lib/ld-musl-mipsel.so.1 - - # symlinks for gnarl and gnat shared libraries - _majorver=${_gcc_version%.*.*} - _adalib=usr/lib/gcc/${_triplet}/${_gcc_version}/adalib - mv -v ${DESTDIR}/${_adalib}/libgnarl-${_majorver}.so ${DESTDIR}/${_sysroot}/usr/lib - mv -v ${DESTDIR}/${_adalib}/libgnat-${_majorver}.so ${DESTDIR}/${_sysroot}/usr/lib - ln -svf libgnarl-${_majorver}.so libgnarl.so - ln -svf libgnat-${_majorver}.so libgnat.so - rm -vf ${DESTDIR}/${_adalib}/libgna{rl,t}.so - - # 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 -f ${DESTDIR}/${_sysroot}/{sbin,lib} -} +cross_triplet=${_triplet} +cross_wordsize=32 +cross_libc=musl +cross_binutils_version=${_binutils_version} +cross_gcc_version=${_gcc_version} +cross_musl_version=${_musl_version} +cross_linux_version=${_linux_version} +cross_linux_arch=arm +cross_gcc_skip_go=yes +cross_binutils_configure_args="--enable-default-hash-style=sysv" +cross_musl_cflags="-Os -march=mips32r2 -mhard-float" cross-mipsel-linux-muslhf-libc_package() { short_desc+=" - libc files" nostrip=yes noverifyrdeps=yes noshlibprovides=yes + pkg_install() { - vmove ${_sysroot} + vmove usr/${cross_triplet} } }