diff options
Diffstat (limited to 'cross/cross-binutils')
-rw-r--r-- | cross/cross-binutils/PKGBUILD | 166 |
1 files changed, 78 insertions, 88 deletions
diff --git a/cross/cross-binutils/PKGBUILD b/cross/cross-binutils/PKGBUILD index 7c1623782..d01e8e9fc 100644 --- a/cross/cross-binutils/PKGBUILD +++ b/cross/cross-binutils/PKGBUILD @@ -1,5 +1,5 @@ -# Maintainer (Arch): Allan McRae <allan@archlinux.org> -# Maintainer: Márcio Silva <coadde@hyperbola.info> +# Contributor: Márcio Silva <coadde@hyperbola.info> +# Maintainer: David P. <megver83@parabola.nu> # toolchain build order: {kernel}-api-headers->glibc->binutils->gcc->binutils->glibc @@ -11,6 +11,8 @@ # ->binutils(target system)->gcc(target system)->binutils(target system) # ->glibc(target system) +# NOTE: libtool requires rebuilt with each new gcc version + #-------------------------------------------------------------------------------- # cross-compile table #-------------------------------------------------------------------------------- @@ -66,110 +68,98 @@ # < : experimental support. (future) #-------------------------------------------------------------------------------- -# options -#-------------------------------------------------------------------------------- - -# Hardware architecture: - -# options: "same", "x86_64", "i686", "armv7l" or "xtensa" -_arch_target=armv7l - -# OS target: - -# system: <os> or <kernel>-<os> -# options: "gnu", "linux-gnu", "linux-gnueabihf" or "elf" -_os_target=linux-gnueabihf - -#-------------------------------------------------------------------------------- -# variables -#-------------------------------------------------------------------------------- - -# set the default values if it's not added -[[ -z $_arch_target ]] && _arch_target=same -[[ -z $_os_target ]] && _os_target=linux-gnu - -# set the value on _arch variable -if [[ $_arch_target == same ]]; then - _arch=$CARCH -else - _arch=$_arch_target -fi - -# set the value on _target variable -if [[ $_arch == i686 ]]; then - _target=$_arch-pc-$_os_target -else - _target=$_arch-unknown-$_os_target -fi - +# Tips for build(): #-------------------------------------------------------------------------------- - -_pkgname=binutils -pkgname=$_target-$_pkgname -pkgver=2.27 -_pkgverpatch=$pkgver +# * If builing without "--disable-multilib" make sure to have "--with-python-dir=share/gcc-$_target" + +# * When building using `make' instead of `make all-gcc' append "--with-sysroot=/usr/$_target" and +# "--with-native-system-header-dir=/include". You'll also have to build and add a libc implementation +# in makedepends as $_target-<libc> (e.g. $_target-newlib or $_target-glibc) + +# Toolchain triplet: <_arch>-<machine>-<_os_target> +# <machine> is generally optional and uneeded +_target=x86_64-pc-linux-gnu + +# This are some options for names. Change $_target_name in pkgdesc according to the target architecture +case ${_target%%-*} in + arm*) _target_name=ARM + ;; + aarch64*) _target_name=ARM64 + ;; + xtensa) _target_name=Xtensa + ;; + sh*) _target_name=SuperH + ;; + powerpc*) _target_name=PowerPC + ;; + riscv*) _target_name=RISC-V + ;; + mips*) _target_name=MIPS + ;; + i686) _target_name=x86 + ;; + *) _target_name=${_target%%-*} + ;; +esac + +pkgname=$_target-binutils +pkgver=2.30 pkgrel=1 -_commit=2870b1ba -pkgdesc="A set of programs to assemble and manipulate binary and object files" +pkgdesc="A set of programs to assemble and manipulate binary and object files for the $_target_name target" arch=('i686' 'x86_64' 'armv7h' 'aarch64' 'mips64el') -url="http://www.gnu.org/software/$_pkgname/" -license=('GPL') -groups=('cross-devel') -depends=('glibc>=2.24' 'zlib') -makedepends=('git') -checkdepends=('dejagnu' 'bc') -options=('staticlibs' '!distcc' '!ccache') -#source=(ftp://ftp.gnu.org/gnu/$_pkgname/$_pkgname-${pkgver}.tar.bz2{,.sig}) -source=(git://sourceware.org/git/$_pkgname-gdb.git#commit=${_commit} - https://repo.parabola.nu/other/$_pkgname/$_pkgverpatch/$_pkgname-xtensa.patch) -md5sums=('SKIP' - 'd3c1408246493c42fc2b78508571f584') -#validpgpkeys=('EAF1C276A747E9ED86210CBAC3126D3B4AE55E93') +url='http://www.gnu.org/software/binutils/' +license=(GPL) +depends=(zlib) +source=(https://ftp.gnu.org/gnu/binutils/binutils-$pkgver.tar.bz2{,.sig}) +sha512sums=('c3ce91aa20f058ec589bf18c722bf651331b394db6378900cc813cc0eea3a331a96584d5ae090630b627369510397dccc9edfcd43d4aeefc99579f277a05c72c' + 'SKIP') +validpgpkeys=('EAF1C276A747E9ED86210CBAC3126D3B4AE55E93' # Tristan Gingold <gingold@adacore.com> + '3A24BC1E8FB409FA9F14371813FCEF89DD9E3C4F') # Nick Clifton (Chief Binutils Maintainer) <nickc@redhat.com> prepare() { - cd $_pkgname-gdb - - # hack! - libiberty configure tests for header files using "$CPP $CPPFLAGS" + cd binutils-$pkgver sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" libiberty/configure - - # open-ath9k-htc-firmware patch - [[ $_target == xtensa-unknown-elf ]] && patch -p1 -i ${srcdir}/$_pkgname-xtensa.patch - - mkdir ${srcdir}/$_pkgname-build } build() { - cd $_pkgname-build - - ../$_pkgname-gdb/configure --prefix=/usr \ - --with-lib-path=/usr/lib:/usr/local/lib \ - --with-bugurl=https://labs.parabola.nu/ \ - --enable-threads --with-pic \ - --enable-ld=default --enable-gold --enable-plugins \ - --enable-deterministic-archives \ - --disable-werror --disable-gdb --disable-nls \ - --target=$_target --with-sysroot=/usr/$_target - - # check the host environment and makes sure all the necessary tools are available - make configure-host - - make tooldir=/usr + cd binutils-$pkgver + + if [ "${CARCH}" != "i686" ]; then + # enabling gold linker at i686 makes the install fail + enable_gold='--enable-gold' + fi + + ./configure --target=$_target \ + --with-sysroot=/usr/$_target \ + --prefix=/usr \ + --disable-multilib \ + --with-gnu-as \ + --with-gnu-ld \ + --disable-nls \ + --enable-ld=default \ + $enable_gold \ + --enable-plugins \ + --enable-deterministic-archives + + make } check() { - cd $_pkgname-build + cd binutils-$pkgver # unset LDFLAGS as testsuite makes assumptions about which ones are active - # ignore failures in gold testsuite... + # do not abort on errors - manually check log files make -k LDFLAGS="" check || true } package() { - cd $_pkgname-build - make prefix=${pkgdir}/usr install + cd binutils-$pkgver + + make DESTDIR="$pkgdir" install + + # Remove file conflicting with host binutils and manpages for MS Windows tools + rm "$pkgdir"/usr/share/man/man1/$_target-{dlltool,nlmconv,windres,windmc}* # Remove info documents that conflict with host version - rm -rf ${pkgdir}/usr/share/info - [[ $_target != xtensa-unknown-elf ]] && echo "INPUT ( /usr/lib/libbfd.a -liberty -lz -ldl )" > "$pkgdir"/usr/lib/libbfd.so - [[ $_target != xtensa-unknown-elf ]] && echo "INPUT ( /usr/lib/libopcodes.a -lbfd )" > "$pkgdir"/usr/lib/libopcodes.so + rm -r "$pkgdir"/usr/share/info } |