# Maintainer: Markus Rickert <rickert@fortiss.org>

_realname=ode
pkgbase=mingw-w64-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}")
pkgver=0.16.6
pkgrel=1
pkgdesc="A library for simulating articulated rigid body dynamics (mingw-w64)"
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clangarm64')
url="https://bitbucket.org/odedevs/ode"
license=('LGPL', 'BSD')
makedepends=("${MINGW_PACKAGE_PREFIX}-cc"
             "${MINGW_PACKAGE_PREFIX}-cmake"
             "${MINGW_PACKAGE_PREFIX}-ninja")
depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs")
source=("https://bitbucket.org/odedevs/ode/downloads/${_realname}-${pkgver}.tar.gz"
        '020-float.patch'
        '021-c++17.patch')
sha256sums=('c91a28c6ff2650284784a79c726a380d6afec87ecf7a35c32a6be0c5b74513e8'
            'e21c1e9f24b6df5086d5e8927c494c061830c3681b413f79e782f9c0b606b9d3'
            'e77fb5a35d3aab6ae209f13a3b5d93bfd0e4e24b2473af901740864ae269729e')

apply_patch_with_msg() {
  for _patch in "$@"
  do
    msg2 "Applying $_patch"
    patch -Nbp1 -i "${srcdir}/$_patch"
  done
}

prepare() {
  cd $srcdir/${_realname}-${pkgver}

  apply_patch_with_msg \
    020-float.patch \
    021-c++17.patch
}

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

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

  MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
  ${MINGW_PREFIX}/bin/cmake \
    -GNinja \
    -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \
    "${extra_config[@]}" \
    -DBUILD_SHARED_LIBS=ON \
    -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
    ../${_realname}-${pkgver}

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

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

  ${MINGW_PREFIX}/bin/ctest
}

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

  DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake --build . --target install

  install -Dm644 "${srcdir}/${_realname}-${pkgver}/LICENSE.txt" "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE.txt"
  install -Dm644 "${srcdir}/${_realname}-${pkgver}/LICENSE-BSD.txt" "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE-BSD.txt"
  install -Dm644 "${srcdir}/${_realname}-${pkgver}/GIMPACT/GIMPACT-LICENSE-BSD.TXT" "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/GIMPACT/GIMPACT-LICENSE-BSD.TXT"
  install -Dm644 "${srcdir}/${_realname}-${pkgver}/GIMPACT/GIMPACT-LICENSE-LGPL.TXT" "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/GIMPACT/GIMPACT-LICENSE-LGPL.TXT"
  install -Dm644 "${srcdir}/${_realname}-${pkgver}/libccd/BSD-LICENSE" "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/libccd/BSD-LICENSE"
  install -Dm644 "${srcdir}/${_realname}-${pkgver}/OPCODE/COPYING" "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/OPCODE/COPYING"
  install -Dm644 "${srcdir}/${_realname}-${pkgver}/ou/LICENSE.TXT" "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/ou/LICENSE.TXT"
  install -Dm644 "${srcdir}/${_realname}-${pkgver}/ou/LICENSE-BSD.TXT" "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/ou/LICENSE-BSD.TXT"
  install -Dm644 "${srcdir}/${_realname}-${pkgver}/ou/LICENSE-LESSER.TXT" "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/ou/LICENSE-LESSER.TXT"
  install -Dm644 "${srcdir}/${_realname}-${pkgver}/ou/LICENSE-ZLIB.TXT" "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/ou/LICENSE-ZLIB.TXT"
}
