void-packages/srcpkgs/binutils/template

117 lines
3.2 KiB
Text

# Template file for 'binutils'
pkgname=binutils
version=2.23.52.0.2
revision=3
hostmakedepends="flex perl"
makedepends="zlib-devel"
short_desc="GNU binary utilities"
maintainer="Juan RP <xtraeme@gmail.com>"
homepage="http://www.gnu.org/software/binutils/"
license="GPL-3"
distfiles="${KERNEL_SITE}/devel/binutils/$pkgname-$version.tar.xz"
checksum=c2229d5d4067c782b67cfaf7f049acd8361407c0870991bc5430be5c548f6825
if [ "$CROSS_BUILD" ]; then
makedepends+=" libfl-devel"
fi
do_configure() {
if [ "$XBPS_TARGET_MACHINE" = "x86_64" ]; then
CONFIGFLAG="--enable-64-bit-bfd --enable-multilib"
fi
if [ "$CROSS_BUILD" ]; then
# Do not use configure_args nor build_style=gnu-configure,
# avoiding --with-sysroot to $XBPS_CROSS_BASE.
CONFIGFLAG="--host=$XBPS_CROSS_TRIPLET --with-build-sysroot=$XBPS_CROSS_BASE"
fi
./configure --prefix=/usr --enable-threads \
--enable-plugins --enable-secureplt --with-mmap \
--enable-shared --disable-bootstrap $CONFIGFLAG
}
do_build() {
make ${makejobs}
# Rebuild libiberty.a with -fPIC
cp -a libiberty libiberty-pic
make -C libiberty-pic clean
make CFLAGS="$CFLAGS -fPIC" -C libiberty-pic
# Rebuild libbfd.a with -fPIC
# hidden visability prevent 3rd party shared libraries exporting bfd non-stable API
cp -a bfd bfd-pic
make -C bfd-pic clean
make CFLAGS="$CFLAGS -fPIC -fvisibility=hidden" -C bfd-pic
# Rebuild libopcodes.a with -fPIC
cp -a opcodes opcodes-pic
make -C opcodes-pic clean
make CFLAGS="$CFLAGS -fPIC" -C opcodes-pic
}
do_install() {
if [ "$XBPS_TARGET_MACHINE" = "x86_64" ]; then
mkdir -p ${DESTDIR}/usr/lib
cd ${DESTDIR}/usr
ln -s lib lib64
cd ${wrksrc}
fi
make DESTDIR=${DESTDIR} tooldir=/usr install
# Remove ld.bfd (hardlink) and make a symlink.
rm -f ${DESTDIR}/usr/bin/ld.bfd
ln -sfr ${DESTDIR}/usr/bin/ld ${DESTDIR}/usr/bin/ld.bfd
# Add some useful headers
install -m644 include/libiberty.h ${DESTDIR}/usr/include
install -m644 include/demangle.h ${DESTDIR}/usr/include
# install libraries rebuilt with -fPIC
install -m644 libiberty-pic/libiberty.a ${DESTDIR}/usr/lib
install -m644 bfd-pic/libbfd.a ${DESTDIR}/usr/lib
install -m644 opcodes-pic/libopcodes.a ${DESTDIR}/usr/lib
# Remove these symlinks, they are not ABI stable.
# Programs should compile static to the .a file.
rm -f ${DESTDIR}/usr/lib/lib{bfd,opcodes}.so
echo "INPUT ( /usr/lib/libbfd.a -liberty -lz )" \
>${DESTDIR}/usr/lib/libbfd.so
echo "INPUT ( /usr/lib/libopcodes.a -lbfd )" \
>${DESTDIR}/usr/lib/libopcodes.so
# Remove info file that conflicts with autoconf.
rm -f ${DESTDIR}/usr/share/info/standards.info
rm -f ${DESTDIR}/usr/lib64
# Remove useless manpages.
for f in dlltool nlmconv windres windmc; do
rm -f ${DESTDIR}/usr/share/man/man1/${f}.1
done
# Fix for multilib builds.
if [ -d ${DESTDIR}/usr/lib32 ]; then
mv ${DESTDIR}/usr/lib32/* ${DESTDIR}/usr/lib
rmdir ${DESTDIR}/usr/lib32
fi
# Remove the requirement of PACKAGE{,_VERSION} to be defined
# from bfd.h... wth?
sed -i 35,+3d ${DESTDIR}/usr/include/bfd.h
}
binutils-devel_package() {
depends="binutils>=$version"
short_desc+=" - development files"
pkg_install() {
vmove usr/include
vmove "usr/lib/*.a"
vmove usr/lib/libbfd.so
vmove usr/lib/libopcodes.so
}
}
binutils_package() {
pkg_install() {
vmove usr
}
}