blob: 947535fb556db39f60ae4ebec29e2f15dc6beca8 (
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
233
234
|
# Copyright 2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
EAPI=6
inherit flag-o-matic toolchain-funcs
RESTRICT="mirror"
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 bundled-libs cpu_flags_x86_mmx dga ggi joystick lirc net opengl sdl svga X xinerama xv"
RDEPEND="sys-libs/zlib
alsa? ( media-libs/alsa-lib )
dga? (
x11-libs/libXxf86dga
x11-libs/libXxf86vm )
!bundled-libs? ( dev-libs/expat )
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_prepare() {
local mycpu
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 "/^MANDIR/s:man/man:share/man/man:" \
-e "/^XMAMEROOT/s:share:share/games:" \
-e "/^TARGET/s:mame:${TARGET:1}:" \
-e "/^INSTALL_GROUP/s:bin:root:" \
-e "/^CFLAGS =/d" \
-e 's/-s,//' \
-e 's/-Wl,-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 cpu_flags_x86_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 cpu_flags_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 # No esound in portage anymore
toggle_feature alsa SOUND_ALSA
#toggle_feature arts SOUND_ARTS # Deprecated
toggle_feature dga X11_DGA
toggle_feature xv X11_XV
# if we don't have expat on the system, use the internal one
toggle_feature bundled-libs BUILD_EXPAT
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"
eapply -p0 "${FILESDIR}"/${P}-overflow.patch
eapply_user
}
src_compile() {
local disp=0
if use sdl ; then
emake -j1 DISPLAY_METHOD=SDL \
CC=$(tc-getCC) \
LD=$(tc-getCC)
disp=1
fi
if use svga ; then
emake -j1 DISPLAY_METHOD=svgalib \
CC=$(tc-getCC) \
LD=$(tc-getCC)
disp=1
fi
if use ggi ; then
#emake -j1 DISPLAY_METHOD=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 \
CC=$(tc-getCC) \
LD=$(tc-getCC)
fi
}
src_install() {
local disp=0 f utils="chdman imgtool dat2html romcmp xml2info"
if use sdl ; then
make DISPLAY_METHOD=SDL PREFIX="${ED}/usr" install \
|| die "install failed (sdl)"
disp=1
fi
if use svga ; then
make DISPLAY_METHOD=svgalib PREFIX="${ED}/usr" 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 PREFIX="${ED}/usr" install \
|| die "install failed (x11)"
fi
exeinto "/usr/$(get_libdir)/${PN}"
for f in $utils
do
if [[ -f "${ED}"/usr/bin/$f ]] ; then
doexe $f
rm -f "${ED}"/usr/bin/$f 2>/dev/null
fi
done
insinto "/usr/share/games/${PN}"
doins -r ctrlr
dodoc doc/{changes.*,*.txt,mame/*,${TARGET}rc.dist} README todo
docinto html
dodoc -r doc/img doc/mess doc/*.html doc/*.css
# default to sdl since the client is a bit more featureful
if use sdl ; then
dosym "${TARGET}.SDL" "/usr/bin/${TARGET}"
elif [[ ${disp} -eq 0 ]] || use opengl || use X || use dga || use xv ; then
dosym "${TARGET}.x11" "/usr/bin/${TARGET}"
elif use svga ; then
dosym ${TARGET}.svgalib "/usr/bin/${TARGET}"
#elif use ggi ; then
#dosym ${TARGET}.ggi "/usr/bin/${TARGET}"
fi
}
pkg_postinst() {
elog "Your available MAME binaries are: ${TARGET}"
if use opengl || use X || use dga || use xv ; then
elog " ${TARGET}.x11"
fi
use sdl && elog " ${TARGET}.SDL"
#use ggi && elog " ${TARGET}.ggi"
use svga && elog " ${TARGET}.svgalib"
elog "Helper utilities are located in /usr/$(get_libdir)/${PN}."
}
|