# Maintainer: Jean-Michaël Celerier <jeanmichael.celerier@gmail.com>

_realname=ossia-score
pkgbase=mingw-w64-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}")
pkgver=3.7.1
pkgrel=1
pkgdesc="ossia score, an interactive sequencer for the intermedia arts"
arch=('any')
mingw_arch=('mingw64' 'ucrt64' 'clang64' 'clangarm64')
url="https://ossia.io"
msys2_repository_url="https://github.com/ossia/score"
license=('spdx:GPL-3.0-or-later')
depends=(
  "${MINGW_PACKAGE_PREFIX}-qt6-base"
  "${MINGW_PACKAGE_PREFIX}-qt6-declarative"
  "${MINGW_PACKAGE_PREFIX}-qt6-websockets"
  "${MINGW_PACKAGE_PREFIX}-qt6-serialport"
  "${MINGW_PACKAGE_PREFIX}-qt6-shadertools"
  "${MINGW_PACKAGE_PREFIX}-qt6-5compat"
  "${MINGW_PACKAGE_PREFIX}-qt6-scxml"
  "${MINGW_PACKAGE_PREFIX}-qt6-svg"
  "${MINGW_PACKAGE_PREFIX}-qt6-tools"
  "${MINGW_PACKAGE_PREFIX}-cppwinrt"
  "${MINGW_PACKAGE_PREFIX}-portaudio"
  "${MINGW_PACKAGE_PREFIX}-fftw"
  "${MINGW_PACKAGE_PREFIX}-ffmpeg"
  "${MINGW_PACKAGE_PREFIX}-hdf5"
  "${MINGW_PACKAGE_PREFIX}-SDL2"
  "${MINGW_PACKAGE_PREFIX}-rapidfuzz-cpp"
  "${MINGW_PACKAGE_PREFIX}-rapidjson"
  "${MINGW_PACKAGE_PREFIX}-fmt"
  "${MINGW_PACKAGE_PREFIX}-spdlog"
  "${MINGW_PACKAGE_PREFIX}-rubberband"
  "${MINGW_PACKAGE_PREFIX}-re2"
  "${MINGW_PACKAGE_PREFIX}-snappy"
)
makedepends=(
  "${MINGW_PACKAGE_PREFIX}-cc"
  "${MINGW_PACKAGE_PREFIX}-cmake"
  "${MINGW_PACKAGE_PREFIX}-ninja"
  "${MINGW_PACKAGE_PREFIX}-boost"
  "git"
)
source=("https://github.com/ossia/score/releases/download/v${pkgver}/ossia.score-${pkgver}-src.tar.xz"
        "002-ffmpeg-no-postproc.patch")
sha256sums=('d84b86c481d11152bba416767b713babfed62fac02b13bfd111f37fa8f3abb3e'
            '5d9566871db87153d2e83f0726640048bdc5f573f0ee209fed67e3e3ff6c62c8')
noextract=(ossia.score-${pkgver}-src.tar.xz)

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

prepare() {
  [[ -d "${srcdir}"/${_realname}-${pkgver} ]] && rm -rf "${srcdir}"/${_realname}-${pkgver}
  MSYS=winsymlinks:native \
  tar -xJf "${srcdir}"/ossia.score-${pkgver}-src.tar.xz -C "${srcdir}" || true

  cd "${srcdir}/${_realname}-${pkgver}"

  apply_patch_with_msg \
    002-ffmpeg-no-postproc.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

  CXXFLAGS+=" -Wa,-mbig-obj"
  if [[ ${CC} == clang ]]; then
    CXXFLAGS+=" -fexperimental-library"
  fi

  rm -rf "${srcdir}/${_realname}-${pkgver}/src/addons/score-addon-ble"
  MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
  ${MINGW_PREFIX}/bin/cmake -Wno-dev -GNinja \
    -S "${srcdir}/${_realname}-${pkgver}" \
    -B "build-${MSYSTEM}" \
    -DCMAKE_UNITY_BUILD=0 \
    -DSCORE_PCH=1 \
    -DSCORE_STATIC_PLUGINS=1 \
    -DSCORE_FHS_BUILD=1 \
    -DSCORE_DEPLOYMENT_BUILD=1 \
    -DSCORE_MSYS2_PACKAGE=1 \
    -DOSSIA_USE_SYSTEM_LIBRARIES=1 \
    -DFETCHCONTENT_FULLY_DISCONNECTED=1 \
    -DSCORE_DISABLED_PLUGINS="score-plugin-jit;score-plugin-faust" \
    -DCMAKE_C_USE_RESPONSE_FILE_FOR_OBJECTS=1 \
    -DCMAKE_CXX_USE_RESPONSE_FILE_FOR_OBJECTS=1 \
    -DCMAKE_NINJA_FORCE_RESPONSE_FILE=1 \
    -DSCORE_NO_INSTALL_ONNXRUNTIME=ON \
    -DCMAKE_INSTALL_PREFIX="${MINGW_PREFIX}" \
    "${extra_config[@]}"

  cmake --build "build-${MSYSTEM}"
}


package() {
  DESTDIR="${pkgdir}" "${MINGW_PREFIX}/bin/cmake.exe" \
    -DCMAKE_INSTALL_DO_STRIP=1 \
    -DCOMPONENT=OssiaScore \
    -P "build-${MSYSTEM}/cmake_install.cmake"

  rm -rf "${pkgdir}${MINGW_PREFIX}/usr/share/faust"

  install -D -m644 "${srcdir}/${_realname}-${pkgver}/LICENSE.txt" "${pkgdir}${MINGW_PREFIX}/share/licenses/ossia-score/LICENSE"
}
