summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Väth <martin@mvath.de>2018-03-19 08:52:54 +0100
committerMartin Väth <martin@mvath.de>2018-03-19 08:52:54 +0100
commit59098befadc5ef891203b0660a4b48245e11659e (patch)
tree3ee3705c08c0357c4d2bdc11f7a96ab8489ff7c6
parentx11-libs/motif: Revision bump (diff)
downloadmv-59098befadc5ef891203b0660a4b48245e11659e.tar.gz
mv-59098befadc5ef891203b0660a4b48245e11659e.tar.bz2
mv-59098befadc5ef891203b0660a4b48245e11659e.zip
games-emulation/sdlmame: Copy from gentoo and EAPI bump to save from removal
-rw-r--r--games-emulation/sdlmame/Manifest1
-rw-r--r--games-emulation/sdlmame/files/sdlmame-0.174-cxx14.patch28
-rw-r--r--games-emulation/sdlmame/files/sdlmame-0.174-qt.patch29
-rw-r--r--games-emulation/sdlmame/files/vector.ini9
-rw-r--r--games-emulation/sdlmame/metadata.xml30
-rw-r--r--games-emulation/sdlmame/sdlmame-0.174.ebuild234
-rw-r--r--metadata/pkg_desc_index1
-rw-r--r--profiles/use.local.desc3
8 files changed, 335 insertions, 0 deletions
diff --git a/games-emulation/sdlmame/Manifest b/games-emulation/sdlmame/Manifest
new file mode 100644
index 00000000..8b368284
--- /dev/null
+++ b/games-emulation/sdlmame/Manifest
@@ -0,0 +1 @@
+DIST mame-0.174.zip 95944685 BLAKE2B e97027edf7be293e599499bd428c663c1fc13498e2fe10ee356aa56ef8ba85d6ea003ba65a8cbc41d1159246eed354585fc18bf9507b47dc1774b87f5737b48d SHA512 9db4d98fb5f5373529808f3bc41fddefa65ebbf7c26d946ebf886cab25e5abf7c4d539d96dfd6af5e62f4366b2bb0b0b59d40fe7a722698f3707eb8ea4c12a0b
diff --git a/games-emulation/sdlmame/files/sdlmame-0.174-cxx14.patch b/games-emulation/sdlmame/files/sdlmame-0.174-cxx14.patch
new file mode 100644
index 00000000..bd88cb47
--- /dev/null
+++ b/games-emulation/sdlmame/files/sdlmame-0.174-cxx14.patch
@@ -0,0 +1,28 @@
+# work around gcc-4.9.3's implementation of cxx14
+# bug 582576 with patch from Alexander Miller
+# https://bugs.gentoo.org/show_bug.cgi?id=582576
+
+--- a/src/lib/util/strformat.h
++++ b/src/lib/util/strformat.h
+@@ -185,9 +185,8 @@
+ #include <type_traits>
+ #include <utility>
+
+-#if defined(__GLIBCXX__) && (__GLIBCXX__ < 20150413)
+-namespace std
+-{
++namespace std {
++namespace mame_cxx14_compat {
+ template<class _Container>
+ inline constexpr auto
+ cbegin(const _Container& __cont) noexcept(noexcept(std::begin(__cont)))-> decltype(std::begin(__cont))
+@@ -198,7 +197,8 @@
+ cend(const _Container& __cont) noexcept(noexcept(std::end(__cont)))-> decltype(std::end(__cont))
+ { return std::end(__cont); }
+ }
+-#endif
++using namespace mame_cxx14_compat;
++}
+
+ namespace util {
+ namespace detail {
diff --git a/games-emulation/sdlmame/files/sdlmame-0.174-qt.patch b/games-emulation/sdlmame/files/sdlmame-0.174-qt.patch
new file mode 100644
index 00000000..5de00e1f
--- /dev/null
+++ b/games-emulation/sdlmame/files/sdlmame-0.174-qt.patch
@@ -0,0 +1,29 @@
+No point in adding qt-related things to the compile line unless the qt debugger is wanted
+
+--- 1/scripts/src/osd/sdl_cfg.lua.orig
++++ 2/scripts/src/osd/sdl_cfg.lua
+@@ -115,14 +115,16 @@
+ configuration { }
+
+ elseif _OPTIONS["targetos"]=="linux" then
+- if _OPTIONS["QT_HOME"]~=nil then
+- buildoptions {
+- "-I" .. backtick(_OPTIONS["QT_HOME"] .. "/bin/qmake -query QT_INSTALL_HEADERS"),
+- }
+- else
+- buildoptions {
+- backtick("pkg-config --cflags Qt5Widgets"),
+- }
++ if _OPTIONS["USE_QTDEBUG"]=="1" then
++ if _OPTIONS["QT_HOME"]~=nil then
++ buildoptions {
++ "-I" .. backtick(_OPTIONS["QT_HOME"] .. "/bin/qmake -query QT_INSTALL_HEADERS"),
++ }
++ else
++ buildoptions {
++ backtick("pkg-config --cflags Qt5Widgets"),
++ }
++ end
+ end
+ elseif _OPTIONS["targetos"]=="macosx" then
+ defines {
diff --git a/games-emulation/sdlmame/files/vector.ini b/games-emulation/sdlmame/files/vector.ini
new file mode 100644
index 00000000..d4906e34
--- /dev/null
+++ b/games-emulation/sdlmame/files/vector.ini
@@ -0,0 +1,9 @@
+#
+# Specific options file for vector games
+#
+
+#
+# VIDEO OPTIONS
+#
+video soft
+yuvmode yv12
diff --git a/games-emulation/sdlmame/metadata.xml b/games-emulation/sdlmame/metadata.xml
new file mode 100644
index 00000000..86abf710
--- /dev/null
+++ b/games-emulation/sdlmame/metadata.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>games@gentoo.org</email>
+ <name>Gentoo Games Project</name>
+ </maintainer>
+ <longdescription>
+SDLMAME is a port of the popular MAME[tm]. There are a few principles that guide it's development:
+
+1) run on Linux/Unix, Mac OS X, and other SDL supported operating systems with as few changes as
+possible to the base Win32 code. This means we can track changes faster than larger more conventional
+ports such as MacMAME, and we also maintain what I call "Firefox compatibilty" where learning a major
+app only needs to be done once per application, and it then applies across many operating systems. If
+you can use the command-line Win32 MAME, you already know how to use SDLMAME on any platform you may
+encounter it on.
+
+2) MAME developers are important. By keeping quickly up to date, we make it easy for people on
+non-Windows platforms to make and submit changes to the core MAME code, and we offer native
+implementations of MAME's multi-window GUI debugger on both Linux/Unix and Mac OS X.
+ </longdescription>
+ <use>
+ <flag name="arcade">Enable the Multiple Arcade Machine Emulator for arcade games support</flag>
+ <flag name="tools">Build development tools shared between sdlmame and sdlmess</flag>
+ <flag name="mess">Enable the Multi Emulator Super System for game system support</flag>
+ </use>
+ <upstream>
+ <remote-id type="github">mamedev/mame</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/games-emulation/sdlmame/sdlmame-0.174.ebuild b/games-emulation/sdlmame/sdlmame-0.174.ebuild
new file mode 100644
index 00000000..0df94a89
--- /dev/null
+++ b/games-emulation/sdlmame/sdlmame-0.174.ebuild
@@ -0,0 +1,234 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+PYTHON_COMPAT=( python2_7 )
+inherit python-any-r1 toolchain-funcs qmake-utils
+
+MY_PV="${PV/.}"
+
+DESCRIPTION="Multiple Arcade Machine Emulator + Multi Emulator Super System (MESS)"
+HOMEPAGE="http://mamedev.org/"
+SRC_URI="https://github.com/mamedev/mame/releases/download/mame${MY_PV}/mame${MY_PV}s.zip -> mame-${PV}.zip"
+
+LICENSE="GPL-2+ BSD-2 MIT CC0-1.0"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="alsa +arcade debug +mess opengl openmp tools"
+REQUIRED_USE="|| ( arcade mess )"
+
+: ${GAMES_SYSCONFDIR:=/etc/games}
+: ${GAMES_BINDIR:=/usr/bin}
+: ${GAMES_DATADIR:=/usr/share/games}
+
+# MESS (games-emulation/sdlmess) has been merged into MAME upstream since mame-0.162 (see below)
+# MAME/MESS build combined (default) +arcade +mess (mame)
+# MAME build only +arcade -mess (mamearcade)
+# MESS build only -arcade +mess (mess)
+# games-emulation/sdlmametools is dropped and enabled instead by the 'tools' useflag
+RDEPEND="!games-emulation/sdlmametools
+ !games-emulation/sdlmess
+ dev-db/sqlite:3
+ dev-libs/expat
+ media-libs/fontconfig
+ media-libs/flac
+ media-libs/libsdl2[joystick,opengl?,sound,video,X]
+ media-libs/portaudio
+ media-libs/sdl2-ttf
+ sys-libs/zlib
+ virtual/jpeg:0
+ virtual/opengl
+ alsa? ( media-libs/alsa-lib
+ media-libs/portmidi )
+ debug? ( dev-qt/qtcore:5
+ dev-qt/qtgui:5
+ dev-qt/qtwidgets:5 )
+ x11-libs/libX11
+ x11-libs/libXinerama
+ ${PYTHON_DEPS}"
+DEPEND="${RDEPEND}
+ ${PYTHON_DEPS}
+ app-arch/unzip
+ virtual/pkgconfig
+ x11-proto/xineramaproto"
+
+S=${WORKDIR}
+
+# Function to disable a makefile option
+disable_feature() {
+ sed -i -e "/^[ ]*$1.*=/s:^:# :" makefile || die
+}
+
+# Function to enable a makefile option
+enable_feature() {
+ sed -i -e "/^#.*$1.*=/s:^#[ ]*::" makefile || die
+}
+
+pkg_setup() {
+ python-any-r1_pkg_setup
+}
+
+src_unpack() {
+ default
+ unpack ./mame.zip
+ rm -f mame.zip || die
+}
+
+src_prepare() {
+ eapply \
+ "${FILESDIR}"/${P}-qt.patch \
+ "${FILESDIR}"/${P}-cxx14.patch
+ # Disable using bundled libraries
+ enable_feature USE_SYSTEM_LIB_EXPAT
+ enable_feature USE_SYSTEM_LIB_FLAC
+ enable_feature USE_SYSTEM_LIB_JPEG
+# Use bundled lua for now to ensure correct compilation (ref. b.g.o #407091)
+# enable_feature USE_SYSTEM_LIB_LUA
+ enable_feature USE_SYSTEM_LIB_PORTAUDIO
+ enable_feature USE_SYSTEM_LIB_SQLITE3
+ enable_feature USE_SYSTEM_LIB_ZLIB
+
+ # Disable warnings being treated as errors and enable verbose build output
+ enable_feature NOWERROR
+ enable_feature VERBOSE
+
+ use amd64 && enable_feature PTR64
+ use debug && enable_feature DEBUG
+ use tools && enable_feature TOOLS
+ disable_feature NO_X11 # bgfx needs X
+ use openmp && enable_feature OPENMP
+
+ if use alsa ; then
+ enable_feature USE_SYSTEM_LIB_PORTMIDI
+ else
+ enable_feature NO_USE_MIDI
+ fi
+
+ sed -i \
+ -e 's/-Os//' \
+ -e '/^\(CC\|CXX\|AR\) /s/=/?=/' \
+ 3rdparty/genie/build/gmake.linux/genie.make || die
+ default
+}
+
+src_compile() {
+ local targetargs
+ local qtdebug=$(usex debug 1 0)
+
+ use arcade && ! use mess && targetargs="SUBTARGET=arcade"
+ ! use arcade && use mess && targetargs="SUBTARGET=mess"
+
+ function my_emake() {
+ # Workaround conflicting $ARCH variable used by both Gentoo's
+ # portage and by Mame's build scripts
+ PYTHON_EXECUTABLE=${PYTHON} \
+ OVERRIDE_CC=$(tc-getCC) \
+ OVERRIDE_CXX=$(tc-getCXX) \
+ OVERRIDE_LD=$(tc-getCXX) \
+ QT_HOME="$(qt5_get_libdir)/qt5" \
+ ARCH= \
+ emake "$@" \
+ AR=$(tc-getAR)
+ }
+ my_emake -j1 generate
+
+ my_emake ${targetargs} \
+ SDL_INI_PATH="\$\$\$\$HOME/.sdlmame;${GAMES_SYSCONFDIR}/${PN}" \
+ USE_QTDEBUG=${qtdebug}
+
+ if use tools ; then
+ my_emake -j1 TARGET=ldplayer USE_QTDEBUG=${qtdebug}
+ fi
+}
+
+src_install() {
+ local MAMEBIN
+ local suffix="$(use amd64 && echo 64)$(use debug && echo d)"
+ local f
+
+ function mess_install() {
+ dosym ${MAMEBIN} "${GAMES_BINDIR}"/mess${suffix}
+ dosym ${MAMEBIN} "${GAMES_BINDIR}"/sdlmess
+ newman docs/man/mess.6 sdlmess.6
+ doman docs/man/mess.6
+ }
+ if use arcade ; then
+ if use mess ; then
+ MAMEBIN="mame${suffix}"
+ mess_install
+ else
+ MAMEBIN="mamearcade${suffix}"
+ fi
+ doman docs/man/mame.6
+ newman docs/man/mame.6 ${PN}.6
+ elif use mess ; then
+ MAMEBIN="mess${suffix}"
+ mess_install
+ fi
+ dobin ${MAMEBIN}
+ dosym ${MAMEBIN} "${GAMES_BINDIR}/${PN}"
+
+ insinto "${GAMES_DATADIR}/${PN}"
+ doins -r keymaps $(use mess && echo hash)
+
+ # Create default mame.ini and inject Gentoo settings into it
+ # Note that '~' does not work and '$HOME' must be used
+ ./${MAMEBIN} -noreadconfig -showconfig > "${T}/mame.ini" || die
+ # -- Paths --
+ for f in {rom,hash,sample,art,font,crosshair} ; do
+ sed -i \
+ -e "s:\(${f}path\)[ \t]*\(.*\):\1 \t\t\$HOME/.${PN}/\2;${GAMES_DATADIR}/${PN}/\2:" \
+ "${T}/mame.ini" || die
+ done
+ for f in {ctrlr,cheat} ; do
+ sed -i \
+ -e "s:\(${f}path\)[ \t]*\(.*\):\1 \t\t\$HOME/.${PN}/\2;${GAMES_SYSCONFDIR}/${PN}/\2;${GAMES_DATADIR}/${PN}/\2:" \
+ "${T}/mame.ini" || die
+ done
+ # -- Directories
+ for f in {cfg,nvram,memcard,input,state,snapshot,diff,comment} ; do
+ sed -i \
+ -e "s:\(${f}_directory\)[ \t]*\(.*\):\1 \t\t\$HOME/.${PN}/\2:" \
+ "${T}/mame.ini" || die
+ done
+ # -- Keymaps --
+ sed -i \
+ -e "s:\(keymap_file\)[ \t]*\(.*\):\1 \t\t\$HOME/.${PN}/\2:" \
+ "${T}/mame.ini" || die
+ for f in keymaps/km*.map ; do
+ sed -i \
+ -e "/^keymap_file/a \#keymap_file \t\t${GAMES_DATADIR}/${PN}/keymaps/${f##*/}" \
+ "${T}/mame.ini" || die
+ done
+ insinto "${GAMES_SYSCONFDIR}/${PN}"
+ doins "${T}/mame.ini"
+
+ insinto "${GAMES_SYSCONFDIR}/${PN}"
+ doins "${FILESDIR}/vector.ini"
+
+ dodoc docs/{config,mame,newvideo}.txt
+ keepdir \
+ "${GAMES_DATADIR}/${PN}"/{ctrlr,cheat,roms,samples,artwork,crosshair} \
+ "${GAMES_SYSCONFDIR}/${PN}"/{ctrlr,cheat}
+
+ if use tools ; then
+ for f in castool chdman floptool imgtool jedutil ldresample ldverify romcmp ; do
+ newbin ${f} ${PN}-${f}
+ newman docs/man/${f}.1 ${PN}-${f}.1
+ done
+ newbin ldplayer${suffix} ${PN}-ldplayer
+ newman docs/man/ldplayer.1 ${PN}-ldplayer.1
+ fi
+}
+
+pkg_postinst() {
+ elog "It is strongly recommended to change either the system-wide"
+ elog " ${GAMES_SYSCONFDIR}/${PN}/mame.ini or use a per-user setup at ~/.${PN}/mame.ini"
+ elog
+ if use opengl ; then
+ elog "You built ${PN} with opengl support and should set"
+ elog "\"video\" to \"opengl\" in mame.ini to take advantage of that"
+ elog
+ elog "For more info see http://wiki.mamedev.org"
+ fi
+}
diff --git a/metadata/pkg_desc_index b/metadata/pkg_desc_index
index 2d581926..e7d8480b 100644
--- a/metadata/pkg_desc_index
+++ b/metadata/pkg_desc_index
@@ -60,6 +60,7 @@ dev-util/pyrep 1.4-r1: Search and/or replace regular expressions within many fil
dev-vcs/git-wrappers-mv 1.16: Some personal wrappers for the most important git commands
games-action/trackballs 1.1.4-r1: simple game similar to the classical game Marble Madness
games-board/chessproblem 1.8 2.9: Find solutions of chess problems (mate, selfmate, and helpmate) with cooks
+games-emulation/sdlmame 0.174: Multiple Arcade Machine Emulator + Multi Emulator Super System (MESS)
games-emulation/xmame 0.106-r2: Multiple Arcade Machine Emulator for X11
games-emulation/xmess 0.106-r1: Multiple Arcade Machine Emulator for X11
games-engines/freesci 0.6.4-r1: Sierra script interpreter for your old Sierra adventures
diff --git a/profiles/use.local.desc b/profiles/use.local.desc
index 0749d988..909b8293 100644
--- a/profiles/use.local.desc
+++ b/profiles/use.local.desc
@@ -130,6 +130,9 @@ games-board/chessproblem:multithreading - Install multithreading version
games-board/chessproblem:optimization - Accept upstream's choices for CXXFLAGS/LDFLAGS for optimization. Absense of this USE flag does not strip user's *FLAGS
games-board/chessproblem:propagate-signal - Use signal propagation for thread pruning. Requires more memory; it is faster in some cases, but slower in others
games-board/chessproblem:strong-optimization - Adds several more agressive CXXFLAGS/LDFLAGS for optimization like graphite (if available). May cause trouble with some buggy compiler versions. Absense of this USE flag does not strip user's *FLAGS
+games-emulation/sdlmame:arcade - Enable the Multiple Arcade Machine Emulator for arcade games support
+games-emulation/sdlmame:mess - Enable the Multi Emulator Super System for game system support
+games-emulation/sdlmame:tools - Build development tools shared between sdlmame and sdlmess
games-emulation/xmame:bundled-libs - Use bundled version of dev-libs/expat
games-emulation/xmame:net - Add network support
games-emulation/xmess:bundled-libs - Use bundled version of dev-libs/expat