#!/usr/bin/bash
# JOBoRun		: Jwm OpenBox Obarun RUNit
# Maintainer	: Joe Bo Run <joborun@disroot.org>
# PkgSource		: url="https://gittea.disroot.org/joborun-pkg/jobcore/$pkgname"
# Website		: https://pozol.eu
#-----------------------------------------| DESCRIPTION |---------------------------------------

pkgname=binutils
pkgver=2.40
_commit=65dbb94214516c915df5e0fe554ea165557e7ec7
pkgrel=04
pkgdesc='A set of programs to assemble and manipulate binary and object files'
arch=(x86_64)
#url='https://www.gnu.org/software/binutils'
url='https://ftp.gnu.org/gnu/binutils'
groups=( jobbot )
depends=(glibc zlib libelf jansson)
makedepends=(git)
checkdepends=(dejagnu debuginfod bc)
optdepends=('debuginfod: for debuginfod server/client functionality')
conflicts=(binutils-multilib)
replaces=(binutils-multilib)
backup=('etc/gprofng.rc')
options=(staticlibs !distcc !ccache)
#options=(staticlibs !distcc !ccache debug)  ## uncomment this line to have the debug pkg produced
# the above was removed by arch in version 2.40-1
source=(git+https://sourceware.org/git/binutils-gdb.git#commit=${_commit}
        gold-warn-unsupported.patch)

prepare() {
  [[ ! -d binutils-gdb ]] && ln -s binutils-${pkgver} binutils-gdb
  mkdir -p binutils-build

  cd binutils-gdb

  # Turn off development mode (-Werror, gas run-time checks, date in sonames)
  sed -i '/^development=/s/true/false/' bfd/development.sh

  # Creds @Fedora
  # Change the gold configuration script to only warn about
  # unsupported targets.  This allows the binutils to be built with
  # BPF support enabled.
  patch -Np1 -i "${srcdir}"/gold-warn-unsupported.patch
}

build() {
  cd binutils-build

  "${srcdir}"/binutils-gdb/configure \
    --prefix=/usr \
    --sysconfdir="${pkgdir}"/etc \
    --with-lib-path=/usr/lib:/usr/local/lib \
    --with-bugurl=https://bugs.archlinux.org/ \
    --enable-cet \
    --enable-colored-disassembly \
    --enable-default-execstack=no \
    --enable-deterministic-archives \
    --enable-gold \
    --enable-install-libiberty \
    --enable-jansson \
    --enable-ld=default \
    --enable-new-dtags \
    --enable-pgo-build=lto \
    --enable-plugins \
    --enable-relro \
    --enable-shared \
    --enable-targets=x86_64-pep,bpf-unknown-none \
    --enable-threads \
    --disable-gdb \
    --disable-gdbserver \
    --disable-libdecnumber \
    --disable-readline \
    --disable-sim \
    --disable-werror \
    --with-debuginfod \
    --with-pic \
    --with-system-zlib

  make -O tooldir=/usr

  # Extract the FSF All Permissive License
  # <https://www.gnu.org/prep/maintain/html_node/License-Notices-for-Other-Files.html>
  # used for some linker scripts.
  tail -n 5 "${srcdir}"/binutils-gdb/ld/scripttempl/README > FSFAP
}

check() {
  cd binutils-build

#  # current testsuite failure in debuginfod (objdump)
#  # https://sourceware.org/bugzilla/show_bug.cgi?id=28029
#  sed -i '/test_fetch_debuglink $OBJDUMP/d' \
#    $srcdir/binutils-gdb/binutils/testsuite/binutils-all/debuginfod.exp
  # Use minimal flags for testsuite
  # ld testsuite uses CFLAGS_FOR_TARGET and requires -g
  # gold testsuite requires CXXFLAGS/CFLAGS with default PIE/PIC disabled
  make -O CFLAGS_FOR_TARGET="-O2 -g" \
          CXXFLAGS="-O2 -no-pie -fno-PIC" \
          CFLAGS="-O2 -no-pie" \
          LDFLAGS="" \
          check || true
}

package() {
  cd binutils-build
  make prefix="${pkgdir}"/usr tooldir="${pkgdir}"/usr install

  # install PIC version of libiberty
  install -m644 libiberty/pic/libiberty.a "${pkgdir}"/usr/lib

  # Remove unwanted files
  rm -f "${pkgdir}"/usr/share/man/man1/{dlltool,windres,windmc}*

  # No shared linking to these files outside binutils
  rm -f "${pkgdir}"/usr/lib/lib{bfd,opcodes}.so
  tee "${pkgdir}"/usr/lib/libbfd.so << EOS
/* GNU ld script */

INPUT( /usr/lib/libbfd.a -lsframe -liberty -lz -lzstd -ldl )
EOS

  tee "${pkgdir}"/usr/lib/libopcodes.so << EOS
/* GNU ld script */

INPUT( /usr/lib/libopcodes.a -lbfd )
EOS

  # install FSF All Permissive License
  install -Dm644 -t "${pkgdir}"/usr/share/licenses/${pkgname}/ FSFAP
}

#---- license gpg-key sha256sums ----

license=('GPL3' 'GPL' 'FDL1.3' 'custom:FSFAP')

validpgpkeys=(3A24BC1E8FB409FA9F14371813FCEF89DD9E3C4F)

sha256sums=(SKIP
	2d430b66f84a19c154725ec535280c493be1d34f1a90f95208dce02fecd0e4e4) # gold-warn-unsupported.patch

##  b0c2f7afb0b79f22d8ddbca27c65d5442ff1653d64639dd3bf6e7445e8b1fcb9  binutils-2.40-04-x86_64.pkg.tar.lz


