# Maintainer: Frederik Carlier <frederik.carlier@keysight.com>

_realname=gnustep-gui
pkgbase=mingw-w64-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}")
pkgver=0.31.1
pkgrel=6
pkgdesc="GNUstep GUI Library (mingw-w64)"
arch=('any')
mingw_arch=('mingw64' 'ucrt64' 'clang64')
url='https://gnustep.github.io/'
license=('spdx:LGPL-2.1-or-later')
makedepends=("${MINGW_PACKAGE_PREFIX}-autotools"
             "${MINGW_PACKAGE_PREFIX}-clang"
             "${MINGW_PACKAGE_PREFIX}-lld"
             "${MINGW_PACKAGE_PREFIX}-gnustep-make"
             rsync)
depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs"
         "${MINGW_PACKAGE_PREFIX}-gnustep-base"
         "${MINGW_PACKAGE_PREFIX}-libffi"
         "${MINGW_PACKAGE_PREFIX}-giflib"
         "${MINGW_PACKAGE_PREFIX}-icu"
         "${MINGW_PACKAGE_PREFIX}-libjpeg-turbo"
         "${MINGW_PACKAGE_PREFIX}-libpng"
         "${MINGW_PACKAGE_PREFIX}-libtiff")
source=("https://github.com/gnustep/libs-gui/releases/download/gui-${pkgver//./_}/${_realname}-${pkgver}.tar.gz"
        # GSCodingFlags incorrectly packed on MSYS2 (merged to master)
        "https://github.com/gnustep/libs-gui/commit/4d508632758f72b43e2a1450fa24d861dc9eecbd.diff"
        # Fix NSSliderCell not handling integerValue on MSYS2 (merged to master)
        "https://github.com/gnustep/libs-gui/commit/3b02ac1d9da1a8184c4a5d27999f95ee5bf34719.diff"
        # Fix NSButtonCell alternateContents trying to set an NSImage instead of NSString as an alternateTitle (merged to master)
        "https://github.com/gnustep/libs-gui/commit/9901bbcb4c432fa114351ded9d88be4495f3b729.diff"
        # Fix issue where themes cannot set menu's to visible or not (merged to master)
        https://github.com/gnustep/libs-gui/commit/acf00ce5d2948f5909a73deee0e685f2b8ce37fc.diff
        # Adds NSCellHitResult typedef (merged to master)
        https://github.com/gnustep/libs-gui/commit/a32741a5d7ee379ad9562bb3c171d71d46d3744a.diff
        # toggle menu item "Hide" title and action on user click. (merged to master)
        https://github.com/gnustep/libs-gui/commit/5cd432374c4e4802a72b6ea05796d87accd93a3b.diff
        # Add resize indicator to NSWindow (merged to master)
        https://github.com/gnustep/libs-gui/commit/820492495abd2263c07dfd3ed637acd30e63a836.diff
        # Make white as default selection highlight color for NSTableView (merged to master)
        https://github.com/gnustep/libs-gui/commit/42a79060b9ca041bb1190a777f8f00356e69c4d5.diff
        # NSTextFieldCell: Decode placeholder string (merged to master)
        https://github.com/gnustep/libs-gui/commit/ec89d161b0b966b5881569211a1366b81732b7f7.diff
        # Expose additional GSTheme method(s) for adding NSTabView theming to WinUXTheme (merged to master)
        https://github.com/gnustep/libs-gui/commit/2cdbf700cf7717b51f3138c176d582440c40118c.diff
        # Update bounds on NSClipView in setFrame only when frame value has changed (PR https://github.com/gnustep/libs-gui/pull/313)
        https://github.com/gnustep/libs-gui/commit/5ca02c91c4bd496081e24c365d2d77ce2817e1dc.diff
        # NSComboBox did not support attributed string (merged to master)
        https://github.com/gnustep/libs-gui/commit/c71f9dd71513c7d5115b8ba1cba064a7d189a80f.diff
        )
sha256sums=('b5bf50bf86a391e541d3d37fe600175e95e5a004180d43b55aee9ca1d575e8f9'
            '695acc856f24c5910d7f0c7550729f15f2b7ce2fd773ab5726d198b6cd225770'
            'b314604367f99333d0a185e68173702f50b5afad5e9d1d5d1cfef46017fa8732'
            '704a3b4c27618d67c72ef57b4c29477546688bd5ad38a488c0ff9c65aa684105'
            '0a0a755ce49c146bb69fd135c3fcf522f668274eba72675546184ddbdf52f8d3'
            '7431adfffca2e4428786b887f5a7c52765fd909166de1dff2b28095fdfa122c1'
            '93dc73c9d7eacacbdd08b113fc789701c6cd1e496fad28b16c6166e22d0da880'
            '8497429379e6597172a30bdca96472ab84e17a75cc990c918ce3b8b4b05e4274'
            '4217164c21b43000c4692c8082791a6e10db6f928a220ea8b4a10208e4f5f314'
            'de0cca4e740f0183d7c037b220c5dff495962fbd60db1960b942e1fa45136add'
            'f6c88bf0879afd324437adb59949cfe88f48b10610e9f9ccf3ea8b49c8108b32'
            '7ecf23b098cb1849d0a2302c60a8f7c703e04c3c570a34d07740a2ccc883b35c'
            'acf8f9d84af59d1e3545c123d627e67a24e7e765e8dbea28915f084b867fa511')

prepare() {
  cd "${srcdir}/${_realname}-${pkgver}"
  patch -p1 -i "${srcdir}"/4d508632758f72b43e2a1450fa24d861dc9eecbd.diff
  patch -p1 -i "${srcdir}"/3b02ac1d9da1a8184c4a5d27999f95ee5bf34719.diff
  patch -p1 -i "${srcdir}"/9901bbcb4c432fa114351ded9d88be4495f3b729.diff
  patch -p1 -i "${srcdir}"/acf00ce5d2948f5909a73deee0e685f2b8ce37fc.diff
  patch -p1 -i "${srcdir}"/a32741a5d7ee379ad9562bb3c171d71d46d3744a.diff
  patch -p1 -i "${srcdir}"/5cd432374c4e4802a72b6ea05796d87accd93a3b.diff
  patch -p1 -i "${srcdir}"/820492495abd2263c07dfd3ed637acd30e63a836.diff
  patch -p1 -i "${srcdir}"/42a79060b9ca041bb1190a777f8f00356e69c4d5.diff
  patch -p1 -i "${srcdir}"/ec89d161b0b966b5881569211a1366b81732b7f7.diff
  patch -p1 -i "${srcdir}"/2cdbf700cf7717b51f3138c176d582440c40118c.diff
  patch -p1 -i "${srcdir}"/5ca02c91c4bd496081e24c365d2d77ce2817e1dc.diff
  patch -p1 -i "${srcdir}"/c71f9dd71513c7d5115b8ba1cba064a7d189a80f.diff
}

build() {
  rsync --recursive --times --links "${srcdir}/${_realname}-${pkgver}"/* "${srcdir}/build-${MSYSTEM}"
  cd "${srcdir}/build-${MSYSTEM}"

  case ${MSYSTEM} in
    MINGW*|UCRT*)
      export LDFLAGS="-fuse-ld=lld -lstdc++ -lgcc_s"
      ;;
    CLANG*)
      export LDFLAGS="-lc++"
      ;;
  esac

  CC="$MINGW_PREFIX/bin/clang" \
  CXX="$MINGW_PREFIX/bin/clang++" \
  ./configure \
    --prefix="${MINGW_PREFIX}"
  
  CC="$MINGW_PREFIX/bin/clang" \
  CXX="$MINGW_PREFIX/bin/clang++" \
  make
}

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

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

  make install DESTDIR="${pkgdir}"

  install -Dm644 "${srcdir}/${_realname}-${pkgver}/COPYING.LIB" "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/COPYING.LIB"
}
