# Maintainer of official package: Felix Yan # Same as official package but uses symlinks instead of hard links allowing # installation when /usr/i686-w64-mingw32 and /usr/x86_64-w64-mingw32 are # bound from another partition. pkgname=mingw-w64-binutils-symlinks pkgver=2.42 pkgrel=1 pkgdesc="Cross binutils for the MinGW-w64 cross-compiler" arch=('x86_64') url="http://www.gnu.org/software/binutils" license=(GPL-2.0-or-later GPL-3.0-or-later LGPL-2.0-or-later LGPL-3.0-or-later GFDL-1.3 FSFAP) groups=('mingw-w64-toolchain' 'mingw-w64') depends=('zlib') provides=('mingw-w64-binutils') conflicts=('mingw-w64-binutils'); options=('!libtool' '!emptydirs') validpgpkeys=('3A24BC1E8FB409FA9F14371813FCEF89DD9E3C4F') # Nick Clifton (Chief Binutils Maintainer) source=("https://ftp.gnu.org/gnu/binutils/binutils-${pkgver}.tar.gz"{,.sig}) sha512sums=('1e4ee462513eadd3c540e4782f9661df62ecbcd4d6297d61dcc0845ae7d30243c57571787706af3bb4d561e4350609d7057307290e81d76290a301f159a6abc5' 'SKIP') _targets="i686-w64-mingw32 x86_64-w64-mingw32" prepare() { cd "$srcdir"/binutils-${pkgver} #do not install libiberty sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in } build() { # Fix the check for limits.h and certain other checks by dropping the fortify flag from CPPFLAGS # note: Otherwise libiberty/config.h lacks HAVE_LIMITS_H and the compilation runs into errors like: # /build/gcc-static-compat/src/gcc/libiberty/fibheap.c:38:25: error: ‘LONG_MIN’ undeclared (first use in this function) # 38 | #define FIBHEAPKEY_MIN LONG_MIN # | ^~~~~~~~ # /build/gcc-static-compat/src/gcc/libiberty/fibheap.c:220:30: note: in expansion of macro ‘FIBHEAPKEY_MIN’ # 220 | if (okey == key && okey != FIBHEAPKEY_MIN) # | ^~~~~~~~~~~~~~ # /build/gcc-static-compat/src/gcc/libiberty/fibheap.c:36:1: note: ‘LONG_MIN’ is defined in header ‘’; did you forget to ‘#include ’? # 35 | #include "fibheap.h" # +++ |+#include CPPFLAGS=${CPPFLAGS/-D_FORTIFY_SOURCE=2} for _target in $_targets; do echo "Building ${_target} cross binutils" mkdir -p "$srcdir"/binutils-${_target} && cd "${srcdir}/binutils-${_target}" "$srcdir"/binutils-${pkgver}/configure --prefix=/usr \ --target=${_target} \ --infodir=/usr/share/info/${_target} \ --enable-lto --enable-plugins \ --enable-deterministic-archives \ --disable-multilib --disable-nls \ --disable-werror make -O done } package() { for _target in ${_targets}; do echo "Installing ${_target} cross binutils" cd "$srcdir"/binutils-${_target} make DESTDIR="$pkgdir" install rm "$pkgdir"/usr/lib/bfd-plugins/libdep.so done cd "${pkgdir}/usr/bin" for file in *; do if [[ ! -L $file ]] && [[ ! -d $file ]]; then local _arch="${file%*-w64-mingw32*}" local _name="${file#*-w64-mingw32-}" local _target="/usr/${_arch}-w64-mingw32/bin/${_name}" if [[ -f ${pkgdir}/${_target} ]]; then ln -sf "${_target}" "${file}" fi fi done }