blob: c22ee678d193d504e485845906069e3ae58031d0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
|
# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/games-emulation/xmame/xmame-0.106.ebuild,v 1.10 2009/05/25 23:56:18 nyhm Exp $
inherit flag-o-matic toolchain-funcs eutils games
TARGET="${PN}"
DESCRIPTION="Multiple Arcade Machine Emulator for X11"
HOMEPAGE="http://x.mame.net/"
SRC_URI="http://x.mame.net/download/xmame-${PV}.tar.bz2"
LICENSE="XMAME"
SLOT="0"
KEYWORDS="alpha amd64 hppa ia64 ppc sparc x86"
IUSE="alsa arts dga esd ggi joystick lirc mmx net opengl sdl svga X xinerama xv"
RDEPEND="dev-libs/expat
alsa? ( media-libs/alsa-lib )
arts? ( kde-base/arts )
dga? (
x11-libs/libXxf86dga
x11-libs/libXxf86vm )
esd? ( >=media-sound/esound-0.2.29 )
ggi? ( media-libs/libggi )
lirc? ( app-misc/lirc )
opengl? (
virtual/opengl
virtual/glu )
sdl? ( >=media-libs/libsdl-1.2.0 )
svga? ( media-libs/svgalib )
xinerama? ( x11-libs/libXinerama )
xv? ( x11-libs/libXv )
X? ( x11-libs/libXext )"
DEPEND="${RDEPEND}
dga? (
x11-proto/xf86dgaproto
x11-proto/xf86vidmodeproto )
xinerama? ( x11-proto/xineramaproto )
xv? ( x11-proto/videoproto )
x86? ( dev-lang/nasm )"
# Icc sucks. bug #41342
# icc? ( dev-lang/icc )
S=${WORKDIR}/xmame-${PV}
toggle_feature() {
if use $1 ; then
sed -i \
-e "/$2.*=/s:#::" Makefile \
|| die "sed Makefile ($1 / $2) failed"
fi
}
toggle_feature2() {
use $1 && toggle_feature $2 $3
}
src_unpack() {
local mycpu
unpack ${A}
cd "${S}"
case ${ARCH} in
x86) mycpu="i386";;
ia64) mycpu="ia64";;
amd64) mycpu="amd64";;
ppc) mycpu="risc";;
sparc) mycpu="risc";;
hppa) mycpu="risc";;
alpha) mycpu="alpha";;
mips) mycpu="mips";;
esac
sed -i \
-e "/^PREFIX/s:=.*:=/usr:" \
-e "/^MY_CPU/s:i386:${mycpu}:" \
-e "/^BINDIR/s:=.*:=${GAMES_BINDIR}:" \
-e "/^MANDIR/s:=.*:=/usr/share/man/man6:" \
-e "/^XMAMEROOT/s:=.*:=${GAMES_DATADIR}/${TARGET}:" \
-e "/^TARGET/s:mame:${TARGET:1}:" \
-e "/^CFLAGS =/d" \
-e 's/,-s//' \
-e "/\bCFLAGS +=/d" \
Makefile \
|| die "sed Makefile failed"
if use ppc ; then
sed -i \
-e '/LD.*--relax/s:^# ::' Makefile \
|| die "sed Makefile (ppc/LD) failed"
fi
if use mmx ; then
cat >> src/unix/effect_asm.asm <<EOF
%ifidn __OUTPUT_FORMAT__,elf
section .note.GNU-stack noalloc noexec nowrite progbits
%endif
EOF
fi
toggle_feature x86 X86_MIPS3_DRC
toggle_feature2 x86 mmx EFFECT_MMX_ASM
toggle_feature joystick JOY_STANDARD
toggle_feature2 joystick X XINPUT_DEVICES
use net && ewarn "Network support is currently (${PV}) broken :("
#toggle_feature net XMAME_NET # Broken
toggle_feature esd SOUND_ESOUND
toggle_feature alsa SOUND_ALSA
toggle_feature arts SOUND_ARTS
toggle_feature dga X11_DGA
toggle_feature xv X11_XV
toggle_feature opengl X11_OPENGL
toggle_feature lirc LIRC
toggle_feature xinerama X11_XINERAMA
case ${ARCH} in
x86|ia64|amd64)
append-flags -Wno-unused -fomit-frame-pointer -fstrict-aliasing -fstrength-reduce
use amd64 || append-flags -ffast-math #54270
[[ $(gcc-major-version) -ge 3 ]] \
&& append-flags -falign-functions=2 -falign-jumps=2 -falign-loops=2 \
|| append-flags -malign-functions=2 -malign-jumps=2 -malign-loops=2
;;
ppc)
append-flags -Wno-unused -funroll-loops -fstrength-reduce -fomit-frame-pointer -ffast-math -fsigned-char
;;
hppa)
append-flags -ffunction-sections
;;
esac
sed -i \
-e "s:[Xx]mame:${TARGET}:g" \
doc/*.6 \
|| die "sed man pages failed"
# no, we don't want to install setuid (bug #81693)
sed -i \
-e 's/^doinstallsuid/notforus/' \
-e 's/doinstallsuid/doinstall/' \
-e '/^QUIET/s:^:#:' src/unix/unix.mak \
|| die "sed src/unix/unix.mak failed"
}
src_compile() {
local disp=0
if use sdl ; then
emake -j1 DISPLAY_METHOD=SDL || die "emake failed (SDL)"
disp=1
fi
if use svga ; then
emake -j1 DISPLAY_METHOD=svgalib || die "emake failed (svgalib)"
disp=1
fi
if use ggi ; then
#emake -j1 DISPLAY_METHOD=ggi || die "emake failed (ggi)"
#disp=1
ewarn "GGI support is currently (${PV}) broken :("
fi
if [[ ${disp} -eq 0 ]] || use opengl || use X || use dga || use xv ; then
emake -j1 DISPLAY_METHOD=x11 || die "emake failed (x11)"
fi
}
src_install() {
local disp=0 f utils="chdman imgtool dat2html romcmp xml2info"
sed -i \
-e "s:^PREFIX.*:PREFIX=${D}/usr:" \
-e "s:^BINDIR.*:BINDIR=${D}/${GAMES_BINDIR}:" \
-e "s:^MANDIR.*:MANDIR=${D}/usr/share/man/man6:" \
-e "s:^XMAMEROOT.*:XMAMEROOT=${D}/${GAMES_DATADIR}/${TARGET}:" \
Makefile \
|| die "sed Makefile failed"
if use sdl ; then
make DISPLAY_METHOD=SDL install || die "install failed (sdl)"
disp=1
fi
if use svga ; then
make DISPLAY_METHOD=svgalib install || die "install failed (svga)"
disp=1
fi
if use ggi ; then
#make DISPLAY_METHOD=ggi install || die "install failed (ggi)"
#disp=1
ewarn "GGI support is currently (${PV}) broken :("
fi
if [[ ${disp} -eq 0 ]] || use opengl || use X || use dga || use xv ; then
make DISPLAY_METHOD=x11 install || die "install failed (x11)"
fi
exeinto "$(games_get_libdir)/${PN}"
for f in $utils
do
if [[ -f "${D}${GAMES_BINDIR}"/$f ]] ; then
doexe $f || die "doexe failed"
rm -f "${D}${GAMES_BINDIR}"/$f 2> /dev/null
fi
done
insinto "${GAMES_DATADIR}/${PN}"
doins -r ctrlr || die "doins failed"
dodoc doc/{changes.*,*.txt,mame/*,${TARGET}rc.dist} README todo \
|| die "dodoc failed"
dohtml -r doc/* || die "dohtml failed"
# default to sdl since the client is a bit more featureful
if use sdl ; then
dosym "${TARGET}.SDL" "${GAMES_BINDIR}/${TARGET}"
elif [[ ${disp} -eq 0 ]] || use opengl || use X || use dga || use xv ; then
dosym "${TARGET}.x11" "${GAMES_BINDIR}/${TARGET}"
elif use svga ; then
dosym ${TARGET}.svgalib "${GAMES_BINDIR}/${TARGET}"
#elif use ggi ; then
#dosym ${TARGET}.ggi "${GAMES_BINDIR}/${TARGET}"
fi
prepgamesdirs
}
pkg_postinst() {
games_pkg_postinst
elog "Your available MAME binaries are: ${TARGET}"
if useq opengl || useq X || useq dga || useq xv ; then
elog " ${TARGET}.x11"
fi
useq sdl && elog " ${TARGET}.SDL"
#useq ggi && elog " ${TARGET}.ggi"
useq svga && elog " ${TARGET}.svgalib"
elog "Helper utilities are located in $(games_get_libdir)/${PN}."
}
|