# Maintainer: fauxpark <fauxpark@gmail.com>

_realname=mkvtoolnix
pkgbase=mingw-w64-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}-cli"
         "${MINGW_PACKAGE_PREFIX}-${_realname}-gui")
pkgver=82.0
pkgrel=4
pkgdesc="Set of tools to create, edit and inspect Matroska files (mingw-w64)"
arch=('any')
mingw_arch=('mingw64' 'ucrt64' 'clang64')
url='https://mkvtoolnix.download/'
msys2_repository_url="https://gitlab.com/mbunkus/mkvtoolnix"
license=('spdx:GPL-2.0-or-later')
depends=("${MINGW_PACKAGE_PREFIX}-boost"
         "${MINGW_PACKAGE_PREFIX}-fmt"
         "${MINGW_PACKAGE_PREFIX}-gcc-libs"
         "${MINGW_PACKAGE_PREFIX}-gmp"
         "${MINGW_PACKAGE_PREFIX}-libebml"
         "${MINGW_PACKAGE_PREFIX}-libmatroska"
         "${MINGW_PACKAGE_PREFIX}-pugixml"
         "${MINGW_PACKAGE_PREFIX}-qt6-base")
makedepends=("${MINGW_PACKAGE_PREFIX}-cc"
             "${MINGW_PACKAGE_PREFIX}-autotools"
             "${MINGW_PACKAGE_PREFIX}-ruby"
             "${MINGW_PACKAGE_PREFIX}-docbook-xsl"
             "${MINGW_PACKAGE_PREFIX}-imagemagick"
             "${MINGW_PACKAGE_PREFIX}-cmark"
             "${MINGW_PACKAGE_PREFIX}-libvorbis"
             "${MINGW_PACKAGE_PREFIX}-qt6-tools"
             "${MINGW_PACKAGE_PREFIX}-qt6-multimedia"
             "${MINGW_PACKAGE_PREFIX}-qt6-svg"
             "${MINGW_PACKAGE_PREFIX}-zlib"
             "po4a"
             "zsh")
source=(https://mkvtoolnix.download/sources/mkvtoolnix-${pkgver}.tar.xz{,.sig}
        "001-fix-build-with-fmt-11.patch"::https://gitlab.com/mbunkus/mkvtoolnix/-/commit/b57dde69.patch
        "002-add-missing-include-for-Qt-6.8.patch"::https://gitlab.com/mbunkus/mkvtoolnix/-/merge_requests/2264.patch)
sha256sums=('635f1dcdc6c42852ea8fe621b50f68c224dda970fd8086944685111368d9c50c'
            'SKIP'
            '09d6e953db263db44ea70d0c18b9d6ddb993431b223a27d113733036eaca46be'
            'e94f4f71b1c9a6cdbeeedab76da809f7c0e76f67fe89624774703d74de99694e')
validpgpkeys=('D9199745B0545F2E8197062B0F92290A445B9007') # Moritz Bunkus <moritz@bunkus.org>
noextract=(mkvtoolnix-${pkgver}.tar.xz)

# Helper macros to help make tasks easier #
apply_patch_with_msg() {
  for _fname in "$@"
  do
    msg2 "Applying ${_fname}"
    patch -Nbp1 -i "${srcdir}"/${_fname}
  done
}

prepare() {
  plain "Extracting mkvtoolnix-${pkgver}.tar.xz due to symlink(s) without pre-existing target(s)"
  tar -xJf ${srcdir}/mkvtoolnix-${pkgver}.tar.xz -C ${srcdir} || true
  # Do it again to fix the symlinks (as the target files didn't exist yet)
  tar -xJf ${srcdir}/mkvtoolnix-${pkgver}.tar.xz -C ${srcdir} || true

  cd ${_realname}-${pkgver}
  apply_patch_with_msg \
    001-fix-build-with-fmt-11.patch \
    002-add-missing-include-for-Qt-6.8.patch
}

build() {
  cd "${srcdir}/${_realname}-${pkgver}"

  if [[ ${CC} == gcc ]]; then
    CXXFLAGS+=" -Wno-template-id-cdtor"
  fi

  # libboost_system-mt.dll was an empty dummy library that is no longer being
  # distributed.  Avoid configuration error by providing an existing library
  # that is going to be used anyway instead.
  CXXFLAGS+=" -Wno-ignored-attributes" \
  ./configure \
    --prefix="${MINGW_PREFIX}" \
    --with-boost-system=boost_filesystem-mt \
    --with-boost-filesystem=boost_filesystem-mt \
    --disable-update-check \
    ac_cv_lib_gtest_main_main=no

  rake
}

package_mkvtoolnix-cli() {
  cd "${srcdir}/${_realname}-${pkgver}"

  depends+=("${MINGW_PACKAGE_PREFIX}-libogg"
            "${MINGW_PACKAGE_PREFIX}-libvorbis"
            "${MINGW_PACKAGE_PREFIX}-zlib")

  rake DESTDIR="${pkgdir}" install

  rm -rf ${pkgdir}${MINGW_PREFIX}/share/{applications,icons,metainfo,mime,mkvtoolnix}
  find "${pkgdir}${MINGW_PREFIX}" -name mkvtoolnix-gui* -delete
}

package_mkvtoolnix-gui() {
  cd "${srcdir}/${_realname}-${pkgver}"

  depends+=("${MINGW_PACKAGE_PREFIX}-cmark"
            "${MINGW_PACKAGE_PREFIX}-hicolor-icon-theme"
            "${MINGW_PACKAGE_PREFIX}-mkvtoolnix-cli"
            "${MINGW_PACKAGE_PREFIX}-qt6-multimedia"
            "${MINGW_PACKAGE_PREFIX}-qt6-svg")

  rake DESTDIR="${pkgdir}" install

  rm -rf ${pkgdir}${MINGW_PREFIX}/share/locale
  for t in mkv{extract,info,merge,propedit}; do
    find "${pkgdir}${MINGW_PREFIX}" -name $t* -delete
  done
}

# template start; name=mingw-w64-splitpkg-wrappers; version=1.0;
# vim: set ft=bash :

# generate wrappers
for _name in "${pkgname[@]}"; do
  _short="package_${_name#${MINGW_PACKAGE_PREFIX}-}"
  _func="$(declare -f "${_short}")"
  eval "${_func/#${_short}/package_${_name}}"
done
# template end;
