EAPI=8 PYTHON_COMPAT=( python3_{8..13}) inherit desktop python-any-r1 toolchain-funcs qmake-utils xdg-utils MY_PV="${PV/.}" DESCRIPTION="Multiple Arcade Machine Emulator + Multi Emulator Super System (MESS)" HOMEPAGE="http://mamedev.org/" SRC_URI="https://github.com/mamedev/mame/archive/mame${MY_PV}.tar.gz -> mame-${PV}.tar.gz" LICENSE="GPL-2+ BSD-2 MIT CC0-1.0" SLOT="0" KEYWORDS="amd64" IUSE="alsa debug opengl openmp tools" RDEPEND="dev-db/sqlite:3 dev-libs/expat media-libs/fontconfig media-libs/flac media-libs/libsdl2[joystick,opengl?,sound,video,X] media-libs/libpulse media-libs/portaudio media-libs/sdl2-ttf sys-libs/zlib virtual/jpeg:0 virtual/opengl alsa? ( media-libs/alsa-lib media-libs/portmidi ) debug? ( dev-qt/qtcore:6 dev-qt/qtgui:6 dev-qt/qtwidgets:6 ) x11-libs/libX11 x11-libs/libXinerama dev-libs/libutf8proc media-libs/glm dev-libs/rapidjson dev-libs/pugixml dev-cpp/asio app-arch/zstd dev-db/sqlite" DEPEND="${RDEPEND} virtual/pkgconfig x11-base/xorg-proto" S=${WORKDIR}/mame-mame${MY_PV} pkg_setup() { python-any-r1_pkg_setup } src_compile() { VERBOSE=1 NOWERROR=1 OPTIMIZE=2 \ QT_SELECT=qt6 QT_HOME="$(qt6_get_libdir)/qt6" \ ARCHOPTS_C="-mtune=native -pipe" ARCHOPTS_CXX="$ARCHOPTS_C" \ USE_SYSTEM_LIB_ASIO=1 \ USE_SYSTEM_LIB_EXPAT=1 \ USE_SYSTEM_LIB_ZLIB=1 \ USE_SYSTEM_LIB_ZSTD=1 \ USE_SYSTEM_LIB_JPEG=1 \ USE_SYSTEM_LIB_FLAC=1 \ USE_SYSTEM_LIB_SQLITE3=1 \ USE_SYSTEM_LIB_PORTAUDIO=1 USE_SYSTEM_LIB_PORTMIDI=$(usex alsa 1 0) \ NO_USE_MIDI=$(usex alsa 0 1) \ USE_SYSTEM_LIB_UTF8PROC=1 \ USE_SYSTEM_LIB_GLM=1 \ USE_SYSTEM_LIB_RAPIDJSON=1 \ USE_SYSTEM_LIB_PUGIXML=1 \ TOOLS=$(usex tools 1 0) \ PTR64=$(usex amd64 1 0) \ DEBUG=$(usex debug 1 0) \ OPENMP=$(usex openmp 1 0) \ PYTHON_EXECUTABLE=${PYTHON} \ OVERRIDE_CC=$(tc-getCC) \ OVERRIDE_CXX=$(tc-getCXX) \ OVERRIDE_LD=$(tc-getCXX) \ ARCH= \ emake } src_install() { MAMEBIN=mame dobin $MAMEBIN doman docs/man/mame.6 insinto "/usr/share/${PN}" doins -r keymaps 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;/usr/share/${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;/etc/${PN}/\2;/usr/share/${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 keymaps/km*.map ; do sed -i \ -e "/^keymap_file/a \#keymap_file \t\t/usr/share/${PN}/keymaps/${f##*/}" \ "${T}/mame.ini" || die done insinto "/etc/${PN}" doins "${T}/mame.ini" insinto "/etc/${PN}" doins "${FILESDIR}/vector.ini" #dodoc docs/{config,mame,newvideo}.txt keepdir \ "/usr/share/${PN}"/{ctrlr,cheat,roms,samples,artwork,crosshair} \ "/etc/${PN}"/{ctrlr,cheat} if use tools ; then for f in castool chdman floptool imgtool jedutil ldresample ldverify romcmp ; do newbin ${f} ${PN}-${f} newman docs/man/${f}.1 ${PN}-${f}.1 done #newbin ldplayer${suffix} ${PN}-ldplayer #newman docs/man/ldplayer.1 ${PN}-ldplayer.1 fi } pkg_postinst() { xdg_desktop_database_update elog "It is strongly recommended to change either the system-wide" elog " /etc/${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 } pkg_postrm(){ xdg_desktop_database_update }