# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 # These don't necessarily have to align with the upstream release. BUILD_DEPS_COMMIT="1ac1b57c6d96dceb646170d1c2f0a35703c4c50e" DISPLAYDEV_COMMIT="v2025.411.113543" ENET_COMMIT="44c85e16279553d9c052e572bcbfcd745fb74abf" INPUTTINO_COMMIT="8065aeb46e5e5980e700d9c1f1be3c4f7ec29630" MOONLIGHT_COMMIT="d3d3e6cf015cd032ce02718246b52aabd1e12294" NANORS_COMMIT="19f07b513e924e471cadd141943c1ec4adc8d0e0" TRAY_COMMIT="d45306e686c90a18f5792a1541783d7bc8555bc6" SWS_COMMIT="4abe3491582b56c0b18fc35278aad33b2db29cdc" WLRP_COMMIT="ffb89ac790096f6e6272822c8d5df7d0cc6fcdfa" FFMPEG_VERSION="7.1.1" # To make the assets tarball: # PV= # EGIT_OVERRIDE_COMMIT_LIZARDBYTE_SUNSHINE=v$PV ebuild sunshine-9999.ebuild clean compile # XZ_OPT=-9 tar --xform="s:^:Sunshine-$PV/:" -Jcf /var/cache/distfiles/sunshine-assets-$PV.tar.xz -C /var/tmp/portage/net-misc/sunshine-9999/work/sunshine-9999 assets/ if [[ ${PV} = 9999* ]]; then inherit git-r3 else SRC_URI=" https://github.com/LizardByte/Sunshine/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz https://github.com/LizardByte/build-deps/archive/${BUILD_DEPS_COMMIT}.tar.gz -> LizardByte-build-deps-${BUILD_DEPS_COMMIT}.tar.gz https://github.com/LizardByte/libdisplaydevice/archive/${DISPLAYDEV_COMMIT}.tar.gz -> libdisplaydevice-${DISPLAYDEV_COMMIT#v}.tar.gz https://github.com/cgutman/enet/archive/${ENET_COMMIT}.tar.gz -> moonlight-enet-${ENET_COMMIT}.tar.gz https://github.com/games-on-whales/inputtino/archive/${INPUTTINO_COMMIT}.tar.gz -> inputtino-${INPUTTINO_COMMIT}.tar.gz https://github.com/moonlight-stream/moonlight-common-c/archive/${MOONLIGHT_COMMIT}.tar.gz -> moonlight-common-c-${MOONLIGHT_COMMIT}.tar.gz https://github.com/sleepybishop/nanors/archive/${NANORS_COMMIT}.tar.gz -> nanors-${NANORS_COMMIT}.tar.gz https://github.com/LizardByte/tray/archive/${TRAY_COMMIT}.tar.gz -> LizardByte-tray-${TRAY_COMMIT}.tar.gz https://gitlab.com/eidheim/Simple-Web-Server/-/archive/${SWS_COMMIT}/Simple-Web-Server-${SWS_COMMIT}.tar.bz2 https://gitlab.freedesktop.org/wlroots/wlr-protocols/-/archive/${WLRP_COMMIT}/wlr-protocols-${WLRP_COMMIT}.tar.bz2 https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.xz https://dev.gentoo.org/~chewi/distfiles/${PN}-assets-${PV}.tar.xz " KEYWORDS="~amd64 ~arm64" S="${WORKDIR}/Sunshine-${PV}" fi inherit cmake fcaps flag-o-matic systemd toolchain-funcs udev xdg DESCRIPTION="Self-hosted game stream host for Moonlight" HOMEPAGE="https://github.com/LizardByte/Sunshine" LICENSE="GPL-3" SLOT="0" IUSE="cuda debug libdrm svt-av1 systemd trayicon vaapi wayland X x264 x265" # Strings for CPU features in the useflag[:configure_option] form # if :configure_option isn't set, it will use 'useflag' as configure option ARM_CPU_FEATURES=( cpu_flags_arm_thumb:armv5te cpu_flags_arm_v6:armv6 cpu_flags_arm_thumb2:armv6t2 cpu_flags_arm_neon:neon cpu_flags_arm_vfp:vfp cpu_flags_arm_vfpv3:vfpv3 cpu_flags_arm_v8:armv8 cpu_flags_arm_asimddp:dotprod cpu_flags_arm_i8mm:i8mm ) ARM_CPU_REQUIRED_USE=" arm64? ( cpu_flags_arm_v8 ) cpu_flags_arm_v8? ( cpu_flags_arm_vfpv3 cpu_flags_arm_neon ) cpu_flags_arm_neon? ( cpu_flags_arm_vfp arm? ( cpu_flags_arm_thumb2 ) ) cpu_flags_arm_vfpv3? ( cpu_flags_arm_vfp ) cpu_flags_arm_thumb2? ( cpu_flags_arm_v6 ) cpu_flags_arm_v6? ( arm? ( cpu_flags_arm_thumb ) ) " PPC_CPU_FEATURES=( cpu_flags_ppc_altivec:altivec cpu_flags_ppc_vsx:vsx cpu_flags_ppc_vsx2:power8 ) PPC_CPU_REQUIRED_USE=" cpu_flags_ppc_vsx? ( cpu_flags_ppc_altivec ) cpu_flags_ppc_vsx2? ( cpu_flags_ppc_vsx ) " X86_CPU_FEATURES_RAW=( 3dnow:amd3dnow 3dnowext:amd3dnowext aes:aesni avx:avx avx2:avx2 fma3:fma3 fma4:fma4 mmx:mmx mmxext:mmxext sse:sse sse2:sse2 sse3:sse3 ssse3:ssse3 sse4_1:sse4 sse4_2:sse42 xop:xop ) X86_CPU_FEATURES=( ${X86_CPU_FEATURES_RAW[@]/#/cpu_flags_x86_} ) X86_CPU_REQUIRED_USE=" cpu_flags_x86_avx2? ( cpu_flags_x86_avx ) cpu_flags_x86_fma4? ( cpu_flags_x86_avx ) cpu_flags_x86_fma3? ( cpu_flags_x86_avx ) cpu_flags_x86_xop? ( cpu_flags_x86_avx ) cpu_flags_x86_avx? ( cpu_flags_x86_sse4_2 ) cpu_flags_x86_aes? ( cpu_flags_x86_sse4_2 ) cpu_flags_x86_sse4_2? ( cpu_flags_x86_sse4_1 ) cpu_flags_x86_sse4_1? ( cpu_flags_x86_ssse3 ) cpu_flags_x86_ssse3? ( cpu_flags_x86_sse3 ) cpu_flags_x86_sse3? ( cpu_flags_x86_sse2 ) cpu_flags_x86_sse2? ( cpu_flags_x86_sse ) cpu_flags_x86_sse? ( cpu_flags_x86_mmxext ) cpu_flags_x86_mmxext? ( cpu_flags_x86_mmx ) cpu_flags_x86_3dnowext? ( cpu_flags_x86_3dnow ) cpu_flags_x86_3dnow? ( cpu_flags_x86_mmx ) " CPU_FEATURES_MAP=( ${ARM_CPU_FEATURES[@]} ${PPC_CPU_FEATURES[@]} ${X86_CPU_FEATURES[@]} ) IUSE="${IUSE} ${CPU_FEATURES_MAP[@]%:*}" CPU_REQUIRED_USE=" ${ARM_CPU_REQUIRED_USE} ${PPC_CPU_REQUIRED_USE} ${X86_CPU_REQUIRED_USE} " REQUIRED_USE=" ${CPU_REQUIRED_USE} || ( cuda libdrm wayland X ) " CDEPEND=" =dev-libs/boost-1.87*:=[nls] dev-libs/libevdev dev-libs/openssl:= media-libs/opus net-libs/miniupnpc:= net-misc/curl || ( media-libs/libpulse media-sound/apulse[sdk] ) libdrm? ( sys-libs/libcap x11-libs/libdrm ) svt-av1? ( media-libs/svt-av1:= ) trayicon? ( dev-libs/libayatana-appindicator x11-libs/libnotify ) vaapi? ( media-libs/libva:=[wayland?,X?] ) wayland? ( dev-libs/wayland ) X? ( x11-libs/libX11 ) x264? ( media-libs/x264:= ) x265? ( media-libs/x265:= ) " RDEPEND=" ${CDEPEND} media-libs/mesa[vaapi?] X? ( x11-libs/libxcb x11-libs/libXfixes x11-libs/libXrandr x11-libs/libXtst ) " DEPEND=" ${CDEPEND} media-libs/amf-headers