# Template file for 'mame'
pkgname=mame
version=0202
revision=1
wrksrc="mame-mame${version}"
homepage="http://mamedev.org"
distfiles="https://github.com/mamedev/mame/archive/mame${version}.tar.gz"
short_desc="The Multiple Arcade Machine Emulator"
maintainer="Jürgen Buchmüller <pullmoll@t-online.de>"
license="GPL-2.0-or-later"
checksum=a5cef3e7e606e2a36d25b559a5410c1c3105acd24ddbff03352cacb1f1ca7053

hostmakedepends="automoc4 perl pkg-config python"
makedepends="SDL2_ttf-devel glm libjpeg-turbo-devel libutf8proc-devel
 libuv-devel lua-devel portaudio-devel portmidi-devel rapidjson
 $(vopt_if qt 'qt5-devel')"
depends="liberation-fonts-ttf"
nocross=yes
replaces="sdlmame>=0 sdlmess>=0"

CXXFLAGS="-I${XBPS_CROSS_BASE}/usr/include/lua5.3 -I${XBPS_CROSS_BASE}/usr/include/libutf8proc"
case "$XBPS_TARGET_MACHINE" in
	i686*)	# Can no longer build separate arcade and mess targets for i686
		# If the builder can't handle linking for i686 due to memory
		# constraints, mame will be broken for i686 from now on
		nodebug=yes
		;;
esac
case "$XBPS_TARGET_MACHINE" in
	*-musl)	CXXFLAGS+=" -DBX_CRT_MUSL=1" ;;
esac

build_options="qt"
if [ -z "$CROSS_BUILD" ]; then
	build_options_default="qt"
fi

do_build() {
	local opts="REGENIE=1"
	opts+=" TARGETOS=linux"
	opts+=" NOWERROR=1"
	opts+=" OPTIMIZE=3"
	opts+=" TOOLS=1"
	opts+=" USE_SYSTEM_LIB_EXPAT=1"
	opts+=" USE_SYSTEM_LIB_ZLIB=1"
	opts+=" USE_SYSTEM_LIB_JPEG=1"
	opts+=" USE_SYSTEM_LIB_FLAC=1"
	opts+=" USE_SYSTEM_LIB_LUA=1"
	opts+=" USE_SYSTEM_LIB_SQLITE3=1"
	opts+=" USE_SYSTEM_LIB_PORTMIDI=1"
	opts+=" USE_SYSTEM_LIB_PORTAUDIO=1"
	opts+=" USE_SYSTEM_LIB_UTF8PROC=1"
	opts+=" USE_SYSTEM_LIB_GLM=1"
	opts+=" USE_SYSTEM_LIB_RAPIDJSON=1"
	[ "$build_option_qt" ] && opts+=" USE_QTDEBUG=1"
	case "$XBPS_TARGET_MACHINE" in
		i686*)	# Overcome linker memory exhaustion
			opts+=" SYMBOLS=0"
			;;
		x86_64*|aarch64*)
			opts+=" PTR64=1"
			;;
	esac
	if [ "${CROSS_BUILD}" ]; then
		# Doesn't work yet
		opts+=" CROSS_BUILD=1 TOOLCHAIN=${XBPS_CROSS_TRIPLET}"
		opts+=" OVERRIDE_CC=gcc OVERRIDE_CXX=g++ OVERRIDE_LD=g++"
	fi
	make ${opts} ${makejobs}
}

do_install() {
	local f

	# Install the mame script
	vbin ${FILESDIR}/mame.sh mame

	# If mess is a separate binary, also install the mess script
	if [ "${XBPS_TARGET_MACHINE%-musl}" != "x86_64" ]; then
		vbin ${FILESDIR}/mess.sh mess
	fi

	# Install the main application(s)
	for f in mame mame64 mamearcade mamearcade64; do
		if [ -r ${f} ]; then
			vinstall ${f} 755 usr/share/${pkgname} mame
			break
		fi
	done
	for f in mess mess64; do
		if [ -r ${f} ]; then
			vinstall ${f} 755 usr/share/${pkgname} mess
			break
		fi
	done

	# Install the tools
	for f in chdman jedutil regrep pngcmp romcmp src2html srcclean \
		ldverify ldresample unidasm castool floptool imgtool; do
		vbin ${f}
		if [ -f docs/man/${f}.1 ]; then
			vman docs/man/${f}.1
		fi
	done
	for f in mame mess; do
		if [ -r docs/man/${f}.6 ]; then
			vman docs/man/${f}.6
		fi
	done

	# Install the extra bits
	for f in artwork bgfx docs hash hlsl keymaps plugins samples; do
		vcopy ${f} usr/share/${pkgname}
	done
}
