# Contributor: Dr.Egg <hondoheal@gmail.com>
# Contributor: Stefan Husmann <stefan-husmann@t-online.de>
# Maintainer: Yichao Yu <yyc1992@gmail.com>

pkgname=musescore-git
_realver=5.0.0
pkgver=48584.4822c0fb60
pkgrel=1
epoch=1
pkgdesc="A music score editor - git-version"
arch=(aarch64 i686 x86_64)
url="http://www.musescore.org/en/"
license=('GPL')
depends=(shared-mime-info alsa-lib zlib freetype2 libvorbis libopusenc flac
         qt6-base qt6-networkauth qt6-declarative qt6-svg qt6-tools qt6-5compat
         qt6-scxml portaudio libpulse libsndfile libogg gcc-libs portmidi
         liblouis fdk-aac pugixml utf8cpp)
makedepends=('cmake' 'doxygen' 'git' 'lame' 'xxd' 'vulkan-headers')
optdepends=('jack')
conflicts=("musescore" 'mscore' 'musescore-svn')
provides=("musescore=${_realver}" 'musescore-svn')
replaces=('musescore-svn')
source=('git+https://github.com/musescore/MuseScore.git'
        'git+https://github.com/musescore/muse_framework.git'
        'git+https://github.com/musescore/muse_deps.git'
        'mime.xml'
        '0001-Do-not-force-fusion-style.patch'
        '0001-framework-Do-not-hard-code-Fusion-style.patch')
sha256sums=('SKIP'
            'SKIP'
            'SKIP'
            '85304aa6d5847542a7d31c010e82abda3872c471a625b64471e4e33a0b43b39d'
            '53662b02251dfb275fa0abcc37816ee0a21c7a301f5ba5c71f2b3dbe139853d7'
            '44d320ba802b0bb731eb13d0f9393f14dbdae8c3f3a0341c4c625cfdc2d03f18')
options=(strip debug)

pkgver() {
  cd MuseScore

  echo "$(git rev-list --count main).$(git rev-parse --short main)"
}

prepare() {
  cd MuseScore

  git submodule init

  git config submodule.muse_framework.url "$srcdir/muse_framework"
  git config submodule.muse_deps.url "$srcdir/muse_deps"
  git -c protocol.file.allow=always submodule update

  # Upstream add hard coded Fusion theme and they refuse to change it.
  patch -Np1 < ../0001-Do-not-force-fusion-style.patch

  (
    cd muse
    patch -Np1 < ../../0001-framework-Do-not-hard-code-Fusion-style.patch
  )
}

build() {
  cd MuseScore

  # Fix Musescore + gcc's broken pch.
  # `-DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-fPIC"`:
  #     Make sure the pch compilation doesn't error, since musescore passes the
  #     wrong flags to GCC.
  # Not defining `__cpp_aggregate_nsdmi`:
  #     Seems to cause GCC to ignore the PCH file.
  # `-Wno-invalid-pch`:
  #     Suppresses invalid PCH warning (doesn't seem to work....).
  CFLAGS+=" -ffile-prefix-map=${srcdir}=${DBGSRCDIR:-/usr/src/debug}"
  CXXFLAGS+=" -ffile-prefix-map=${srcdir}=${DBGSRCDIR:-/usr/src/debug}"
  # LTO is otherwise incompatible with QRC
  CXXFLAGS+=" -ffat-lto-objects"
  CFLAGS+=' -I/usr/include/opus'
  CXXFLAGS+=' -I/usr/include/opus'
  export CFLAGS
  export CXXFLAGS+=" -fPIC -Wno-unused-local-typedefs -Wno-unused-parameter -Wno-maybe-uninitialized -Wno-unused-function -Wno-invalid-pch"
  mkdir -p build.release
  cd build.release
  cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo \
        -DCMAKE_INSTALL_PREFIX=/usr \
        -DCMAKE_SKIP_RPATH=On \
        -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-fPIC" \
        -DBUILD_CRASHPAD_CLIENT=Off \
        -DMUSESCORE_BUILD_CONFIG=release \
        -DMUSESCORE_BUILD_MODE=release \
        -DBUILD_UNIT_TESTS=Off \
        -DMUSE_ENABLE_UNIT_TESTS=Off \
        -DMUE_BUILD_UNIT_TESTS=Off \
        -DEXTDEPS_OVERRIDE_ALL=SYSTEM
  make
}

package() {
  cd MuseScore/build.release

  make DESTDIR="$pkgdir" install
  install -Dm644 "$srcdir/mime.xml" \
          "$pkgdir/usr/share/mime/packages/x-musescore.xml"
  rm -rf "$pkgdir/usr/include/kddockwidgets"
  rm -rf "$pkgdir/usr/lib/cmake/KDDockWidgets"
  rm -rf "$pkgdir/usr/lib/libkddockwidgets.a"
  rm -rf "$pkgdir/usr/bin/crashpad_handler"
}
