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

EAPI=8
DOTNET_PKG_COMPAT=10.0
NUGETS="avalonia@12.1.0
	avalonia.angle.windows.natives@2.1.27548.20260419
	avalonia.buildservices@11.3.2
	avalonia.desktop@12.1.0
	avalonia.fonts.inter@12.1.0
	avalonia.freedesktop@12.1.0
	avalonia.freedesktop.atspi@12.1.0
	avalonia.harfbuzz@12.1.0
	avalonia.native@12.1.0
	avalonia.remote.protocol@12.1.0
	avalonia.skia@12.1.0
	avalonia.themes.fluent@12.1.0
	avalonia.win32@12.1.0
	avalonia.x11@12.1.0
	ffmpeg.autogen@7.1.1
	harfbuzzsharp@8.3.1.3
	harfbuzzsharp.nativeassets.linux@8.3.1.3
	harfbuzzsharp.nativeassets.macos@8.3.1.3
	harfbuzzsharp.nativeassets.webassembly@8.3.1.3
	harfbuzzsharp.nativeassets.win32@8.3.1.3
	iced@1.21.0
	microcom.runtime@0.11.6
	microsoft.build.framework@17.14.8
	microsoft.codeanalysis.analyzers@3.11.0
	microsoft.codeanalysis.common@4.12.0
	microsoft.codeanalysis.csharp@4.12.0
	microsoft.dotnet.platformabstractions@3.1.6
	microsoft.extensions.dependencymodel@9.0.9
	microsoft.netcore.platforms@1.1.0
	microsoft.win32.registry@5.0.0
	netstandard.library@1.6.1
	netstandard.library@2.0.3
	nlayer@1.14.0
	ppy.sdl3-cs@2026.629.0
	silk.net.core@2.23.0
	silk.net.vulkan@2.23.0
	silk.net.vulkan.extensions.ext@2.23.0
	silk.net.vulkan.extensions.khr@2.23.0
	skiasharp@3.119.4
	skiasharp.nativeassets.linux@3.119.4
	skiasharp.nativeassets.macos@3.119.4
	skiasharp.nativeassets.webassembly@3.119.4
	skiasharp.nativeassets.win32@3.119.4
	system.buffers@4.5.1
	system.buffers@4.6.0
	system.collections.immutable@8.0.0
	system.diagnostics.diagnosticsource@9.0.0
	system.io.hashing@10.0.0
	system.memory@4.5.4
	system.memory@4.5.5
	system.memory@4.6.0
	system.numerics.vectors@4.5.0
	system.numerics.vectors@4.6.0
	system.reflection.metadata@8.0.0
	system.runtime.compilerservices.unsafe@4.5.3
	system.runtime.compilerservices.unsafe@6.0.0
	system.runtime.compilerservices.unsafe@6.1.0
	system.security.accesscontrol@5.0.0
	system.security.principal.windows@5.0.0
	system.text.encoding.codepages@7.0.0
	system.threading.tasks.extensions@4.5.4
	tmds.dbus.protocol@0.94.1"

inherit desktop dotnet-pkg xdg

MY_PV="${PV/_p/-nexus-release.}"

DESCRIPTION="Experimental PlayStation 5 emulator written in C#"
HOMEPAGE="https://sharpemu.app/ https://github.com/sharpemu/sharpemu"
SRC_URI="https://github.com/sharpemu/sharpemu/archive/refs/tags/v${MY_PV}.tar.gz -> ${P}.tar.gz
	${NUGET_URIS}"
S="${WORKDIR}/${PN}-${MY_PV}"

LICENSE="GPL-2+ Apache-2.0 MIT"
# Licenses of the NuGet dependencies.
LICENSE+=" BSD LGPL-3 MIT"
SLOT="0"
KEYWORDS="~amd64"

RDEPEND="media-libs/fontconfig
	media-libs/freetype
	media-libs/vulkan-loader
	media-video/ffmpeg-compat:7
	x11-libs/libICE
	x11-libs/libSM
	x11-libs/libX11
	x11-libs/libXcursor
	x11-libs/libXi
	x11-libs/libXrandr"

DOTNET_PKG_PROJECTS=( src/SharpEmu.CLI/SharpEmu.CLI.csproj )
PATCHES=( "${FILESDIR}/${PN}-system-paths.patch" )

src_prepare() {
	sed -e "s|Path.Combine(AppContext.BaseDirectory, \"plugins\")|\"${EPREFIX}/usr/lib/ffmpeg7/$(get_libdir)\"|" \
		-i src/SharpEmu.Libs/Media/FfmpegRuntime.cs src/SharpEmu.Libs/Codec/Videodec2Decoder.cs || die
	dotnet-pkg_src_prepare
}

src_compile() {
	export AVALONIA_TELEMETRY_OPTOUT=1
	dotnet-pkg_src_compile
}

src_install() {
	dotnet-pkg-base_install
	dotnet-pkg-base_dolauncher "/usr/share/${P}/SharpEmu" "${PN}"
	newicon -s 256 assets/images/logo.png "${PN}.png"
	make_desktop_entry "${PN}" SharpEmu "${PN}" "Game;Emulator"
	einstalldocs
}