# Maintainer: Alexey Pavlov <alexpux@gmail.com>
# Contributor: Ray Donnelly <mingw.android@gmail.com>
# Contributor: Duong Pham <dthpham@gmail.com>

_realname=numpy
pkgbase=mingw-w64-python-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}")
provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}")
conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}")
replaces=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}")
pkgver=1.21.0
pkgrel=1
pkgdesc="Scientific tools for Python (mingw-w64)"
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64')
license=('BSD')
url="https://www.numpy.org/"
makedepends=("${MINGW_PACKAGE_PREFIX}-cython"
             "${MINGW_PACKAGE_PREFIX}-openblas"
             "${MINGW_PACKAGE_PREFIX}-python-setuptools"
             "${MINGW_PACKAGE_PREFIX}-python-pytest"
             "${MINGW_PACKAGE_PREFIX}-gcc-fortran")
depends=("${MINGW_PACKAGE_PREFIX}-openblas"
         "${MINGW_PACKAGE_PREFIX}-python")
optdepends=("${MINGW_PACKAGE_PREFIX}-python-pytest: testsuite")
#options=('!strip' 'debug')
source=(https://github.com/numpy/numpy/releases/download/v${pkgver}/${_realname}-${pkgver}.tar.gz 
        0001-detect-mingw-environment.patch
        0002-fix-finding-python2.patch
        0003-gfortran-better-version-check.patch
        0004-fix-testsuite.patch
        0005-mincoming-stack-boundary-32bit-optimized-64bit.patch
        0006-disable-visualcompaq-for-mingw.patch
        0007-disable-64bit-experimental-warning.patch
        0008-mingw-gcc-doesnt-support-visibility.patch
        0009-disable-old-mingw-stuff.patch
        0010-mingw-inline-stuff.patch)
sha256sums=('b662c841b29848c04d9134f31dbaa7d4c8e673f45bb3a5f28d02f49c424d558a'
            '94f111ab238c4a82e8613ed14e4cbeb553eabff26523f576e5fcafdbfdc8ee29'
            '3aacb1d92e7764c9f0f24afa1a97b136a069fcd81d63c9fa55565c40c5a29974'
            '2679482ce9396b551e1e1e7674f373d139b3e8a2f9729026000dd3c581de41d7'
            'a9023ca3ba0d4b444ef490ca9fa145896d24f34bb271676adf538d5da7546725'
            'd2d7b83114e87f45656d9523f5536511bf16d5a54a4f3bfa852c5631651019f5'
            'fcacffaae853de592224bc51f1ecb3e617f2fc518d05373e1310aeabdf097254'
            'cafc924fd11d8653a49970d0cce5b31869cce0e8996a3ae57bcbccca96bc8eb3'
            'c7222c3cd85ff6af515514c5c3b8f3c02144c58c1373dec16683fa455504aa69'
            '22ca44e7f5d01b2bcb805251f5964026e92c55400d4c17055e10268bdc93849e'
            'ffa3eb1b65ffeb1aece369e2e3e56092013c0a0b64c67e6166cece622e526ff3')

prepare() {
  cd ${_realname}-${pkgver}
  patch -Np1 -i ${srcdir}/0001-detect-mingw-environment.patch
  patch -Np1 -i ${srcdir}/0002-fix-finding-python2.patch
  patch -Np1 -i ${srcdir}/0003-gfortran-better-version-check.patch
  patch -Np1 -i ${srcdir}/0004-fix-testsuite.patch
  # Note, -mincoming-stack-boundary (and the other flags set) doesn't get used except
  # in a test compilation, AFAICT.
  patch -Np1 -i ${srcdir}/0005-mincoming-stack-boundary-32bit-optimized-64bit.patch
  patch -Np1 -i ${srcdir}/0006-disable-visualcompaq-for-mingw.patch
  patch -Np1 -i ${srcdir}/0007-disable-64bit-experimental-warning.patch
  patch -Np1 -i ${srcdir}/0008-mingw-gcc-doesnt-support-visibility.patch
  patch -Np1 -i ${srcdir}/0009-disable-old-mingw-stuff.patch
  patch -Np1 -i ${srcdir}/0010-mingw-inline-stuff.patch
  cd ..

  cp -a ${_realname}-${pkgver} ${_realname}-py-${CARCH}
}

build() {
  export ATLAS=None
  export LDFLAGS="$LDFLAGS -shared"
  # See: https://sourceforge.net/p/mingw-w64/mailman/message/36287627/
  export CFLAGS="$CFLAGS -fno-asynchronous-unwind-tables"

  cd ${_realname}-py-${CARCH}
  MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \
    ${MINGW_PREFIX}/bin/python setup.py config_fc --fcompiler=gnu95 build
}

package() {
  _pyver=$(${MINGW_PREFIX}/bin/python -c "import sys;sys.stdout.write('.'.join(map(str, sys.version_info[:2])))")
  _pyinc=${_pyver}

  export ATLAS=None
  export LDFLAGS="$LDFLAGS -shared"
  export CFLAGS="$CFLAGS -fno-asynchronous-unwind-tables"

  cd ${_realname}-py-${CARCH}
  MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \
    ${MINGW_PREFIX}/bin/python setup.py config_fc --fcompiler=gnu95 install --prefix=${MINGW_PREFIX} --root="${pkgdir}" --optimize=1

  install -Dm644 LICENSE.txt ${pkgdir}${MINGW_PREFIX}/share/licenses/python-${_realname}/LICENSE.txt

  install -m755 -d "${pkgdir}${MINGW_PREFIX}/include/python${_pyinc}"
  cp -rf ${pkgdir}${MINGW_PREFIX}/lib/python${_pyver}/site-packages/${_realname}/core/include/${_realname} "${pkgdir}${MINGW_PREFIX}/include/python${_pyinc}/"

  # fix python command in files
  local _mingw_prefix=$(cygpath -am ${MINGW_PREFIX})
  for _f in "${pkgdir}${MINGW_PREFIX}"/bin/*.py; do
    sed -e "s|${_mingw_prefix}/bin/|/usr/bin/env |g" -i ${_f}
  done
}
