# Maintainer: Rafał Brzegowy <rafal.brzegowy@yahoo.com>

_realname=seacas
pkgbase=mingw-w64-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}")
pkgver=2024.08.15
_releases=${pkgver//./-}
pkgrel=1
pkgdesc="The Sandia Engineering Analysis Code Access System (mingw-w64)"
arch=('any')
mingw_arch=('mingw64' 'ucrt64' 'clang64' 'clangarm64')
url="https://gsjaardema.github.io/seacas/"
msys2_repository_url="https://github.com/gsjaardema/seacas"
license=('spdx:BSD-3-Clause')
conflicts=("${MINGW_PACKAGE_PREFIX}-libexodus")
depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs"
         "${MINGW_PACKAGE_PREFIX}-fmt"
         "${MINGW_PACKAGE_PREFIX}-hdf5"
         "${MINGW_PACKAGE_PREFIX}-libwinpthread-git"
         "${MINGW_PACKAGE_PREFIX}-metis"
         "${MINGW_PACKAGE_PREFIX}-matio"
         "${MINGW_PACKAGE_PREFIX}-netcdf")
makedepends=("${MINGW_PACKAGE_PREFIX}-cc"
             "${MINGW_PACKAGE_PREFIX}-cmake"
             "${MINGW_PACKAGE_PREFIX}-ninja"
             "${MINGW_PACKAGE_PREFIX}-python")
source=("https://github.com/gsjaardema/seacas/archive/v${_releases}/${_realname}-${pkgver}.tar.gz"
        "0001-cmake-add-libs.patch"
        "0002-cmake-findHDF5.patch")
sha256sums=('C85130B0DAC5AB9A08DCB53C8CCFF478122D72B08BD41D99C0ADFDDC5EB18A52'
            'a3561756bfdeb942fc62add0aefa542b0e689b76a7f0d2d357e299465ee344d2'
            '09c4406d57c5ca18b0d2f16161dd6f5e2c5d56f0f73e83bd77272d876569d5cc')
noextract=(${_realname}-${pkgver}.tar.gz)

prepare() {
  plain "Extract ${_realname}-${pkgver}.tar.gz..."
  tar -xzf ${_realname}-${pkgver}.tar.gz || true

  cd "${srcdir}/${_realname}-${_releases}"
  patch -p1 -i "${srcdir}/0001-cmake-add-libs.patch"
  patch -p1 -i "${srcdir}/0002-cmake-findHDF5.patch"
}

build() {
  declare -a extra_config
  if check_option "debug" "n"; then
    extra_config+=("-DCMAKE_BUILD_TYPE=Release")
  else
    extra_config+=("-DCMAKE_BUILD_TYPE=Debug")
  fi

  #Static Build
  mkdir -p "${_realname}-${_releases}/build-${MSYSTEM}-static" && cd "${_realname}-${_releases}/build-${MSYSTEM}-static"

  MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
    INSTALL_PATH=${MINGW_PREFIX} \
    THREADSAFE=ON \
    ../cmake-config \
      -GNinja \
      -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \
      ${extra_config[@]} \
      -DCMAKE_C_COMPILER=${MINGW_PREFIX}/bin/${CC}.exe \
      -DCMAKE_CXX_COMPILER=${MINGW_PREFIX}/bin/${CXX}.exe \
      -DPython_EXECUTABLE=${MINGW_PREFIX}/bin/python.exe \
      -DSeacas_ENABLE_Fortran=OFF \
      -DTPL_ENABLE_X11=OFF \
      -DSeacas_ENABLE_TESTS=OFF \
      -DBUILD_SHARED_LIBS=OFF

  ${MINGW_PREFIX}/bin/cmake --build .

  #Shared Build
  mkdir -p "../build-${MSYSTEM}-shared" && cd "../build-${MSYSTEM}-shared"

  MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
    INSTALL_PATH=${MINGW_PREFIX} \
    THREADSAFE=ON \
    ../cmake-config \
      -GNinja \
      -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \
      ${extra_config[@]} \
      -DCMAKE_C_COMPILER=${MINGW_PREFIX}/bin/${CC}.exe \
      -DCMAKE_CXX_COMPILER=${MINGW_PREFIX}/bin/${CXX}.exe \
      -DPython_EXECUTABLE=${MINGW_PREFIX}/bin/python.exe \
      -DSeacas_ENABLE_Fortran=OFF \
      -DTPL_ENABLE_X11=OFF \
      -DSeacas_ENABLE_TESTS=OFF \
      -DBUILD_SHARED_LIBS=ON

  ${MINGW_PREFIX}/bin/cmake --build .
}

package() {
  #Static Install
  cd "${srcdir}/${_realname}-${_releases}/build-${MSYSTEM}-static"
  DESTDIR=${pkgdir} ${MINGW_PREFIX}/bin/cmake --install .

  #Shared Install
  cd "${srcdir}/${_realname}-${_releases}/build-${MSYSTEM}-shared"
  DESTDIR=${pkgdir} ${MINGW_PREFIX}/bin/cmake --install .

  install -Dm644 "${srcdir}"/${_realname}-${_releases}/LICENSE \
    "${pkgdir}"${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE

  local PREFIX_WIN=$(cygpath -wm ${MINGW_PREFIX})
  for _f in $(find "${pkgdir}"${MINGW_PREFIX}/lib -type f -name '*.cmake'); do
    sed -e "s|${PREFIX_WIN}|\$\{CMAKE_CURRENT_LIST_DIR\}/../../..|g" -i ${_f}
    sed -e "s|${MINGW_PREFIX}|\$\{CMAKE_CURRENT_LIST_DIR\}/../../..|g" -i ${_f}
  done
}
