app-emulation/lsfg-vk: improve ebuild, use CARGO_OPTIONAL

Signed-off-by: Charlie Quinet <w.iron.zombie@gmail.com>
This commit is contained in:
Charlie Quinet
2025-07-25 00:03:10 +02:00
parent 747205d070
commit eb4eab6d5c

View File

@@ -3,7 +3,8 @@
EAPI=8 EAPI=8
inherit cmake cargo toolchain-funcs CARGO_OPTIONAL=1
inherit cargo cmake flag-o-matic toolchain-funcs
DESCRIPTION="Lossless Scaling Frame Generation on Linux via DXVK/Vulkan" DESCRIPTION="Lossless Scaling Frame Generation on Linux via DXVK/Vulkan"
HOMEPAGE="https://github.com/PancakeTAS/lsfg-vk" HOMEPAGE="https://github.com/PancakeTAS/lsfg-vk"
@@ -31,6 +32,7 @@ fi
BDEPEND=" BDEPEND="
dev-util/spirv-headers dev-util/spirv-headers
dev-util/vulkan-headers dev-util/vulkan-headers
gui? ( ${RUST_DEPEND} )
>=media-libs/raylib-9999 >=media-libs/raylib-9999
" "
DEPEND=" DEPEND="
@@ -61,6 +63,7 @@ src_unpack() {
oldS="${S}" oldS="${S}"
S="${S}/ui" S="${S}/ui"
if [[ ${PV} != 9999 ]]; then if [[ ${PV} != 9999 ]]; then
A=$(printf '%s\n' "${A[@]}" | grep '\.crate$' || true) # Workaroud to avoid unpacking twice
cargo_src_unpack cargo_src_unpack
else else
cargo_live_src_unpack cargo_live_src_unpack
@@ -69,17 +72,6 @@ src_unpack() {
fi fi
} }
src_configure() {
tc-is-gcc && filter-lto # LTO with gcc causes segfaults at runtime
cmake_src_configure
use gui && cd ui && cargo_src_configure
}
src_compile() {
cmake_src_compile
use gui && cd ui && cargo_src_compile
}
src_prepare() { src_prepare() {
if [[ ${PV} != 9999 ]]; then if [[ ${PV} != 9999 ]]; then
mv ../dxbc-${HASH_DXBC} thirdparty/dxbc || die mv ../dxbc-${HASH_DXBC} thirdparty/dxbc || die
@@ -129,9 +121,20 @@ target_include_directories(dxbc\
cmake_src_prepare cmake_src_prepare
} }
src_configure() {
tc-is-gcc && filter-lto # LTO with gcc causes segfaults at runtime
cmake_src_configure
use gui && { pushd ui > /dev/null || die; cargo_src_configure; }
}
src_compile() {
cmake_src_compile
use gui && { pushd ui > /dev/null || die; cargo_src_compile; }
}
src_install() { src_install() {
insinto "/usr/share/vulkan/implicit_layer.d/" insinto "/usr/share/vulkan/implicit_layer.d/"
doins "${S}/VkLayer_LS_frame_generation.json" doins "${S}/VkLayer_LS_frame_generation.json"
dolib.so "${WORKDIR}/${P}_build/liblsfg-vk.so" dolib.so "${WORKDIR}/${P}_build/liblsfg-vk.so"
use gui && newbin "${S}/ui/target/release/ui" "lsfg-vk-gui" use gui && newbin "${S}/ui/$(cargo_target_dir)/ui" "lsfg-vk-gui"
} }