# Contributor: Dirk Stolle

_realname=m4ri
pkgbase=mingw-w64-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}")
pkgver=20251206
pkgrel=1
_commit=3c25b8fcdb27fd11c2a1e1c5bcd98793bd1b2030
pkgdesc="Algorithms for linear algebra over GF_2 (mingw-w64)"
arch=('any')
mingw_arch=('mingw64' 'ucrt64' 'clang64' 'clangarm64')
url='https://github.com/malb/m4ri'
msys2_references=(
  'anitya: 7719'
  'archlinux: m4ri'
  'gentoo: sci-libs/m4ri'
)
license=('spdx:GPL-2.0-or-later')
depends=("${MINGW_PACKAGE_PREFIX}-cc-libs"
         "${MINGW_PACKAGE_PREFIX}-libpng")
makedepends=("${MINGW_PACKAGE_PREFIX}-autotools"
             "${MINGW_PACKAGE_PREFIX}-cc")
source=("https://github.com/malb/m4ri/releases/download/${pkgver}/m4ri-${pkgver}.tar.gz"
        "0001-upstream-pr-37.diff")
sha256sums=('2b9c1ba4fae834725308ffd3b61862f511c17545009a56c3ba965e0c33c23821'
            '4a7afb75f45ee59a510f634fc6570a4cb24be9fa3bd03b33cd82559b637aece8')

prepare() {
  cd "${_realname}-${pkgver}"

  # The CPU detection code in version 20251206, added in upstream PR 37 (see
  # <https://github.com/malb/m4ri/pull/37>) does not work on ARM64. Therefore,
  # it gets reverted here, but only when in the CLANGARM64 environment.
  if [[ "${MSYSTEM}" == "CLANGARM64" ]]
  then
    patch --reverse -p1 -i "${srcdir}/0001-upstream-pr-37.diff"
  fi

  autoreconf -fiv
}

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

  ../"${_realname}-${pkgver}"/configure \
    --prefix="${MINGW_PREFIX}" \
    --build="${MINGW_CHOST}" \
    --host="${MINGW_CHOST}" \
    --target="${MINGW_CHOST}" \
    --enable-thread-safe \
    --enable-openmp \
    --enable-static \
    --enable-shared

  make
}

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

  make check
}

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

  make install DESTDIR="${pkgdir}"

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