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

EAPI=8

inherit cmake-multilib

DESCRIPTION="Cross-platform library aimed at video game and multimedia programming"
HOMEPAGE="https://liballeg.org/"
SRC_URI="https://github.com/liballeg/allegro5/releases/download/${PV}/${P}.tar.gz"

LICENSE="BSD ZLIB"
SLOT="5"
KEYWORDS="amd64 ~arm64 ~loong ppc ppc64 ~riscv x86"
IUSE="alsa dumb flac gtk jpeg openal opengl opus oss physfs png pulseaudio test truetype vorbis webp X xinerama"

# TODO: For tests, we need some extra deps.
# -- Could NOT find OPENSL (missing: OPENSL_INCLUDE_DIR OPENSL_LIBRARY)
# -- Could NOT find MiniMP3 (missing: MINIMP3_INCLUDE_DIRS)
# TODO: Tweak REQUIRED_USE for tests?
# WARNING: allegro_video wanted but no supported backend found

REQUIRED_USE="X? ( opengl )
	xinerama? ( X )
	|| ( alsa openal oss pulseaudio )"
RESTRICT="!test? ( test )"

RDEPEND="
	alsa? ( >=media-libs/alsa-lib-1.0.27.2[${MULTILIB_USEDEP}] )
	dumb? ( >=media-libs/dumb-0.9.3-r2:=[${MULTILIB_USEDEP}] )
	flac? ( >=media-libs/flac-1.2.1-r5:=[${MULTILIB_USEDEP}] )
	gtk? ( x11-libs/gtk+:3[${MULTILIB_USEDEP}] )
	jpeg? ( media-libs/libjpeg-turbo:=[${MULTILIB_USEDEP}] )
	openal? ( >=media-libs/openal-1.15.1[${MULTILIB_USEDEP}] )
	opengl? (
		>=virtual/glu-9.0-r1[${MULTILIB_USEDEP}]
		>=virtual/opengl-7.0-r1[${MULTILIB_USEDEP}]
	)
	opus? ( media-libs/opus[${MULTILIB_USEDEP}] )
	physfs? ( >=dev-games/physfs-2.0.3-r1[${MULTILIB_USEDEP}] )
	png? ( >=media-libs/libpng-1.5.18:0=[${MULTILIB_USEDEP}] )
	pulseaudio? ( media-libs/libpulse[${MULTILIB_USEDEP}] )
	truetype? ( >=media-libs/freetype-2.5.0.1[${MULTILIB_USEDEP}] )
	vorbis? ( >=media-libs/libvorbis-1.3.3-r1[${MULTILIB_USEDEP}] )
	webp? ( media-libs/libwebp:0=[${MULTILIB_USEDEP}] )
	X? (
		>=x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}]
		>=x11-libs/libXcursor-1.1.14[${MULTILIB_USEDEP}]
		>=x11-libs/libXrandr-1.4.2[${MULTILIB_USEDEP}]
		>=x11-libs/libXxf86vm-1.1.3[${MULTILIB_USEDEP}]
	)
	xinerama? ( >=x11-libs/libXinerama-1.1.3[${MULTILIB_USEDEP}] )
"
DEPEND="${RDEPEND}
	x11-base/xorg-proto
"
BDEPEND="virtual/pkgconfig"

MULTILIB_WRAPPED_HEADERS=( /usr/include/allegro5/allegro_native_dialog.h )

src_configure() {
	# We forego freeimage for now because ebuild is not multilib
	# No known consumers yet anyway
	local mycmakeargs=(
		-DWANT_ALSA=$(usex alsa)
		-DWANT_DEMO=OFF
		-DWANT_EXAMPLES=OFF
		-DWANT_FLAC=$(usex flac)
		-DWANT_IMAGE_FREEIMAGE=OFF
		-DWANT_IMAGE_JPG=$(usex jpeg)
		-DWANT_IMAGE_PNG=$(usex png)
		-DWANT_IMAGE_WEBP=$(usex webp)
		-DWANT_MODAUDIO=$(usex dumb)
		-DWANT_NATIVE_DIALOG=$(usex gtk)
		-DWANT_OGG_VIDEO=$(usex vorbis)
		-DWANT_OPENAL=$(usex openal)
		-DWANT_OPENGL=$(usex opengl)
		-DWANT_OPUS=$(usex opus)
		-DWANT_OSS=$(usex oss)
		-DWANT_PHYSFS=$(usex physfs)
		-DWANT_PRIMITIVES=$(usex opengl)
		-DWANT_PULSEAUDIO=$(usex pulseaudio)
		-DWANT_TESTS=$(usex test)
		-DWANT_TTF=$(usex truetype)
		-DWANT_VORBIS=$(usex vorbis)
		-DWANT_X11=$(usex X)
		-DWANT_X11_XINERAMA=$(usex xinerama)
	)

	cmake-multilib_src_configure
}

src_install() {
	local HTML_DOCS=( docs/html/refman/. )
	cmake-multilib_src_install

	dodoc CHANGES-5.0.txt CHANGES-5.1.txt CHANGES-5.2.txt
	doman docs/man/*.3
}