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

_realname=ncurses
pkgbase=mingw-w64-${_realname}
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
_base_ver=6.5
_date_rev=20241228
pkgver=${_base_ver}.${_date_rev}
pkgrel=2
pkgdesc="System V Release 4.0 curses emulation library (mingw-w64)"
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clangarm64')
url="https://www.gnu.org/software/ncurses/"
msys2_references=(
  "cpe: cpe:/a:gnu:ncurses"
  "cpe: cpe:/a:ncurses_project:ncurses"
)
license=('spdx:MIT')
depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs"
         "${MINGW_PACKAGE_PREFIX}-gettext-runtime"
         "${MINGW_PACKAGE_PREFIX}-libsystre")
makedepends=("${MINGW_PACKAGE_PREFIX}-cc"
             "${MINGW_PACKAGE_PREFIX}-autotools")
source=("https://invisible-mirror.net/archives/ncurses/current/${_realname}-${_base_ver}-${_date_rev}.tgz"{,.asc}
        002-ncurses-config-win-paths.patch
        ncurses-6.3-cflags-private.patch
        ncurses-6.3-pkgconfig.patch)
sha256sums=('cbeaf1d42c138711678e25f9945c97d6806ace510b090cd890fc70555c21b9bb'
            'SKIP'
            '5367d8f49aff92884b9daa014502df13e1812f1b7ee1b3a3cb18139f10039408'
            '3107029dfb807e338d34641d78329cd6725c58e6b873352621f4b9611a8380bf'
            'b8544a607dfbeffaba2b087f03b57ed1fa81286afca25df65f61b04b5f3b3738')
validpgpkeys=('19882D92DDA4C400C22C0D56CC2AF4472167BE03')  # "Thomas E. Dickey (self-signed w/o SHA1) <dickey@invisible-island.net>"

prepare() {
  cd ${_realname}-${_base_ver}-${_date_rev}
  patch -p1 -i ${srcdir}/002-ncurses-config-win-paths.patch

  # do not leak build-time LDFLAGS into the pkgconfig files:
  # https://bugs.archlinux.org/task/68523
  patch -p1 -i ${srcdir}/ncurses-6.3-pkgconfig.patch

  patch -p1 -i ${srcdir}/ncurses-6.3-cflags-private.patch
}

build() {
  mkdir -p build-${MSYSTEM} && cd build-${MSYSTEM}

  # It passes X_OK to access() on Windows which isn't supported with ucrt
  CFLAGS+=" -D__USE_MINGW_ACCESS"
  # nanosleep is only defined in pthread library
  export cf_cv_func_nanosleep=no

  ../${_realname}-${_base_ver}-${_date_rev}/configure \
    --prefix=${MINGW_PREFIX} \
    --mandir=${MINGW_PREFIX}/share/man \
    --with-cxx \
    --with-shared \
    --without-ada \
    --without-pthread \
    --enable-assertions \
    --enable-colorfgbg \
    --enable-database \
    --enable-ext-colors \
    --enable-ext-mouse \
    --enable-interop \
    --enable-sp-funcs \
    --enable-term-driver \
    --enable-widec \
    --enable-pc-files \
    --disable-home-terminfo \
    --disable-rpath \
    --disable-symlinks \
    --with-pkg-config-libdir=${MINGW_PREFIX}/lib/pkgconfig

  make
}

package() {
  cd ${srcdir}/build-${MSYSTEM}
  make DESTDIR=${pkgdir} install
  cp -r ${pkgdir}${MINGW_PREFIX}/include/ncursesw ${pkgdir}${MINGW_PREFIX}/include/ncurses
  cp ${pkgdir}${MINGW_PREFIX}/lib/libncursesw.a ${pkgdir}${MINGW_PREFIX}/lib/libncurses.a

  # Use predefined variables in pkgconfig files (#13958)
  for pcfile in "${pkgdir}${MINGW_PREFIX}"/lib/pkgconfig/*.pc; do
    sed -s "s|${MINGW_PREFIX}/include|\${includedir}|g" -i "${pcfile}"
    sed -s "s|${MINGW_PREFIX}/lib|\${libdir}|g" -i "${pcfile}"
  done
}
