summaryrefslogtreecommitdiff
blob: 5d2e142e4cb80458be3526d3f7ab81b60848ffc0 (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
# Copyright 1999-2003 Gentoo Technologies, Inc.
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/app-emulation/xmess/xmess-0.70.1.ebuild,v 1.4 2003/07/18 23:16:52 vapier Exp $

inherit games flag-o-matic gcc

TARGET=${PN}

DESCRIPTION="Multiple Arcade Machine Emulator for X11"
SRC_URI="http://x.mame.net/download/xmame-${PV}.tar.bz2"
HOMEPAGE="http://x.mame.net/"

SLOT="0"
LICENSE="xmame"
KEYWORDS="x86 ~ppc ~sparc ~mips ~alpha"
IUSE="sdl dga xv alsa esd opengl X 3dfx svga ggi arts joystick"

DEPEND="sys-libs/zlib
	sdl? ( >=media-libs/libsdl-1.2.0 )
	alsa? ( media-libs/alsa-lib )
	xv? ( >=x11-base/xfree-4.1.0 )
	dga? ( >=x11-base/xfree-4.1.0 )
	esd? ( >=media-sound/esound-0.2.29 )
	svga? ( media-libs/svgalib )
	ggi? ( media-libs/libggi )
	arts? ( kde-base/arts )
	x86? ( dev-lang/nasm )"

S=${WORKDIR}/xmame-${PV}

src_unpack() {
	unpack ${A}

	cd ${S}

	epatch ${FILESDIR}/${PV}-glx-fix.patch

	[ ${ARCH} == "x86" ] && sed -i -e '/X86_ASM_68000 =/s:#::' -e '/X86_MIPS3_DRC =/s:#::' Makefile
	[ ${ARCH} == "ppc" ] && sed -i '/^MY_CPU/s:i386:risc:' Makefile
	[ ${ARCH} == "sparc" ] && sed -i '/^MY_CPU/s:i386:risc:' Makefile
	[ ${ARCH} == "alpha" ] && sed -i '/^MY_CPU/s:i386:alpha:' Makefile
	[ ${ARCH} == "mips" ] && sed -i '/^MY_CPU/s:i386:mips:' Makefile

	[ ${ARCH} == "x86" ] && [ `use joystick` ] && sed -i '/JOY_I386.*=/s:#::' Makefile

	[ `use esd` ] && sed -i '/SOUND_ESOUND/s:#::' Makefile
	[ `use alsa` ] && sed -i '/SOUND_ALSA/s:#::' Makefile
	[ `use arts` ] && sed -i '/SOUND_ARTS/s:#::' Makefile
	[ `use sdl` ] && sed -i '/SOUND_SDL/s:#::' Makefile

	if [ `use dga` ] ; then
		sed -i '/X11_DGA/s:#::' Makefile
		[ `use 3dfx` ] && sed -i '/TDFX_DGA_WORKAROUND/s:#::' Makefile
	fi

	[ `use xv` ] && sed -i '/X11_XV/s:#::' Makefile

	sed -i \
		-e "/^PREFIX/s:=.*:=/usr:" \
		-e "/^BINDIR/s:=.*:=${GAMES_BINDIR}:" \
		-e "/^XMAMEROOT/s:=.*:=${GAMES_DATADIR}/${TARGET}:" \
		-e "/^TARGET/s:mame:${TARGET:1}:" \
		Makefile

	case ${ARCH} in
		x86)	append-flags -Wno-unused -fomit-frame-pointer -fstrict-aliasing -fstrength-reduce -ffast-math
			[ `gcc-major-version` -eq 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
			;;
	esac
	sed -i "s:^CFLAGS =:CFLAGS=${CFLAGS}:" Makefile
}

src_compile() {
	[ ! -z "`use X``use dga``use xv`" ] && { make DISPLAY_METHOD=x11 || die; }
	[ `use sdl` ] && { make DISPLAY_METHOD=SDL || die; }
	[ `use svga` ] && { make DISPLAY_METHOD=svgalib || die; }
	[ `use ggi` ] && { make DISPLAY_METHOD=ggi || die; }
	[ `use opengl` ] && { make DISPLAY_METHOD=xgl || die; }
}

src_install() {
	sed -i \
		-e "s:^PREFIX.*:PREFIX=${D}/usr:" \
		-e "s:^BINDIR.*:BINDIR=${D}/${GAMES_BINDIR}:" \
		-e "s:^XMAMEROOT.*:XMAMEROOT=${D}/${GAMES_DATADIR}/${TARGET}:" \
		Makefile

	[ ! -z "`use X``use dga``use xv`" ]	&& { make DISPLAY_METHOD=x11 install || die; }
	[ `use sdl` ]				&& { make DISPLAY_METHOD=SDL install || die; }
	[ `use svga` ]				&& { make DISPLAY_METHOD=svgalib install || die; }
	[ `use ggi` ]				&& { make DISPLAY_METHOD=ggi install || die; }
	[ `use opengl` ]			&& { make DISPLAY_METHOD=xgl install || die; }

	dodoc doc/{changes.*,*.txt,mame/*,${TARGET}rc.dist} README todo
	dohtml -r doc/*

	if [ `use opengl` ] ; then
		dosym ${TARGET}.xgl ${GAMES_BINDIR}/${TARGET}
	elif [ ! -z "`use X``use dga``use xv`" ] ; then
		dosym ${TARGET}.x11 ${GAMES_BINDIR}/${TARGET}
	elif [ `use sdl` ] ; then
		dosym ${TARGET}.SDL ${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() {
	einfo "Your available MAME binaries are:"
	[ ! -z "`use X``use dga``use xv`" ] && einfo " ${TARGET}.x11"
	[ `use sdl` ] && einfo " ${TARGET}.SDL"
	[ `use svga` ] && einfo " ${TARGET}.svgalib"
	[ `use ggi` ] && einfo " ${TARGET}.ggi"
	[ `use opengl` ] && einfo " ${TARGET}.xgl"
	games_pkg_postinst
}