void-packages/srcpkgs/binutils/template

95 lines
3.1 KiB
Plaintext

# Template file for 'binutils'
pkgname=binutils
version=2.22.52.0.4
revision=2
makedepends="flex perl"
subpackages="$pkgname-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=d88ea0bc8591098a1666d9b97b93d81098816dd16faff90d3ed15072b40e1caf
long_desc="
The GNU binutils package contains essential tools to assemble, link and
manipulate binary and object files. They are often used with a compiler
and additional libraries for building software.
It includes the GNU linker, the portable GNU assembler, ar for modifying
archives (such as libraries), nm for listing symbols from object files,
objdump for displaying object file information, ranlib for generating
archive indexes, size for listing section sizes of object files,
strings for outputing the printable characters in files, strip for
stripping out symbols (like debugging information) from object files,
and other tools."
do_configure() {
./configure ${CONFIGURE_SHARED_ARGS} --enable-threads \
--enable-64-bit-bfd --enable-multilib --enable-plugins \
--enable-secureplt --with-mmap --enable-shared
}
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_MACHINE" = "x86_64" ]; then
mkdir -p ${SRCPKGDESTDIR}/usr/lib
cd ${SRCPKGDESTDIR}/usr && ln -s lib lib64 && cd ${wrksrc}
fi
make DESTDIR=${DESTDIR} tooldir=/usr install
# 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
}