1
0
mirror of https://github.com/gryf/gryf-overlay.git synced 2025-12-28 01:12:33 +01:00

Moved sdlmame to overlay

This commit is contained in:
2018-04-30 09:15:22 +02:00
parent 2df536f020
commit c6bbecd22f
6 changed files with 331 additions and 0 deletions

View File

@@ -0,0 +1 @@
DIST mame-0.174.zip 95944685 BLAKE2B e97027edf7be293e599499bd428c663c1fc13498e2fe10ee356aa56ef8ba85d6ea003ba65a8cbc41d1159246eed354585fc18bf9507b47dc1774b87f5737b48d SHA512 9db4d98fb5f5373529808f3bc41fddefa65ebbf7c26d946ebf886cab25e5abf7c4d539d96dfd6af5e62f4366b2bb0b0b59d40fe7a722698f3707eb8ea4c12a0b

View File

@@ -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 {

View File

@@ -0,0 +1,29 @@
No point in adding qt-related things to the compile line unless the qt debugger is wanted
--- scripts/src/osd/sdl_cfg.lua.orig
+++ 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 {

View File

@@ -0,0 +1,9 @@
#
# Specific options file for vector games
#
#
# VIDEO OPTIONS
#
video soft
yuvmode yv12

View File

@@ -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>

View File

@@ -0,0 +1,234 @@
# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI=5
PYTHON_COMPAT=( python2_7 )
inherit eutils python-any-r1 toolchain-funcs qmake-utils games
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 )"
# 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() {
games_pkg_setup
python-any-r1_pkg_setup
}
src_unpack() {
default
unpack ./mame.zip
rm -f mame.zip || die
}
src_prepare() {
epatch \
"${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
}
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
dogamesbin ${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
newgamesbin ${f} ${PN}-${f}
newman docs/man/${f}.1 ${PN}-${f}.1
done
newgamesbin ldplayer${suffix} ${PN}-ldplayer
newman docs/man/ldplayer.1 ${PN}-ldplayer.1
fi
prepgamesdirs
}
pkg_postinst() {
games_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
}