# Maintainer: Carlos Antunes <cmantunes@gmail.com>
# Maintainer: fauxpark <fauxpark@gmail.com>
# Contributed by: nanodude

_realname=gdb
_target=arm-none-eabi

pkgbase=mingw-w64-${_target}-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_target}-${_realname}")
pkgver=9.2
pkgrel=8
pkgdesc='GNU Tools for ARM Embedded Processors - GDB (mingw-w64)'
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32')
license=('spdx:GPL-3.0-or-later')
url='https://www.gnu.org/software/gdb/'
groups=("${MINGW_PACKAGE_PREFIX}-${_target}-toolchain")
source=(
    https://ftp.gnu.org/gnu/gdb/${_realname}-${pkgver}.tar.xz{,.sig}
    'gdb-perfomance.patch'
    'gdb-fix-using-gnu-print.patch'
    'gdb-7.12-dynamic-libs.patch'
    'python-configure-path-fixes.patch'
    'gdb-fix-tui-with-pdcurses.patch'
    'gdb-9.1-lib-order.patch'
    'gdb-home-is-userprofile.patch'
    'readline-8.2.patch'::https://sourceware.org/git/?p=binutils-gdb.git\;a=patch\;h=1add37b567a7dee39d99f37b37802034c3fce9c4
    'enum-constexpr-conversion.patch'
    'strsignal-prototype.patch')

sha256sums=('360cd7ae79b776988e89d8f9a01c985d0b1fa21c767a4295e5f88cb49175c555'
            'SKIP'
            'a0a2d974e80b656646c87cc669fda798182a35b001aab933567c41b880530aa0'
            '29fce74348a2862dd3856da58cd3c6c40a910cbdb95e5003d571c33a04532b78'
            '9de9c30bbb8cd2c6f60414b5a34cdf1fae27238293fb6007c628a8b821f88e0b'
            '6378e1a96e3bedc2a160f0f6780cb973ce6139017f2786e7ab97f8bcd9824d27'
            'f70cc0a0633d01adf777eb57a82f8c9880f6511d55e44c1dc415ddebc7467e0b'
            'dcfbfb2e3fc90a51e11202529e34c1b3dcc17e352067ffdfc58b63c1deab9523'
            'a63ba094dcd9bf0c0f98c6dce5825590b2cf7014834fd3bec5f88fe25d90228a'
            '3e3d7485e3ec17668898323ad64d9c4e23c03aba4ea83078177f5d1d7eec2156'
            '0f1de0f3ec498a7ec1d64d7118e339117816e78e82e991172be2e0be543fa0d9'
            '89ad0565fc85488476474bb67bda3b026d1c5601f072e1b6167bb492282b9f59')

depends=("${MINGW_PACKAGE_PREFIX}-expat"
         "${MINGW_PACKAGE_PREFIX}-libiconv"
         "${MINGW_PACKAGE_PREFIX}-ncurses"
         "${MINGW_PACKAGE_PREFIX}-python"
         "${MINGW_PACKAGE_PREFIX}-readline"
         "${MINGW_PACKAGE_PREFIX}-xxhash"
         "${MINGW_PACKAGE_PREFIX}-zlib")
checkdepends=('dejagnu' 'bc')
makedepends=("${MINGW_PACKAGE_PREFIX}-iconv"
             "${MINGW_PACKAGE_PREFIX}-autotools"
             "${MINGW_PACKAGE_PREFIX}-cc"
             "${MINGW_PACKAGE_PREFIX}-xz")
options=('staticlibs' '!distcc' '!ccache')
validpgpkeys=('F40ADB902B24264AA42E50BF92EDB04BFF325CF3') # Joel Brobecker

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

    # https://sourceware.org/bugzilla/show_bug.cgi?id=15412
    patch -p1 -i ../gdb-perfomance.patch

    patch -p1 -i ../gdb-fix-using-gnu-print.patch

    # https://sourceware.org/bugzilla/show_bug.cgi?id=21078
    patch -p1 -i ../gdb-7.12-dynamic-libs.patch

    patch -p1 -i ../python-configure-path-fixes.patch

    patch -p1 -i ../gdb-fix-tui-with-pdcurses.patch
    patch -p1 -i ../gdb-9.1-lib-order.patch
    patch -p1 -i ../gdb-home-is-userprofile.patch
    patch -p1 -i ../readline-8.2.patch

    # https://sourceware.org/git/?p=binutils-gdb.git\;a=patch\;h=ae61525fcf456ab395d55c45492a106d1275873a
    patch -p1 -i ../enum-constexpr-conversion.patch

    # https://sourceware.org/git/?p=binutils-gdb.git\;a=patch\;h=fe3486178040db782f18d67a95a1e63bdf68eedf
    patch -p1 -i ../strsignal-prototype.patch

    # hack! - libiberty configure tests for header files using "$CPP $CPPFLAGS"
    sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" libiberty/configure
}

build() {
    mkdir -p "${srcdir}/build-${MSYSTEM}" && cd "${srcdir}/build-${MSYSTEM}"
    
    if [ "${CARCH}" != "x86_64" ]; then
      LDFLAGS+=" -Wl,--large-address-aware"
    fi

    CPPFLAGS+=" -I${MINGW_PREFIX}/include/ncurses"
    CFLAGS+=" -I${MINGW_PREFIX}/include/ncurses"
    CXXFLAGS+=" -I${MINGW_PREFIX}/include/ncurses"

    ../${_realname}-${pkgver}/configure \
        --build=${MINGW_CHOST} \
        --prefix=${MINGW_PREFIX} \
        --target=${_target} \
        --disable-nls \
        --disable-debug \
        --disable-dependency-tracking \
        --disable-binutils \
        --disable-libssp \
        --disable-install-libbfd \
        --disable-install-libiberty \
        --with-system-readline \
        --enable-languages=c,c++ \
        --disable-werror \
        --disable-win32-registry \
        --disable-rpath \
        --with-curses \
        --with-system-gdbinit=${MINGW_PREFIX}/etc/gdbinit \
        --with-python=${MINGW_PREFIX}/bin/python \
        --with-expat \
        --with-libiconv-prefix=${MINGW_PREFIX} \
        --with-zlib \
        --with-lzma \
        --enable-tui \
        --enable-source-highlight=no

    make
}

package() {
    cd "${srcdir}/build-${MSYSTEM}"

    make DESTDIR="$pkgdir" install-gdb

    cd ${pkgdir}${MINGW_PREFIX}

    # Remove files that conflict with native gdb
    rm -rf include share/gdb share/info lib
}
