PKGBUILD 2.63 KB
Newer Older
Jan Mette's avatar
Jan Mette committed
1 2 3 4 5 6 7
# $Id: PKGBUILD 61113 2009-12-12 08:21:32Z allan $
# Maintainer: Allan McRae <allan@archlinux.org>

# toolchain build order: kernel-headers->glibc->binutils->gcc->binutils->glibc

pkgname=binutils
pkgver=2.20
Jan Mette's avatar
Jan Mette committed
8
pkgrel=5
Jan Mette's avatar
Jan Mette committed
9 10 11 12 13 14 15 16 17
_date=20091101
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')
depends=('glibc>=2.11.1' 'zlib')
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 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
md5sums=('df0781f66c7be07f1d54e79ee61d3b37')

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
Jan Mette's avatar
Jan Mette committed
70 71

  rm -rf $pkgdir/usr/share/info/dir
Jan Mette's avatar
Jan Mette committed
72
}