Skip to content

Commit

Permalink
Use new MAME build that includes the XInput (lightgun) patch now
Browse files Browse the repository at this point in the history
  • Loading branch information
Markus Rathgeb committed Aug 30, 2012
1 parent cc220ed commit c32bbd5
Show file tree
Hide file tree
Showing 3 changed files with 261 additions and 0 deletions.
61 changes: 61 additions & 0 deletions games-emulation/sdlmame/files/sdlmame-0.146_p5-makefile.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
--- a/makefile 2012-08-30 21:07:42.743138853 +0200
+++ b/makefile 2012-08-30 21:11:30.361149703 +0200
@@ -456,9 +456,6 @@
CPPONLYFLAGS += -x c++ -std=gnu++98
COBJFLAGS += -x objective-c++

-# this speeds it up a bit by piping between the preprocessor/compiler/assembler
-CCOMFLAGS += -pipe
-
# add -g if we need symbols, and ensure we have frame pointers
ifdef SYMBOLS
CCOMFLAGS += -g$(SYMLEVEL) -fno-omit-frame-pointer
@@ -474,19 +471,6 @@
CCOMFLAGS += -pg
endif

-# add the optimization flag
-CCOMFLAGS += -O$(OPTIMIZE)
-
-# add the error warning flag
-ifndef NOWERROR
-CCOMFLAGS += -Werror
-endif
-
-# if we are optimizing, include optimization options
-ifneq ($(OPTIMIZE),0)
-CCOMFLAGS += -fno-strict-aliasing $(ARCHOPTS)
-endif
-
# add a basic set of warnings
CCOMFLAGS += \
-Wall \
@@ -550,14 +534,6 @@

# LDFLAGS are used generally; LDFLAGSEMULATOR are additional
# flags only used when linking the core emulator
-LDFLAGS =
-ifneq ($(TARGETOS),macosx)
-ifneq ($(TARGETOS),os2)
-ifneq ($(TARGETOS),solaris)
-LDFLAGS = -Wl,--warn-common
-endif
-endif
-endif
LDFLAGSEMULATOR =

# add profiling information for the linker
@@ -565,13 +541,6 @@
LDFLAGS += -pg
endif

-# strip symbols and other metadata in non-symbols and non profiling builds
-ifndef SYMBOLS
-ifneq ($(TARGETOS),macosx)
-LDFLAGS += -s
-endif
-endif
-
# output a map file (emulator only)
ifdef MAP
LDFLAGSEMULATOR += -Wl,-Map,$(FULLNAME).map
11 changes: 11 additions & 0 deletions games-emulation/sdlmame/files/sdlmame-0.146_p5-no-opengl.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
--- a/src/osd/sdl/osdsdl.h 2012-08-30 21:07:50.434139220 +0200
+++ b/src/osd/sdl/osdsdl.h 2012-08-30 21:12:51.939153598 +0200
@@ -219,6 +219,8 @@
const char *audio_driver() const { return value(SDLOPTION_AUDIODRIVER); }
#if USE_OPENGL
const char *gl_lib() const { return value(SDLOPTION_GL_LIB); }
+#else
+ const char *gl_lib() const { return NULL; }
#endif

private:
189 changes: 189 additions & 0 deletions games-emulation/sdlmame/sdlmame-0.146_p5.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

EAPI=2
inherit eutils flag-o-matic games

MY_PV=${PV/.}
MY_CONF_PN=${PN/sdl}
MY_P=${PN}${MY_PV}
MY_P=${MY_P%%_p*}
MY_CONF_VER="0.139"
DESCRIPTION="Multiple Arcade Machine Emulator (SDL)"
HOMEPAGE="http://mamedev.org/"
UPDATES="$(for PATCH_VER in $(seq 1 ${PV##*_p}) ; do echo "mirror://gentoo/${MY_P}u${PATCH_VER}_diff.zip"; done)"
# Upstream doesn't allow fetching with unknown User-Agent such as wget
SRC_URI="mirror://gentoo/${MY_P/sdl}s.zip $UPDATES
http://www.netswarm.net/misc/sdlmame-ui.bdf.gz"

LICENSE="XMAME"
SLOT="0"
KEYWORDS="amd64 ~ppc x86"
IUSE="debug opengl"

RDEPEND=">=media-libs/libsdl-1.2.10[audio,joystick,opengl?,video]
media-libs/sdl-ttf
dev-libs/expat
sys-libs/zlib
media-libs/flac
virtual/jpeg
debug? (
x11-libs/gtk+:2
gnome-base/gconf
x11-libs/libXinerama
)"
DEPEND="${RDEPEND}
app-arch/unzip
debug? ( x11-proto/xineramaproto )"

S=${WORKDIR}

# Function to disable a makefile option
disable_feature() {
sed -i \
-e "/$1.*=/s:^:# :" \
"${S}"/makefile \
|| die "sed failed"
}

# Function to enable a makefile option
enable_feature() {
sed -i \
-e "/^#.*$1.*=/s:^# ::" \
"${S}"/${2:-makefile} \
|| die "sed failed"
}

src_unpack() {
base_src_unpack
unpack ./mame.zip
rm -f mame.zip
}

src_prepare() {
if [[ $PV == *_p* ]] ; then
edos2unix $(find $(grep +++ *diff | awk '{ print $2 }' | sort -u) 2>/dev/null) *diff
einfo "Patching release with source updates"
epatch ${MY_PV%%_p*}*.diff
fi
edos2unix src/osd/sdl/osdsdl.h

epatch \
"${FILESDIR}"/${P}-makefile.patch \
"${FILESDIR}"/${P}-no-opengl.patch

# Don't compile zlib and expat
einfo "Disabling embedded libraries: expat, flac, jpeg, zlib"
disable_feature BUILD_EXPAT
disable_feature BUILD_FLAC
disable_feature BUILD_JPEG
disable_feature BUILD_ZLIB

if use amd64; then
einfo "Enabling 64-bit support"
enable_feature PTR64
fi

if use ppc; then
einfo "Enabling PPC support"
enable_feature BIGENDIAN
fi

if use debug; then
einfo "Enabling debug support"
enable_feature DEBUG
fi

# Never set NO_X11 dependent of the debug USE flag!
# NO_X11 will disable also other options, e.g. using a XInput device
# as a lightgun devices.

if ! use opengl ; then
einfo "Disabling opengl support"
enable_feature NO_OPENGL src/osd/sdl/sdl.mak
fi
}

src_compile() {
emake \
NAME="${PN}" \
OPT_FLAGS='-DINI_PATH=\"\$$HOME/.'${PN}'\;'"${GAMES_SYSCONFDIR}/${PN}"'\"'" ${CXXFLAGS}" \
CC="${CXX}" \
all || die
}

src_install() {
#
# Install main executable, man pages,
# and all executables a man page exists for.
#
# The man page category for the mame man page changed between
# 0.144 and 0.146u2, so we use the "ls ... while read ..."
# logic here to be independent of the category.
#

newgamesbin ${PN}$(use amd64 && echo 64)$(use debug && echo d) ${PN} || die

# Avoid collision on /usr/games/bin/jedutil
exeinto "$(games_get_libdir)/${PN}"

local SRC_MAN_DIR=src/osd/sdl/man
local SRC_MAN_PATH
local SRC_MAN_FILE
local SRC_MAN_NAME
local SRC_MAN_CATE
ls ${SRC_MAN_DIR} | while read SRC_MAN_FILE
do
SRC_MAN_PATH=${SRC_MAN_DIR}/${SRC_MAN_FILE}
SRC_MAN_NAME=${SRC_MAN_FILE%.[0-9]*}
SRC_MAN_CATE=${SRC_MAN_FILE#${SRC_MAN_NAME}.}

if [ ${SRC_MAN_NAME} = "mame" ]; then
newman ${SRC_MAN_PATH} ${PN}.${SRC_MAN_CATE}
else
if [ -x ${SRC_MAN_NAME} ]; then
doman ${SRC_MAN_PATH}
doexe ${SRC_MAN_NAME}
fi
fi
done

#
# Install other stuff.
#

insinto "${GAMES_DATADIR}/${PN}"
doins -r src/osd/sdl/keymaps || die "doins -r keymaps failed"
newins sdlmame-ui.bdf ui.bdf || die "newins ui.bdf failed"

insinto "${GAMES_SYSCONFDIR}/${PN}"
doins "${FILESDIR}"/vector.ini || die "doins vector.ini failed"

sed \
-e "s:@GAMES_SYSCONFDIR@:${GAMES_SYSCONFDIR}:" \
-e "s:@GAMES_DATADIR@:${GAMES_DATADIR}:" \
"${FILESDIR}/${MY_CONF_PN}-${MY_CONF_VER}".ini.in > "${D}/${GAMES_SYSCONFDIR}/${PN}/${MY_CONF_PN}".ini \
|| die "sed failed"

dodoc docs/{config,mame,newvideo}.txt whatsnew*.txt

keepdir \
"${GAMES_DATADIR}/${PN}"/{ctrlr,cheats,roms,samples,artwork,crosshair} \
"${GAMES_SYSCONFDIR}/${PN}"/{ctrlr,cheats}

prepgamesdirs
}

pkg_postinst() {
games_pkg_postinst

elog "It's strongly recommended that you change either the system-wide"
elog "${MY_CONF_PN}.ini at \"${GAMES_SYSCONFDIR}/${PN}\" or use a per-user setup at \$HOME/.${PN}"

if use opengl; then
echo
elog "You built ${PN} with opengl support and should set"
elog "\"video\" to \"opengl\" in ${MY_CONF_PN}.ini to take advantage of that"
fi
}

0 comments on commit c32bbd5

Please sign in to comment.