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

_realname=opencollada
pkgbase=mingw-w64-${_realname}
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
conflicts=("${MINGW_PACKAGE_PREFIX}-${_realname}-git")
replaces=("${MINGW_PACKAGE_PREFIX}-${_realname}-git")
pkgver=1.6.68
pkgrel=6
pkgdesc="Stream based reader and writer library for COLLADA files (mingw-w64)"
arch=('any')
mingw_arch=('mingw64' 'ucrt64' 'clang64' 'clangarm64')
url="https://github.com/khronosGroup/OpenCOLLADA/"
msys2_references=(
  'archlinux: opencollada'
)
license=("spdx:MIT")
depends=("${MINGW_PACKAGE_PREFIX}-cc-libs"
         "${MINGW_PACKAGE_PREFIX}-libxml2"
         "${MINGW_PACKAGE_PREFIX}-pcre")
makedepends=("${MINGW_PACKAGE_PREFIX}-cc"
             "${MINGW_PACKAGE_PREFIX}-cmake"
             "${MINGW_PACKAGE_PREFIX}-ninja")
source=("https://github.com/KhronosGroup/OpenCOLLADA/archive/v${pkgver}/${_realname}-${pkgver}.tar.gz"
        fix-mingw-w64.patch
        fix-missing-include.patch
        fix-inttypes-mingw.patch
        fix-pcre-type-conflict.patch
        opencollada-cmake.patch
        opencollada-disable-test-mingw.patch
        use-cpp-headers.patch
        move-hash-function.patch
        disable-indentation-warnings.patch
        010-fix-unordered.patch
        011-fix-build-with-gcc-15.patch)
sha256sums=('d9db0c0a518aa6ac0359626f222707c6ca1b63a83cbf229d97a5999c9cde347b'
            '10fdc2746b83161b853df6ad4ac600252c4f964377ea0186ff97f99bd3417e34'
            '18f1bf9f57d1c67aa35927fb0d1b0b38def52b189742021f1268eb2bdbffc963'
            '6fb7cf3116bdcb93af58a2487c44b298afd11e83c21ec87a8c921eda6dcba766'
            'be24a0ccaee8f2db24acafd378326cec8f3a57cf95a5575ae613886fda68dd4a'
            '80964043f2d91b4433c455a8198bb9cb29c1a621c844b08e4e447d21bb4d41a7'
            'a0eb0e2385897cd2b7e1335229128ceda0f607aa6d8f50ad152d3236811488d6'
            '8ba7875069585e99f9ebd5044ae10c7a92af5d5a7cfcd61cf69ab24cc70cddc3'
            '93eaf5c565ff30d8d37f1055a432e9516dd518ee040e9384633f55d4a9c305ca'
            '4fc1d79fc2965c4fbebb9e25d174eb48b91a2d93601dfc5417c90acd88909495'
            'c58ec624031b8dfa0393c138eaf23418850a59d3b7478f2e064dba8553a58b54'
            'a22fd084d3d19ee4877c9274ef5ff7c278cb7a0e336542fa37048662f8246ff9')

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 \
    fix-mingw-w64.patch \
    fix-missing-include.patch \
    fix-inttypes-mingw.patch \
    fix-pcre-type-conflict.patch \
    opencollada-cmake.patch \
    opencollada-disable-test-mingw.patch \
    use-cpp-headers.patch \
    move-hash-function.patch \
    disable-indentation-warnings.patch \
    010-fix-unordered.patch \
    011-fix-build-with-gcc-15.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

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

  MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
  ${MINGW_PREFIX}/bin/cmake.exe \
     -G"Ninja" \
     -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \
     -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
     -DUSE_SHARED=ON \
     ${extra_config} \
     ../${_realname}-${pkgver}

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

package() {
  cd "${srcdir}"/build-${MSYSTEM}
  DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake --install .

  # replace absolute paths in .cmake scripts
  sed -i "s;$(cygpath -ma "${MINGW_PREFIX}");\${_IMPORT_PREFIX};" "${pkgdir}${MINGW_PREFIX}/lib/cmake/OpenCOLLADA"/*Targets*.cmake
}
