# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit cargo git-r3 meson xdg

DESCRIPTION="GStreamer plugins written in Rust"
HOMEPAGE="https://gstreamer.freedesktop.org/"
SRC_URI="https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git -> ${P}.git"
EGIT_REPO_URI="https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git"

LICENSE="|| ( LGPL-2.1+ MIT Apache-2.0 MPL-2.0 )"
SLOT="1.0"
KEYWORDS="~amd64 ~x86"
IUSE=""

#TODO: vvdec media lib
DEPEND="
	media-libs/gstreamer:1.0
	media-libs/gst-plugins-base:1.0
	media-libs/dav1d
	gui-libs/gtk:4
	dev-libs/libsodium
	media-libs/libwebp
"
RDEPEND="${DEPEND}"

src_unpack() {
	# 1. Clone source
	git-r3_src_unpack
	cargo_live_src_unpack

	# 6. Prepare Meson build dir
	local builddir="${WORKDIR}/build"
	mkdir -p "${builddir}"
	
	tc-export CC CXX AR NM OBJCOPY PKG_CONFIG
	export CC=$(tc-getCC)
	export CXX=$(tc-getCXX)
	export LD=$(tc-getLD)
	export AR=$(tc-getAR)
	export NM=$(tc-getNM)
	export PKG_CONFIG=$(tc-getPKG_CONFIG)

	# 7. Set up Meson args (manually, without meson.eclass)
	local emesonargs=(
		--libdir="$(get_libdir)"
		--prefix="${EPREFIX}/usr"
		--sysconfdir="${EPREFIX}/etc"
		--localstatedir="${EPREFIX}/var/lib"
		-Dcsound=disabled
		-Ddoc=disabled
		-Dsodium-source=system
	)

	# 8. Run Meson setup
	pushd "${builddir}" || die
	meson setup "${emesonargs[@]}" "${S}" || die "meson setup failed"

	# 9. Compile with ninja
	ninja -j$(makeopts_jobs) || die "ninja build failed"

	# 10. Install to D (temporarily in WORKDIR)
	DESTDIR="${WORKDIR}/fake-root" ninja install || die "ninja install failed"
	popd
}

src_configure() { :; }
src_compile() { :; }
src_test() { :; }

src_install() {
	cp -r "${WORKDIR}/fake-root"/. "${D}" || die
	einstalldocs
}