Files
guru/app-emulation/lsfg-vk/lsfg-vk-1.0.0-r2.ebuild
Charlie Quinet 2e075fdcc2 app-emulation/lsfg-vk: use xdg eclass
Signed-off-by: Charlie Quinet <w.iron.zombie@gmail.com>
2026-06-12 22:31:27 +02:00

286 lines
6.3 KiB
Bash

# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
CARGO_OPTIONAL=1
CRATES="
adler2@2.0.1
aho-corasick@1.1.3
android-tzdata@0.1.1
android_system_properties@0.1.5
anyhow@1.0.98
autocfg@1.5.0
bindgen@0.70.1
bitflags@2.9.1
bumpalo@3.19.0
cairo-rs@0.21.0
cairo-sys-rs@0.21.0
cc@1.2.30
cexpr@0.6.0
cfg-expr@0.20.1
cfg-if@1.0.1
chrono@0.4.41
clang-sys@1.8.1
core-foundation-sys@0.8.7
crc32fast@1.5.0
either@1.15.0
equivalent@1.0.2
errno@0.3.13
field-offset@0.3.6
flate2@1.1.2
futures-channel@0.3.31
futures-core@0.3.31
futures-executor@0.3.31
futures-io@0.3.31
futures-macro@0.3.31
futures-task@0.3.31
futures-util@0.3.31
gdk-pixbuf-sys@0.21.0
gdk-pixbuf@0.21.0
gdk4-sys@0.10.0
gdk4@0.10.0
gio-sys@0.21.0
gio@0.21.0
glib-build-tools@0.21.0
glib-macros@0.21.0
glib-sys@0.21.0
glib@0.21.0
glob@0.3.2
gobject-sys@0.21.0
graphene-rs@0.21.0
graphene-sys@0.21.0
gsk4-sys@0.10.0
gsk4@0.10.0
gtk4-macros@0.10.0
gtk4-sys@0.10.0
gtk4@0.10.0
hashbrown@0.15.4
heck@0.5.0
hex@0.4.3
iana-time-zone-haiku@0.1.2
iana-time-zone@0.1.63
indexmap@2.10.0
itertools@0.13.0
js-sys@0.3.77
libadwaita-sys@0.8.0
libadwaita@0.8.0
libc@0.2.174
libloading@0.8.8
libproc@0.14.10
linux-raw-sys@0.4.15
log@0.4.27
mach2@0.4.3
memchr@2.7.5
memoffset@0.9.1
minimal-lexical@0.2.1
miniz_oxide@0.8.9
nom@7.1.3
num-traits@0.2.19
once_cell@1.21.3
pango-sys@0.21.0
pango@0.21.0
pin-project-lite@0.2.16
pin-utils@0.1.0
pkg-config@0.3.32
prettyplease@0.2.36
proc-macro-crate@3.3.0
proc-macro2@1.0.95
proc-maps@0.4.0
procfs-core@0.17.0
procfs@0.17.0
quote@1.0.40
regex-automata@0.4.9
regex-syntax@0.8.5
regex@1.11.1
rustc-hash@1.1.0
rustc_version@0.4.1
rustix@0.38.44
rustversion@1.0.21
semver@1.0.26
serde@1.0.219
serde_derive@1.0.219
serde_spanned@0.6.9
serde_spanned@1.0.0
shlex@1.3.0
slab@0.4.10
smallvec@1.15.1
syn@2.0.104
system-deps@7.0.5
target-lexicon@0.13.2
toml@0.8.23
toml@0.9.2
toml_datetime@0.6.11
toml_datetime@0.7.0
toml_edit@0.22.27
toml_parser@1.0.1
toml_writer@1.0.2
unicode-ident@1.0.18
version-compare@0.2.0
wasm-bindgen-backend@0.2.100
wasm-bindgen-macro-support@0.2.100
wasm-bindgen-macro@0.2.100
wasm-bindgen-shared@0.2.100
wasm-bindgen@0.2.100
winapi-i686-pc-windows-gnu@0.4.0
winapi-x86_64-pc-windows-gnu@0.4.0
winapi@0.3.9
windows-core@0.61.2
windows-implement@0.60.0
windows-interface@0.59.1
windows-link@0.1.3
windows-result@0.3.4
windows-strings@0.4.2
windows-sys@0.59.0
windows-sys@0.60.2
windows-targets@0.52.6
windows-targets@0.53.2
windows_aarch64_gnullvm@0.52.6
windows_aarch64_gnullvm@0.53.0
windows_aarch64_msvc@0.52.6
windows_aarch64_msvc@0.53.0
windows_i686_gnu@0.52.6
windows_i686_gnu@0.53.0
windows_i686_gnullvm@0.52.6
windows_i686_gnullvm@0.53.0
windows_i686_msvc@0.52.6
windows_i686_msvc@0.53.0
windows_x86_64_gnu@0.52.6
windows_x86_64_gnu@0.53.0
windows_x86_64_gnullvm@0.52.6
windows_x86_64_gnullvm@0.53.0
windows_x86_64_msvc@0.52.6
windows_x86_64_msvc@0.53.0
winnow@0.7.12
"
inherit cargo cmake desktop flag-o-matic toolchain-funcs xdg
DESCRIPTION="Lossless Scaling Frame Generation on Linux via DXVK/Vulkan"
HOMEPAGE="https://github.com/PancakeTAS/lsfg-vk"
LICENSE="MIT"
SLOT="0"
IUSE="+gui"
if [[ ${PV} == 9999 ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/PancakeTAS/lsfg-vk"
EGIT_SUBMODULES=(
thirdparty/dxbc
thirdparty/pe-parse
thirdparty/volk
)
else
KEYWORDS="~amd64 ~arm64"
HASH_DXBC="78ab59a8aaeb43cd1b0a5e91ba86722433a10b78"
HASH_VOLK="be3dbd49bf77052665e96b6c7484af855e7e5f67"
PEPARSE_VERSION="2.1.1"
SRC_URI="
https://github.com/PancakeTAS/lsfg-vk/archive/refs/tags/v${PV}.tar.gz -> lsfg-vk-${PV}.tar.gz
https://github.com/PancakeTAS/dxbc/archive/${HASH_DXBC}.tar.gz -> dxbc-${HASH_DXBC}.tar.gz
https://github.com/trailofbits/pe-parse/archive/refs/tags/v${PEPARSE_VERSION}.tar.gz
-> pe-parse-${PEPARSE_VERSION}.tar.gz
https://github.com/zeux/volk/archive/${HASH_VOLK}.tar.gz -> volk-${HASH_VOLK}.tar.gz
${CARGO_CRATE_URIS}
"
fi
BDEPEND="
dev-util/vulkan-headers
gui? ( ${RUST_DEPEND} )
"
DEPEND="
dev-cpp/toml11
dev-util/glslang
gui? (
dev-libs/glib:2
gui-libs/gtk:4[introspection]
gui-libs/libadwaita
)
|| (
media-libs/glfw
media-libs/libsdl2
media-libs/libsdl3
)
media-libs/vulkan-loader
"
RDEPEND="${DEPEND}"
PATCHES=(
"${FILESDIR}/lsfg-vk-1.0.0-fix-visibility.patch"
)
src_unpack() {
if [[ ${PV} != 9999 ]]; then
use gui || default
else
git-r3_src_unpack
fi
if use gui; then
if [[ ${PV} != 9999 ]]; then
cargo_src_unpack
else
oldS="${S}"
S="${S}/ui"
cargo_live_src_unpack
S="${oldS}"
fi
fi
}
src_prepare() {
if [[ ${PV} != 9999 ]]; then
rmdir thirdparty/* || die
mv ../dxbc-${HASH_DXBC} thirdparty/dxbc || die
mv ../pe-parse-${PEPARSE_VERSION} thirdparty/pe-parse || die
mv ../volk-${HASH_VOLK} thirdparty/volk || die
fi
# Static linking pe-parse
sed -i\
's/^option(BUILD_SHARED_LIBS "Build Shared Libraries" ON)$/option(BUILD_SHARED_LIBS "Build Shared Libraries" OFF)/'\
thirdparty/pe-parse/CMakeLists.txt || die
sed -i\
's|add_library(${PROJECT_NAME} ${PEPARSERLIB_SOURCEFILES})|add_library(${PROJECT_NAME} STATIC ${PEPARSERLIB_SOURCEFILES})|'\
thirdparty/pe-parse/pe-parser-library/CMakeLists.txt || die
# Using system toml11
sed -i\
-e '/add_subdirectory(thirdparty\/toml11 EXCLUDE_FROM_ALL)/d' \
-e '/get_target_property(TOML11_INCLUDE_DIRS toml11 INTERFACE_INCLUDE_DIRECTORIES)/{
N
/target_include_directories(lsfg-vk SYSTEM PRIVATE ${TOML11_INCLUDE_DIRS})/c\
find_package(toml11 REQUIRED)
}'\
-e '/target_link_libraries(lsfg-vk PRIVATE/{:a;N;/)/!ba;s/\btoml11\b/toml11::toml11/g}'\
CMakeLists.txt || die
eapply_user
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() {
insinto "/usr/share/vulkan/implicit_layer.d/"
doins "${S}/VkLayer_LS_frame_generation.json"
dolib.so "${WORKDIR}/${P}_build/liblsfg-vk.so"
if use gui; then
dobin "${S}/ui/$(cargo_target_dir)/lsfg-vk-ui"
domenu "${S}/ui/rsc/gay.pancake.lsfg-vk-ui.desktop"
newicon -s 256 "${S}/ui/rsc/icon.png" "gay.pancake.lsfg-vk-ui.png"
fi
}