| # Copyright 1999-2015 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| # $Id$ |
| |
| EAPI=5 |
| PYTHON_COMPAT=( python2_7 ) |
| inherit eutils python-any-r1 toolchain-funcs 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="XMAME" |
| SLOT="0" |
| KEYWORDS="amd64 ~x86" |
| IUSE="X alsa +arcade debug +mess opengl tools" |
| REQUIRED_USE="|| ( arcade mess ) |
| debug? ( X )" |
| |
| # 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] |
| media-libs/portaudio |
| media-libs/sdl2-ttf |
| sys-libs/zlib |
| virtual/jpeg:0 |
| alsa? ( media-libs/alsa-lib |
| media-libs/portmidi ) |
| debug? ( dev-qt/qtcore:4 |
| dev-qt/qtgui:4 ) |
| X? ( x11-libs/libX11 |
| x11-libs/libXinerama ) |
| ${PYTHON_DEPS}" |
| DEPEND="${RDEPEND} |
| ${PYTHON_DEPS} |
| app-arch/unzip |
| virtual/pkgconfig |
| X? ( 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() { |
| # 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 ppc && enable_feature BIGENDIAN |
| use debug && enable_feature DEBUG |
| use opengl || enable_feature NO_OPENGL |
| use tools && enable_feature TOOLS |
| use X || enable_feature NO_X11 |
| |
| 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 |
| # turn off bgfx for now since it's an embedded library (bug #556642) |
| PYTHON_EXECUTABLE=${PYTHON} \ |
| OVERRIDE_CC=$(tc-getCC) \ |
| OVERRIDE_CXX=$(tc-getCXX) \ |
| OVERRIDE_LD=$(tc-getCXX) \ |
| USE_BGFX=0 \ |
| 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 src/osd/sdl/man/mess.6 sdlmess.6 |
| doman src/osd/sdl/man/mess.6 |
| } |
| if use arcade ; then |
| if use mess ; then |
| MAMEBIN="mame${suffix}" |
| mess_install |
| else |
| MAMEBIN="mamearcade${suffix}" |
| fi |
| doman src/osd/sdl/man/mame.6 |
| newman src/osd/sdl/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 src/osd/sdl/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 src/osd/sdl/keymaps/km*.txt ; 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 testkeys ; do |
| newgamesbin ${f} ${PN}-${f} |
| newman src/osd/sdl/man/${f}.1 ${PN}-${f}.1 |
| done |
| newgamesbin ldplayer${suffix} ${PN}-ldplayer |
| newman src/osd/sdl/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 |
| } |