# Maintainer: Mazhar Hussain <realmazharhussain@gmail.com>

_realname=gst-plugins-rs
pkgbase=mingw-w64-${_realname}
pkgname=${MINGW_PACKAGE_PREFIX}-${_realname}
pkgver=1.26.1
_tag=gstreamer-${pkgver}
pkgrel=1
pkgdesc='GStreamer plugins written in Rust (mingw-w64)'
arch=(any)
mingw_arch=('mingw64' 'ucrt64' 'clang64')
url='https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs'
license=('spdx:LGPL-3.0-or-later AND Apache-2.0 AND MIT AND MPL-2.0')
depends=(${MINGW_PACKAGE_PREFIX}-gtk4
         ${MINGW_PACKAGE_PREFIX}-libsodium
         ${MINGW_PACKAGE_PREFIX}-gstreamer
         ${MINGW_PACKAGE_PREFIX}-gst-plugins-base
         ${MINGW_PACKAGE_PREFIX}-gst-plugins-bad-libs
         ${MINGW_PACKAGE_PREFIX}-libwebp
         ${MINGW_PACKAGE_PREFIX}-dav1d)
makedepends=(${MINGW_PACKAGE_PREFIX}-rust
             ${MINGW_PACKAGE_PREFIX}-cargo-c
             ${MINGW_PACKAGE_PREFIX}-cmake
             ${MINGW_PACKAGE_PREFIX}-pkgconf
             ${MINGW_PACKAGE_PREFIX}-nasm
             ${MINGW_PACKAGE_PREFIX}-rust-bindgen
             git)
source=("${url}/-/archive/${_tag}/${_realname}-gstreamer-${_tag}.tar.bz2"
        "git+https://github.com/aws/aws-lc-rs.git#tag=aws-lc-sys/v0.28.2"
        "git+https://github.com/aws/aws-lc.git"
        "aws-lc-clang-build.patch")
sha256sums=('5f265553f6b94b561e42fef747ff61d9e0b26809a2a7a03031118be65407af1a'
            'd0cffb45d78861fe6ee6ad3fe36f1e8203f952198f5506b9ac9d8893de213a1f'
            'SKIP'
            '2e3d7ef6fdb3ef8a2ec11207e8120ea34553888116ea8a032cb425a8a6261c39')

prepare() {
  mv "${_realname}-${_tag}-"* "${_realname}-${_tag}"

  (cd aws-lc-rs
  git config submodule."aws-lc-sys/aws-lc".url "${srcdir}/aws-lc"
  git config submodule."aws-lc-fips-sys/aws-lc".url "${srcdir}/aws-lc"
  git -c protocol.file.allow=always submodule update --init --recursive)

  if [ ${CC} = clang ]; then
    patch -d aws-lc-rs/aws-lc-sys/aws-lc -p1 -i "${srcdir}/aws-lc-clang-build.patch"
  fi

  cd "${_realname}-${_tag}"

  cat >> Cargo.toml <<END

[patch.crates-io]
aws-lc-sys = { path = "../aws-lc-rs/aws-lc-sys" }
END

  cargo update -p aws-lc-sys
  cargo fetch --locked
}

_cargo_opts=(--workspace
             --offline
             --release
             --meson-paths
             --library-type=cdylib
             --prefix="${MINGW_PREFIX}"
             --exclude gst-plugin-csound
             --exclude gst-plugin-vvdec)

build() {
  cd "${_realname}-${_tag}"

  MSYS2_ARG_CONV_EXCL="--prefix=" cargo cbuild "${_cargo_opts[@]}"
}

check() {
  cd "${_realname}-${_tag}"

  MSYS2_ARG_CONV_EXCL="--prefix=" cargo ctest "${_cargo_opts[@]}" --target-dir=tests-build
}

package() {
  cd "${_realname}-${_tag}"

  MSYS2_ARG_CONV_EXCL="--prefix=" cargo cinstall "${_cargo_opts[@]}" --destdir="${pkgdir}"

  install -Dm644 -t "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/" LICENSE*
}
