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

EAPI=7
MULTILIB_COMPAT=( abi_x86_{32,64} )

inherit multilib-minimal

DESCRIPTION="Fixes non-QWERTY keyboards on Prison Architect (and maybe other SDL games)"
HOMEPAGE="https://github.com/micolous/sdl-fakeqwerty"
ARCHIVE_VERSION="a79f201903c30e91dc3b4f79c789e25548cf9589"
SRC_URI="https://github.com/micolous/${PN}/archive/${ARCHIVE_VERSION}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/${PN}-${ARCHIVE_VERSION}"

LICENSE="sdl? ( LGPL-2 ) sdl2? ( ZLIB ) xlib? ( ZLIB )"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="sdl sdl2 xlib"
REQUIRED_USE="|| ( sdl sdl2 xlib )"

DEPEND="
	xlib? ( x11-libs/libX11[${MULTILIB_USEDEP}] )
	sdl? ( >=media-libs/libsdl-1.2[${MULTILIB_USEDEP}] )
	sdl2? ( media-libs/libsdl2[${MULTILIB_USEDEP}] )"
BDEPEND="virtual/pkgconfig"

DOCS=( README.md background.md games )

fakeqwerty_target() {
	case "${MULTILIB_ABI_FLAG}" in
		abi_x86_32)
			echo 'i686'
			;;
		abi_x86_64)
			echo 'amd64'
			;;
		*)
			die "Unsupported ABI FLAG ${MULTILIB_ABI_FLAG}"
			;;
	esac
}

src_prepare() {
	default

	cp -f "${FILESDIR}/Makefile-${PV}" "${S}/Makefile" || die
	multilib_copy_sources
}

multilib_src_compile() {
	local target="$(fakeqwerty_target)"
	CFLAGS="${CFLAGS} $(get_abi_CFLAGS)"
	if use sdl ; then
		emake CFLAGS="${CFLAGS} $(pkg-config --cflags sdl)" "sdl1-hooks-${target}.so" "sdl1-peep-hooks-${target}.so" || die
	fi
	if use sdl2 ; then
		emake CFLAGS="${CFLAGS} $(pkg-config --cflags sdl2)" "sdl2-hooks-${target}.so" || die
	fi
	if use xlib ; then
		emake CFLAGS="${CFLAGS} $(pkg-config --cflags x11)" "xlib-hooks-${target}.so" || die
	fi
}

multilib_src_install() {
	local target="$(fakeqwerty_target)"
	insinto "/usr/$(get_libdir)/sdl-fakeqwerty"
	if use sdl ; then
		newins "sdl1-hooks-${target}.so" "sdl1-hooks.so" || die
		newins "sdl1-peep-hooks-${target}.so" "sdl1-peep-hooks.so" || die
	fi
	if use sdl2 ; then
		newins "sdl2-hooks-${target}.so" "sdl2-hooks.so" || die
	fi
	if use xlib ; then
		newins "xlib-hooks-${target}.so" "xlib-hooks.so" || die
	fi
}