# 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=5
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}-cc-libs"
  "${MINGW_PACKAGE_PREFIX}-ffmpeg"
  "${MINGW_PACKAGE_PREFIX}-fftw"
  "${MINGW_PACKAGE_PREFIX}-hdf5"
  "${MINGW_PACKAGE_PREFIX}-libwinpthread"
  "${MINGW_PACKAGE_PREFIX}-portaudio"
  "${MINGW_PACKAGE_PREFIX}-qt6-base"
  "${MINGW_PACKAGE_PREFIX}-qt6-declarative"
  "${MINGW_PACKAGE_PREFIX}-qt6-serialport"
  "${MINGW_PACKAGE_PREFIX}-qt6-shadertools"
  "${MINGW_PACKAGE_PREFIX}-qt6-scxml"
  "${MINGW_PACKAGE_PREFIX}-qt6-svg"
  "${MINGW_PACKAGE_PREFIX}-qt6-websockets"
  "${MINGW_PACKAGE_PREFIX}-re2"
  "${MINGW_PACKAGE_PREFIX}-rubberband"
  "${MINGW_PACKAGE_PREFIX}-SDL2"
  #"${MINGW_PACKAGE_PREFIX}-snappy"
  "${MINGW_PACKAGE_PREFIX}-spdlog"
)
makedepends=(
  "${MINGW_PACKAGE_PREFIX}-cc"
  "${MINGW_PACKAGE_PREFIX}-cmake"
  "${MINGW_PACKAGE_PREFIX}-ninja"
  "${MINGW_PACKAGE_PREFIX}-boost"
  "${MINGW_PACKAGE_PREFIX}-cppwinrt"
  "${MINGW_PACKAGE_PREFIX}-fmt"
  "${MINGW_PACKAGE_PREFIX}-rapidfuzz-cpp"
  #"${MINGW_PACKAGE_PREFIX}-rapidjson"
  "${MINGW_PACKAGE_PREFIX}-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

  rm -rf "${srcdir}"/${_realname}-${pkgver}/src/addons/score-addon-ble
}

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 -DBOOST_PFR_USE_CPP26=0" \
  MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
  cmake -Wno-dev \
    -GNinja \
    -DCMAKE_INSTALL_PREFIX="${MINGW_PREFIX}" \
    -DCMAKE_UNITY_BUILD=0 \
    -DCMAKE_C_USE_RESPONSE_FILE_FOR_OBJECTS=1 \
    -DCMAKE_CXX_USE_RESPONSE_FILE_FOR_OBJECTS=1 \
    -DCMAKE_NINJA_FORCE_RESPONSE_FILE=1 \
    -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" \
    -DQT_NO_PRIVATE_MODULE_WARNING=ON \
    "${extra_config[@]}" \
    -S "${_realname}-${pkgver}" \
    -B "build-${MSYSTEM}"

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


package() {
  DESTDIR="${pkgdir}" cmake --install "build-${MSYSTEM}" --component OssiaScore

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