commit:     068201997e59cd47afce4fda21b12cd0841532ed
Author:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Sat Mar  5 06:30:23 2022 +0000
Commit:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Sat Mar  5 06:57:07 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=06820199

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 <AT> gentoo.org>

 games-emulation/snes9x/Manifest                    |   3 +
 .../snes9x/files/snes9x-1.61-libretro-flags.patch  |  25 ++++
 games-emulation/snes9x/metadata.xml                |   3 +-
 games-emulation/snes9x/snes9x-1.61.ebuild          | 152 +++++++++++++++++++++
 4 files changed, 182 insertions(+), 1 deletion(-)

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
+}

Reply via email to