# Copyright 2021-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

RUST_MIN_VER=1.95.0
inherit cargo desktop optfeature xdg

DESCRIPTION="Flash Player emulator written in Rust"
HOMEPAGE="https://ruffle.rs/"
SRC_URI="
	https://github.com/ruffle-rs/ruffle/archive/refs/tags/v${PV}.tar.gz
		-> ${P}.tar.gz
	https://distfiles.gentoo.org/pub/dev/ionen@gentoo.org/${P}-vendor.tar.xz
"

LICENSE="|| ( Apache-2.0 MIT )"
LICENSE+="
	Apache-2.0 BSD-2 BSD ISC MIT MPL-2.0 OFL-1.1 openssl
	UbuntuFontLicense-1.0 Unicode-3.0 ZLIB BZIP2
" # crates
SLOT="0"
KEYWORDS="~amd64"
IUSE="test"
RESTRICT="!test? ( test )"

# X/wayland libraries are dlopen'ed and are unneeded to build, assume
# users will have whichever they need rather than do USE or optfeatures
RDEPEND="
	dev-libs/openssl:=
	media-libs/alsa-lib
	media-libs/fontconfig
	media-libs/freetype
	virtual/libudev:=
"
DEPEND="${RDEPEND}"
BDEPEND="
	virtual/jre:*
	virtual/pkgconfig
"

QA_FLAGS_IGNORED="usr/bin/${PN}.*"

src_configure() {
	local workspaces=(
		ruffle_{desktop,scanner}
		exporter
		$(usev test tests)
	)

	cargo_src_configure "${workspaces[@]/#/--package=}"
}

src_install() {
	dodoc README.md

	newicon web/packages/extension/assets/images/icon180.png ${PN}.png
	make_desktop_entry --eapi9 ${PN} -n ${PN^} -c "AudioVideo;Player;Emulator;" \
		-e "MimeType=application/x-shockwave-flash;application/vnd.adobe.flash.movie;"

	cd "$(cargo_target_dir)" || die
	newbin ${PN}_desktop ${PN}
	newbin exporter ${PN}_exporter
	dobin ${PN}_scanner
}

pkg_postinst() {
	xdg_pkg_postinst

	optfeature "h264 video decoding" media-libs/openh264
	optfeature "the in-application file picker" sys-apps/xdg-desktop-portal
}
