# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit desktop flag-o-matic toolchain-funcs

DESCRIPTION="OSS reimplementation of Supaplex in C and SDL"
HOMEPAGE="https://github.com/sergiou87/open-supaplex"
SRC_URI="https://github.com/sergiou87/open-supaplex/archive/v${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="GPL-3"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="test"
RESTRICT="!test? ( test )"

RDEPEND="
	media-libs/libsdl2[joystick,sound,video]
	media-libs/sdl2-mixer[vorbis]
"
DEPEND="${RDEPEND}"
BDEPEND="
	test? ( dev-lang/ruby )
"

src_prepare() {
	default
	rm -r resources/audio-{l,m}q || die
}

src_compile() {
	append-cflags -DFILE_FHS_XDG_DIRS -DFILE_DATA_PATH="${EPREFIX}/usr/share/OpenSupaplex"
	emake -C linux CC="$(tc-getCC)"
}

src_test() {
	emake -C tests CC="$(tc-getCC)"
	# Avoid installing savegames, configs, etc, if any were written during the test
	cp -R resources "${T}/test" || die
	cd tests || die
	# gems are not used by the test, but by default ruby fails to start if
	# dev-ruby/rubygems is not installed. dev-lang/ruby depends on that package
	# via PDEPEND which is why it's not available if ruby was pulled as a
	# dependency to open-supaplex on clean machine.
	# https://bugs.gentoo.org/739126
	OPENSUPAPLEX_PATH="${T}/test" ruby --disable=gems ./run-tests.rb ./opensupaplex || die
}

src_install() {
	dobin linux/opensupaplex
	insinto /usr/share/OpenSupaplex
	doins -r resources/*
	doicon "${FILESDIR}/open-supaplex.svg"
	make_desktop_entry opensupaplex OpenSupaplex open-supaplex
}