# Maintainer: Alexey Pavlov <alexpux@gmail.com>

pkgname=gdb
pkgname=("gdb"
         "gdb-multiarch")
pkgver=14.2
pkgrel=2
_gcc_ver=13.2.0
pkgdesc="GNU Debugger (MSYS2 version)"
arch=('i686' 'x86_64')
license=('spdx:GPL-3.0-or-later')
url="https://www.gnu.org/software/gdb/"
depends=('gcc-libs' 'zlib' 'python' 'libexpat' 'libreadline' 'mpc' 'mpfr' 'xxhash' 'libguile' 'zstd')
#checkdepends=('dejagnu' 'bc')
makedepends=(autotools
             gcc
             guile
             libexpat-devel
             libguile-devel
             liblzma-devel
             libreadline-devel
             libzstd-devel
             mpfr-devel
             ncurses-devel
             python-devel
             zlib-devel)
options=('staticlibs' '!distcc' '!ccache')
source=("https://ftp.gnu.org/gnu/gdb/gdb-${pkgver}.tar.xz"{,.sig}
        'gdbinit'
        0001-Teach-gdb-how-to-unwind-cygwin-_sigbe-and-sigdelayed.patch
        0002-7.8-windows-nat-cygwin.patch
        0003-Better-handling-for-realpath-failures-in-windows_mak.patch
        0004-7.8-symtab-cygwin.patch
        0005-msysize.patch
        0006-autoreconf.patch)
validpgpkeys=('F40ADB902B24264AA42E50BF92EDB04BFF325CF3')
sha256sums=('2d4dd8061d8ded12b6c63f55e45344881e8226105f4d2a9b234040efa5ce7772'
            'SKIP'
            '2bbe7eddb1828c394d0ff99777058df79b1a596172603bb0e30d983fc1ea8785'
            'c717af701b421e28dced2f424c1ba91bad37a25d8cd63561d02d3f48f003973a'
            '5ef60706d31ee8d8839f7e38a8a3c22c3a84ef541ec884dfe42325a1433b0b5b'
            '797860ab5dbac68f127589251906a63ede129fee678a5ce96e28decdc49004d3'
            'a05c009801dc5c05fba94f40df31406b8ee6213ee45d54d54ef84218fb6e42e3'
            '87a9ffcdc3d0c549efb390c7e59e86e9059ae29946fadcb269ee8b7578293483'
            '9f349e441e0d2e10d78327c9a172ee99dfe69eaeb7024a0f370583b3043a47f2')

prepare() {
  cd ${srcdir}/${pkgname}-${pkgver}

  patch -p1 -i ${srcdir}/0005-msysize.patch
  patch -p1 -i ${srcdir}/0006-autoreconf.patch

  patch -p1 -i ${srcdir}/0001-Teach-gdb-how-to-unwind-cygwin-_sigbe-and-sigdelayed.patch
  patch -p1 -i ${srcdir}/0002-7.8-windows-nat-cygwin.patch
  patch -p1 -i ${srcdir}/0003-Better-handling-for-realpath-failures-in-windows_mak.patch
  patch -p1 -i ${srcdir}/0004-7.8-symtab-cygwin.patch
}

do_build() {
  builddir=${srcdir}/build-${CHOST}$1
  [[ -d "$builddir" ]] && rm -rf "$builddir"
  mkdir -p "$builddir" && pushd "$builddir"

  ../${pkgname}-${pkgver}/configure \
    --build=${CHOST} \
    --host=${CHOST} \
    --prefix=/usr \
    $2 \
    --enable-64-bit-bfd \
    --disable-werror \
    --disable-sim \
    --disable-staticlib \
    --with-system-gdbinit=/etc/gdbinit \
    --with-python=/usr/bin/python3 \
    --without-tcl \
    --without-tk \
    --with-guile \
    --with-{expat,gmp,mpfr,lzma,zstd}=/usr \
    --without-libexpat-prefix \
    --with-system-readline \
    --with-libiconv-prefix=/usr \
    --with-system-zlib \
    --enable-tui
  make
}

build() {
  do_build
  do_build -multiarch --enable-targets=all
}

check() {
  cd ${srcdir}/build-${CHOST}
  make check || true
}

package_gdb() {
  cd ${srcdir}/build-${CHOST}
  make DESTDIR=${pkgdir} install

  # install "custom" system gdbinit
  install -D -m644 ${srcdir}/gdbinit ${pkgdir}/etc/gdbinit
  sed -i 's|%GCC_NAME%|gcc-'${_gcc_ver}'|g' ${pkgdir}/etc/gdbinit

  # these are shipped by binutils
  rm -fr ${pkgdir}/usr/{include,lib}/ ${pkgdir}/usr/share/locale/
  rm -f ${pkgdir}/usr/share/info/{bfd,configure,standards,ctf-spec,sframe-spec}.info

  python3 -m compileall -o 0 -o 1 -s "${pkgdir}" "${pkgdir}/usr/share/gdb/python"

  # install license files
  install -Dm644 "${srcdir}/${pkgname}-${pkgver}/README" "${pkgdir}/usr/share/licenses/${pkgname}/README"
  install -Dm644 "${srcdir}/${pkgname}-${pkgver}/COPYING" "${pkgdir}/usr/share/licenses/${pkgname}/COPYING"
  install -Dm644 "${srcdir}/${pkgname}-${pkgver}/COPYING.LIB" "${pkgdir}/usr/share/licenses/${pkgname}/COPYING.LIB"
  install -Dm644 "${srcdir}/${pkgname}-${pkgver}/COPYING" "${pkgdir}/usr/share/licenses/${pkgname}/COPYING3"
  install -Dm644 "${srcdir}/${pkgname}-${pkgver}/COPYING.LIB" "${pkgdir}/usr/share/licenses/${pkgname}/COPYING3.LIB"
}

package_gdb-multiarch() {
  pkgdesc="GNU Debugger (supports all targets)"
  depends=("gdb=${pkgver}")

  builddir=${srcdir}/build-${CHOST}-multiarch
  cd ${builddir}
  make DESTDIR=${builddir}/inst install-gdb install-gdbserver

  destdir=${pkgdir}/usr/bin
  bindir=${builddir}/inst/usr/bin
  mkdir -p $destdir
  cp -p ${bindir}/gdb.exe ${destdir}/gdb-multiarch.exe
  cp -p ${bindir}/gdbserver.exe ${destdir}/gdbserver-multiarch.exe
}
