summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIonen Wolkens <ionen@gentoo.org>2023-09-24 06:55:07 -0400
committerIonen Wolkens <ionen@gentoo.org>2023-09-24 13:18:43 -0400
commit026008f0e8394406119a2491ccdce9c03f8e7542 (patch)
tree86116f14fb8c8b283a4a337651bb811b5b17e09e /games-emulation/fceux
parentgui-apps/qt6ct: give first-time note that it may be unstable (diff)
downloadgentoo-026008f0e8394406119a2491ccdce9c03f8e7542.tar.gz
gentoo-026008f0e8394406119a2491ccdce9c03f8e7542.tar.bz2
gentoo-026008f0e8394406119a2491ccdce9c03f8e7542.zip
games-emulation/fceux: add 2.6.6
Changes: * add IUSE=archive for 7z support * rearrange pkg_check_modules in a loop to avoid repeating this a fourth time for libarchive and maybe more later * pass -DGLVND=yes to avoid legacy mode Changes adapted from PR#32020 (changed to patches): * delete lua dlls in src_prepare rather than src_install * allow luajit * handle linking with libOpenGL without GLX (ideally proper luajit/GL changes should be upstreamed though) Technically avoiding libglvnd[-X] was not possible either way due to qtbase[opengl,-gles2-only,-X] failing with it (and then fceux fails to build with gles2-only), but this was recently fixed in Qt6.9999 and is now backported to 6.5+6.6 downstream (libglvnd[X] is still required if using Qt5). Closes: https://github.com/gentoo/gentoo/pull/32020 Thanks-to: Haelwenn (lanodan) Monnier <contact@hacktivis.me> Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
Diffstat (limited to 'games-emulation/fceux')
-rw-r--r--games-emulation/fceux/Manifest1
-rw-r--r--games-emulation/fceux/fceux-2.6.6.ebuild76
-rw-r--r--games-emulation/fceux/files/fceux-2.6.6-luajit.patch23
-rw-r--r--games-emulation/fceux/files/fceux-2.6.6-no-glx.patch9
-rw-r--r--games-emulation/fceux/metadata.xml1
5 files changed, 110 insertions, 0 deletions
diff --git a/games-emulation/fceux/Manifest b/games-emulation/fceux/Manifest
index ad1c6decc0a1..9a97745ee2a1 100644
--- a/games-emulation/fceux/Manifest
+++ b/games-emulation/fceux/Manifest
@@ -1 +1,2 @@
DIST fceux-2.6.5.tar.gz 23299626 BLAKE2B 167fbe401635b96ad0c1c07826b1e7b032fa66806a2c395aebcae9d2b4295a327d2abad960a883751da43baf49f91276dd6521692406ce610df7c1ce167006ca SHA512 3d37583d1917783513f05bd215437401aacda3bd1930238212cbbdd6ba105236028066d7198bfd8182e6d55ded7ce293f1e5d23295d2b730ec800dc5e5652598
+DIST fceux-2.6.6.tar.gz 23330274 BLAKE2B 4d7779af0afc5fa12d3734d282f92b105757d204c69091b4e3574e4ced6179c5e202b752225f412d68331c9866c63b626703b014835d398ca1262deeb0d32654 SHA512 0a6cff4c6b900569978003675812d92d893281c2bdf3b0b58c07e257251648ee325f9bb29b01253ab1a5e9354631d91a6e67a1e6bb36ebe89d5067509cabfa64
diff --git a/games-emulation/fceux/fceux-2.6.6.ebuild b/games-emulation/fceux/fceux-2.6.6.ebuild
new file mode 100644
index 000000000000..429084169f18
--- /dev/null
+++ b/games-emulation/fceux/fceux-2.6.6.ebuild
@@ -0,0 +1,76 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LUA_COMPAT=( lua5-1 luajit )
+inherit cmake lua-single xdg
+
+DESCRIPTION="Portable Famicom/NES emulator, an evolution of the original FCE Ultra"
+HOMEPAGE="https://fceux.com/"
+SRC_URI="
+ https://github.com/TASEmulators/fceux/archive/refs/tags/v${PV}.tar.gz
+ -> ${P}.tar.gz
+"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="archive ffmpeg qt6 x264 x265"
+REQUIRED_USE="${LUA_REQUIRED_USE}"
+
+RDEPEND="
+ ${LUA_DEPS}
+ media-libs/libglvnd
+ media-libs/libsdl2[joystick,sound,threads,video]
+ sys-libs/zlib:=[minizip]
+ archive? ( app-arch/libarchive:= )
+ qt6? ( dev-qt/qtbase:6[gui,opengl,widgets,-gles2-only] )
+ !qt6? (
+ dev-qt/qtcore:5
+ dev-qt/qtgui:5
+ dev-qt/qtopengl:5[-gles2-only]
+ dev-qt/qtwidgets:5
+ )
+ ffmpeg? ( media-video/ffmpeg:= )
+ x264? ( media-libs/x264:= )
+ x265? ( media-libs/x265:= )
+"
+DEPEND="${RDEPEND}"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-2.4.0-desktop.patch
+ "${FILESDIR}"/${PN}-2.4.0-no-git.patch
+ "${FILESDIR}"/${PN}-2.6.6-luajit.patch
+ "${FILESDIR}"/${PN}-2.6.6-no-glx.patch
+)
+
+src_prepare() {
+ cmake_src_prepare
+
+ local use
+ for use in archive:libarchive ffmpeg:libav x264 x265; do
+ use ${use%:*} ||
+ sed -i "/check_modules( ${use#*:} /Id" src/CMakeLists.txt || die
+ done
+
+ rm output/*.{chm,dll} || die # windows-only
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DGLVND=yes
+ -DPUBLIC_RELEASE=yes
+ -DQT6=$(usex qt6)
+ )
+
+ cmake_src_configure
+}
+
+src_install() {
+ local DOCS=( README TODO-SDL changelog.txt documentation/. readme.md )
+ cmake_src_install
+
+ rm "${ED}"/usr/share/doc/${PF}/fceux{,-net-server}.6 || die # duplicate
+ rm "${ED}"/usr/share/man/man6/fceux-net-server.6 || die # not used
+}
diff --git a/games-emulation/fceux/files/fceux-2.6.6-luajit.patch b/games-emulation/fceux/files/fceux-2.6.6-luajit.patch
new file mode 100644
index 000000000000..7d9720bd5277
--- /dev/null
+++ b/games-emulation/fceux/files/fceux-2.6.6-luajit.patch
@@ -0,0 +1,23 @@
+LuaJIT is 5.1-compatible and is maintained unlike lua5.1 itself, so
+try to allow it.
+
+Use the eclass' created unversioned lua.pc, and define the compat
+macro that is normally defined in 5.1's lauxlib.h but not luajit.
+
+TODO: an upstreamable fix involve find_package for lua (can manipulate
+preferences with cmake args), and no longer using luaL_reg at all.
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -186,3 +186,3 @@
+ # Check for LUA
+- pkg_search_module( LUA lua5.1 lua-5.1 )
++ pkg_search_module( LUA lua )
+
+--- a/src/lua-engine.cpp
++++ b/src/lua-engine.cpp
+@@ -124,2 +124,5 @@
+ #include <lauxlib.h>
++#ifndef luaL_reg
++#define luaL_reg luaL_Reg
++#endif
+ #include <lualib.h>
diff --git a/games-emulation/fceux/files/fceux-2.6.6-no-glx.patch b/games-emulation/fceux/files/fceux-2.6.6-no-glx.patch
new file mode 100644
index 000000000000..6f2ae359c80c
--- /dev/null
+++ b/games-emulation/fceux/files/fceux-2.6.6-no-glx.patch
@@ -0,0 +1,9 @@
+Allow linking on a GLX-less system.
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -87 +87 @@
+- find_package(OpenGL REQUIRED)
++ find_package(OpenGL REQUIRED COMPONENTS OpenGL )
+@@ -195 +195 @@
+- set( OPENGL_LDFLAGS ${OPENGL_LIBRARIES} )
++ set( OPENGL_LDFLAGS OpenGL::OpenGL )
diff --git a/games-emulation/fceux/metadata.xml b/games-emulation/fceux/metadata.xml
index 140a0d631683..65c0533d2709 100644
--- a/games-emulation/fceux/metadata.xml
+++ b/games-emulation/fceux/metadata.xml
@@ -6,6 +6,7 @@
<name>Gentoo Games Project</name>
</maintainer>
<use>
+ <flag name="archive">Use <pkg>app-arch/libarchive</pkg> for 7zip support</flag>
<flag name="ffmpeg">Use <pkg>media-video/ffmpeg</pkg> for video recording</flag>
<flag name="x265">Use <pkg>media-libs/x265</pkg> for video recording (HEVC)</flag>
</use>