summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIonen Wolkens <ionen@gentoo.org>2022-03-05 01:30:23 -0500
committerIonen Wolkens <ionen@gentoo.org>2022-03-05 01:57:07 -0500
commit068201997e59cd47afce4fda21b12cd0841532ed (patch)
tree3ca070f1754ac83228ea3d908b205a64186c859c /games-emulation/snes9x
parentsci-mathematics/alectryon: new package; add 1.4.0 (diff)
downloadgentoo-068201997e59cd47afce4fda21b12cd0841532ed.tar.gz
gentoo-068201997e59cd47afce4fda21b12cd0841532ed.tar.bz2
gentoo-068201997e59cd47afce4fda21b12cd0841532ed.zip
games-emulation/snes9x: add 1.61
Various changes, but for some notable ones: - IUSE=gtk->gui, now uses gtkmm - RESTRICT=test, has no tests but fails if -gui/-gtk (bug #737044) - clean libretro objects to fix USE="netplay libretro" (bug #791475) - respect flags for libretro, also don't use CXXFLAGS for CFLAGS - install libretro core in libretro/ like libretro-snes9x - tentatively remove noexecstack, not seeing QA notices - remove html docs, they are not relevant for users This bundles glslang/spriv-cross but upstream is concerned about API and seems likely this will break if unbundled, leaving alone for now. bug #766782 was caused by CFLAGS = $(CXXFLAGS) without := leading to -fno-rtti being used for CC and seemingly being refusedby distcc. 1.61 corrected this. Closes: https://bugs.gentoo.org/737044 Closes: https://bugs.gentoo.org/766782 Closes: https://bugs.gentoo.org/791475 Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
Diffstat (limited to 'games-emulation/snes9x')
-rw-r--r--games-emulation/snes9x/Manifest3
-rw-r--r--games-emulation/snes9x/files/snes9x-1.61-libretro-flags.patch25
-rw-r--r--games-emulation/snes9x/metadata.xml3
-rw-r--r--games-emulation/snes9x/snes9x-1.61.ebuild152
4 files changed, 182 insertions, 1 deletions
diff --git a/games-emulation/snes9x/Manifest b/games-emulation/snes9x/Manifest
index c477123ee770..67367eddc376 100644
--- a/games-emulation/snes9x/Manifest
+++ b/games-emulation/snes9x/Manifest
@@ -1 +1,4 @@
DIST snes9x-1.60.tar.gz 2863228 BLAKE2B 0ac3bdd2403221f1013e2b5438aacc4e7d361e943ac7edc56f8ef22827d81484e0b162b84f739ce0f68fe58021124275fd908ccdde99e1e1d6d6c9c0a6e3d17b SHA512 840b006a8fbd479fd5ceb2d94af4ef6470c5e27a3e6c8ddb0dffc8d3e51f465669144cd428bfce28b2ed4f68e70d8f252f2d8a2cae602ba797791d7e483c14c9
+DIST snes9x-1.61-glslang.tar.gz 3188787 BLAKE2B 36ed327fbb2aec3657fe300b98f2e45cfe039596a64bca3076ecb079f7c33aa14ac09a96e5a174ad51faf0c4d585d82aaadec3d8209cf8d3ca55d70e316b1642 SHA512 de2ebc0cd89d22582c079006ac45a812e3aaaad9a44c77c68530aa1468fbc840c6ae25a4356d4e9fc697524cd721d26506d85bc35eac98452eabce0bc098b5a4
+DIST snes9x-1.61-spirv.tar.gz 676662 BLAKE2B ab18406c99e4e04c6c497b5f447dcaccb7d5a60f42bf1cea31afee04ee664e74916b32736c1aea1e7106494154e48e5cbe9b5d6a0652667c4d0e2020814cd9bd SHA512 bfa3cc944450db59a57a685eea12b0ed0b5059d55a092ac5cdf6f4dc03c1e2d2e62fa5a576156c772340e12136b10d7ed790bb35b4aece2ee8405e64f826e31b
+DIST snes9x-1.61.tar.gz 3016890 BLAKE2B 3e94dee5172bf48d2461a3a1403fc7e7fc8069df6dddf5b5e1da59ee140297bd0b7cee6948b5eb154c1eec38aebe3ab29a9fae3dfb4abdce41769d2ace43dee1 SHA512 8b644f5b7136e89fd222bcb430fc736c74a3e383d7e6c7f0880235f6fa4c0f77abbf02493f8d654a12e87701111643e33877bc21bb3dfcc9b82a056fa1b1d880
diff --git a/games-emulation/snes9x/files/snes9x-1.61-libretro-flags.patch b/games-emulation/snes9x/files/snes9x-1.61-libretro-flags.patch
new file mode 100644
index 000000000000..297c7d78257d
--- /dev/null
+++ b/games-emulation/snes9x/files/snes9x-1.61-libretro-flags.patch
@@ -0,0 +1,25 @@
+CXXFLAGS is used as a "common" flags variable and passed to CFLAGS,
+but want to use user's CFLAGS for CC rather than CXXFLAGS. Workaround
+with a temporary variable and also drop -O3/lto from defaults.
+--- a/libretro/Makefile
++++ b/libretro/Makefile
+@@ -4,3 +4,5 @@
+
+-LTO ?= -flto
++LTO :=
++ORIG_CXXFLAGS := $(CXXFLAGS)
++CXXFLAGS :=
+ SPACE :=
+@@ -580,4 +582,4 @@
+ else
+- CFLAGS += -O3 -DNDEBUG
+- CXXFLAGS += -O3 -DNDEBUG
++ CFLAGS += -DNDEBUG
++ CXXFLAGS += -DNDEBUG
+ endif
+@@ -612,3 +614,4 @@
+ CXXFLAGS += -DRIGHTSHIFT_IS_SAR -D__LIBRETRO__ -DALLOW_CPU_OVERCLOCK
+-CFLAGS := $(CXXFLAGS)
++CFLAGS := $(CXXFLAGS) $(CFLAGS)
++CXXFLAGS += $(ORIG_CXXFLAGS)
+ CFLAGS += -DHAVE_STDINT_H
diff --git a/games-emulation/snes9x/metadata.xml b/games-emulation/snes9x/metadata.xml
index 2d24d25eb987..8f63c2fe45fa 100644
--- a/games-emulation/snes9x/metadata.xml
+++ b/games-emulation/snes9x/metadata.xml
@@ -6,8 +6,9 @@
<name>Gentoo Games Project</name>
</maintainer>
<use>
- <flag name="netplay">Enable playing ROMs over the network (not recommended)</flag>
+ <flag name="glslang">Build support for slang-type shaders</flag>
<flag name="libretro">Build libretro port</flag>
+ <flag name="netplay">Enable playing ROMs over the network (not recommended)</flag>
</use>
<upstream>
<remote-id type="google-code">snes9x-gtk</remote-id>
diff --git a/games-emulation/snes9x/snes9x-1.61.ebuild b/games-emulation/snes9x/snes9x-1.61.ebuild
new file mode 100644
index 000000000000..0442b30335df
--- /dev/null
+++ b/games-emulation/snes9x/snes9x-1.61.ebuild
@@ -0,0 +1,152 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools meson toolchain-funcs xdg
+
+GLSLANG_COMMIT="bcf6a2430e99e8fc24f9f266e99316905e6d5134"
+SPIRV_COMMIT="1458bae62ec67ea7d12c5a13b740e23ed4bb226c"
+
+DESCRIPTION="Super Nintendo Entertainment System (SNES) emulator"
+HOMEPAGE="https://github.com/snes9xgit/snes9x/"
+SRC_URI="
+ https://github.com/snes9xgit/snes9x/archive/${PV}.tar.gz -> ${P}.tar.gz
+ gui? ( glslang? (
+ https://github.com/KhronosGroup/glslang/archive/${GLSLANG_COMMIT}.tar.gz -> ${P}-glslang.tar.gz
+ https://github.com/KhronosGroup/SPIRV-Cross/archive/${SPIRV_COMMIT}.tar.gz -> ${P}-spirv.tar.gz
+ ) )"
+
+LICENSE="
+ Snes9x GPL-2 GPL-2+ LGPL-2.1 LGPL-2.1+ ISC MIT ZLIB
+ gui? ( glslang? ( Apache-2.0 BSD ) )"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc64 ~x86"
+IUSE="alsa debug glslang gui libretro netplay opengl oss png portaudio pulseaudio wayland xinerama +xv"
+RESTRICT="bindist test" # has no tests but can lead to bug #737044
+
+RDEPEND="
+ sys-libs/zlib:=[minizip]
+ x11-libs/libX11
+ x11-libs/libXext
+ alsa? ( media-libs/alsa-lib )
+ gui? (
+ dev-cpp/cairomm:0
+ dev-cpp/glibmm:2
+ dev-cpp/gtkmm:3.0[wayland?]
+ dev-libs/glib:2
+ dev-libs/libsigc++:2
+ media-libs/libsdl2[joystick]
+ x11-libs/cairo
+ x11-libs/gdk-pixbuf:2
+ x11-libs/gtk+:3[wayland?]
+ x11-libs/libXrandr
+ x11-misc/xdg-utils
+ opengl? ( media-libs/libepoxy )
+ portaudio? ( media-libs/portaudio )
+ pulseaudio? ( media-sound/pulseaudio )
+ wayland? ( dev-libs/wayland )
+ )
+ libretro? ( !games-emulation/libretro-snes9x )
+ png? ( media-libs/libpng:= )
+ xinerama? ( x11-libs/libXinerama )
+ xv? ( x11-libs/libXv )"
+DEPEND="
+ ${RDEPEND}
+ x11-base/xorg-proto
+ opengl? ( media-libs/libglvnd )"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.53-cross-compile.patch
+ "${FILESDIR}"/${PN}-1.59-build-system.patch
+ "${FILESDIR}"/${PN}-1.61-libretro-flags.patch
+)
+
+src_prepare() {
+ if use gui && use glslang; then
+ rmdir shaders/{glslang,SPIRV-Cross} || die
+ mv ../glslang-${GLSLANG_COMMIT} shaders/glslang || die
+ mv ../SPIRV-Cross-${SPIRV_COMMIT} shaders/SPIRV-Cross || die
+ fi
+
+ default
+
+ rm -r unzip || die
+
+ cd unix || die
+ eautoreconf
+}
+
+src_configure() {
+ tc-export CC CXX # for libretro
+
+ local econfargs=(
+ $(use_enable alsa sound-alsa)
+ $(use_enable debug debugger)
+ $(use_enable netplay)
+ $(use_enable png screenshot)
+ $(use_enable xinerama)
+ $(use_enable xv xvideo)
+ --enable-gamepad
+ --enable-gzip
+ --enable-zip
+ --with-system-zip
+ )
+
+ cd unix || die
+ econf "${econfargs[@]}"
+
+ if use gui; then
+ local emesonargs=(
+ $(meson_use alsa)
+ $(meson_use debug debugger)
+ $(meson_use glslang slang) # TODO?: unbundle
+ $(meson_use opengl)
+ $(meson_use oss)
+ $(meson_use png screenshot)
+ $(meson_use portaudio)
+ $(meson_use pulseaudio)
+ $(meson_use wayland)
+ $(meson_use xv)
+ -Dsystem-zip=true
+ -Dzlib=true
+ )
+
+ EMESON_SOURCE=${S}/gtk
+ meson_src_configure
+ fi
+}
+
+src_compile() {
+ if use libretro; then
+ emake -C libretro
+ # rebuild objects given libretro uses different defines (bug #791475)
+ rm *.o || die
+ fi
+
+ emake -C unix
+
+ use gui && meson_src_compile
+}
+
+src_install() {
+ if use libretro; then
+ exeinto /usr/$(get_libdir)/libretro
+ doexe libretro/snes9x_libretro.so
+ fi
+
+ dobin unix/${PN}
+
+ local DOCS=(
+ README.md
+ docs/{changes,control-inputs,controls,snapshots}.txt
+ unix/snes9x.conf.default
+ )
+ einstalldocs
+
+ if use gui; then
+ meson_src_install
+ dodoc gtk/AUTHORS
+ fi
+}