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/snes9x-1.61.ebuild
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/snes9x-1.61.ebuild')
-rw-r--r--games-emulation/snes9x/snes9x-1.61.ebuild152
1 files changed, 152 insertions, 0 deletions
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
+}