PKGBUILD 2.6 KB
Newer Older
Jan Mette's avatar
Jan Mette committed
1
# $Id: PKGBUILD 72655 2010-03-19 03:19:22Z allan $
Jan Mette's avatar
Jan Mette committed
2 3
# Maintainer: Allan McRae <allan@archlinux.org>

Jan Mette's avatar
Jan Mette committed
4
# toolchain build order: linux-api-headers->glibc->binutils->gcc->binutils->glibc
Jan Mette's avatar
Jan Mette committed
5 6

pkgname=binutils
Jan Mette's avatar
Jan Mette committed
7 8 9
pkgver=2.20.1
pkgrel=1
_date=20100318
Jan Mette's avatar
Jan Mette committed
10 11 12 13 14
pkgdesc="A set of programs to assemble and manipulate binary and object files"
arch=('i686' 'x86_64')
url="http://www.gnu.org/software/binutils/"
license=('GPL')
groups=('base')
Jan Mette's avatar
Jan Mette committed
15
depends=('glibc>=2.11.1-2' 'zlib')
Jan Mette's avatar
Jan Mette committed
16 17
options=('!libtool' '!distcc' '!ccache')
install=binutils.install
Jan Mette's avatar
Jan Mette committed
18
source=(http://konnektion.ath.cx/sources/core/${pkgname}/${pkgname}-${pkgver}_${_date}.tar.bz2)
Jan Mette's avatar
Jan Mette committed
19
md5sums=('c153213a20a5075bd98d7f12fbd38a51')
Jan Mette's avatar
Jan Mette committed
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70

mksource() {
  mkdir ${pkgname}-${_date}
  cd ${pkgname}-${_date}
  export _TAG=binutils-2_20-branch
  export 'CVSROOT=:pserver:anoncvs@sourceware.org:/cvs/src'
  cvs -z9 co -r $_TAG binutils || return 1
  cd src && tar -cvjf ../../binutils-${pkgver}_${_date}.tar.bz2 *
}

build() {
  cd ${srcdir}
  mkdir build && cd build

  CC="gcc -L`pwd`/bfd/.libs/"
  if [ "${CARCH}" = "x86_64" ]; then
    ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-64-bit-bfd --disable-multilib 
  else
    ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared
  fi
  # fix man files install path
  sed -i -e "s:mandir \= \/usr\/share:mandir \= ${pkgdir}\/usr\/share:" ${srcdir}/build/Makefile || return 1
  # fix info files install path
  sed -i -e "s:infodir \= \/usr\/share:infodir \= ${pkgdir}\/usr\/share:" ${srcdir}/build/Makefile || return 1

  # This checks the host environment and makes sure all the necessary tools are available to compile Binutils.
  make configure-host || return 1

  make tooldir=${pkgdir}/usr || return 1
  make prefix=${pkgdir}/usr tooldir=${pkgdir}/usr install
  install -m644 ${srcdir}/include/libiberty.h ${pkgdir}/usr/include

  if [ "${CARCH}" = "x86_64" ]; then
    # Rebuild libiberty.a with -fPIC
    make -C libiberty clean
    make CFLAGS="$CFLAGS -fPIC" -C libiberty
    install -m644 libiberty/libiberty.a ${pkgdir}/usr/lib
    # Rebuild libbfd.a with -fPIC
    make -C bfd clean
    make CFLAGS="$CFLAGS -fPIC" -C bfd
    install -m644 bfd/libbfd.a ${pkgdir}/usr/lib
  fi

  rm -f ${pkgdir}/usr/share/man/man1/{dlltool,nlmconv,windres,windmc}*

  # Remove these symlinks, with binutils prereleases they are not ABI stable.
  # Programs should compile static to the .a file.
  rm -f ${pkgdir}/usr/lib/lib{bfd,opcodes}.so
  echo "INPUT ( /usr/lib/libbfd.a -liberty -lz )" >${pkgdir}/usr/lib/libbfd.so
  echo "INPUT ( /usr/lib/libopcodes.a -lbfd )" >${pkgdir}/usr/lib/libopcodes.so
}