diff options
author | Ionen Wolkens <ionen@gentoo.org> | 2022-03-05 01:30:23 -0500 |
---|---|---|
committer | Ionen Wolkens <ionen@gentoo.org> | 2022-03-05 01:57:07 -0500 |
commit | 068201997e59cd47afce4fda21b12cd0841532ed (patch) | |
tree | 3ca070f1754ac83228ea3d908b205a64186c859c /games-emulation/snes9x | |
parent | sci-mathematics/alectryon: new package; add 1.4.0 (diff) | |
download | gentoo-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/Manifest | 3 | ||||
-rw-r--r-- | games-emulation/snes9x/files/snes9x-1.61-libretro-flags.patch | 25 | ||||
-rw-r--r-- | games-emulation/snes9x/metadata.xml | 3 | ||||
-rw-r--r-- | games-emulation/snes9x/snes9x-1.61.ebuild | 152 |
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 +} |