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

EAPI=8

PYTHON_COMPAT=( python3_{10..12} )
inherit cmake flag-o-matic python-any-r1 toolchain-funcs

DESCRIPTION="Generated headers and sources for OpenXR loader."
LICENSE="Apache-2.0"
# See also https://github.com/KhronosGroup/OpenXR-SDK-Source/blob/release-1.0.18/.reuse/dep5
KEYWORDS="~amd64"
HOMEPAGE="https://khronos.org/openxr"
ORG_GH="https://github.com/KhronosGroup"
SLOT="0/$(ver_cut 1-2 ${PV})"
MY_PN="OpenXR-SDK-Source"
SRC_URI="${ORG_GH}/${MY_PN}/archive/release-${PV}.tar.gz -> ${P}.tar.gz"
NV_DRIVER_VERSION_VULKAN="390.132"
IUSE="doc gles2 +system-jsoncpp video_cards_amdgpu test video_cards_intel
video_cards_nvidia video_cards_radeonsi wayland xcb xlib"
REQUIRED_USE+="
	^^ (
		xcb
		xlib
		wayland
	)
	|| (
		video_cards_amdgpu
		video_cards_intel
		video_cards_nvidia
		video_cards_radeonsi
	)
"
DEPEND+="
	${PYTHON_DEPS}
	media-libs/mesa[egl(+),gles2?,libglvnd(+)]
	media-libs/vulkan-loader
	virtual/libc
	system-jsoncpp? (
		dev-libs/jsoncpp
	)
	xcb? (
		x11-libs/libxcb
		x11-libs/xcb-util-keysyms
		x11-libs/xcb-util-wm
	)
	xlib? (
		x11-base/xorg-proto
		x11-libs/libX11
	)
	wayland? (
		dev-libs/wayland
		dev-libs/wayland-protocols
		dev-util/wayland-scanner
		media-libs/mesa[egl(+)]
	)
	|| (
		video_cards_amdgpu? (
			media-libs/mesa[video_cards_radeonsi,vulkan]
			x11-base/xorg-drivers[video_cards_amdgpu]
		)
		video_cards_intel? (
			media-libs/mesa[video_cards_intel,vulkan]
			x11-base/xorg-drivers[video_cards_intel]
		)
		video_cards_nvidia? (
			>=x11-drivers/nvidia-drivers-${NV_DRIVER_VERSION_VULKAN}
		)
		video_cards_radeonsi? (
			media-libs/mesa[video_cards_radeonsi,vulkan]
			x11-base/xorg-drivers[video_cards_radeonsi]
		)
	)
"
RDEPEND="
	${DEPEND}
"
BDEPEND="
	${PYTHON_DEPS}
	$(python_gen_any_dep '>=dev-python/jinja-2[${PYTHON_USEDEP}]')
	>=dev-build/cmake-3.0
	virtual/pkgconfig
	|| (
		llvm-core/clang
		sys-devel/gcc
	)
"
RESTRICT="
	!test ( test )
	mirror
"
S="${WORKDIR}/${MY_PN}-release-${PV}"

src_configure() {
	CMAKE_BUILD_TYPE="Release"
	export CC=$(tc-getCC)
	export CXX=$(tc-getCXX)
	mycmakeargs=(
		-DBUILD_API_LAYERS=OFF
		-DBUILD_CONFORMANCE_TESTS=$(usex test $(usex xlib ON OFF) OFF)
		-DBUILD_TESTS=$(usex test)
		-DBUILD_WITH_SYSTEM_JSONCPP=$(usex system-jsoncpp)
	)
	if use xlib ; then
		mycmakeargs+=( -DPRESENTATION_BACKEND=xlib )
	elif use xcb ; then
		mycmakeargs+=( -DPRESENTATION_BACKEND=xcb )
	elif use wayland ; then
		mycmakeargs+=( -DPRESENTATION_BACKEND=wayland )
	else
		die "Must choose a PRESENTATION_BACKEND"
	fi
	cmake_src_configure
}

src_install() {
	cmake_src_install
	docinto licenses
	dodoc .reuse/dep5
	dodoc LICENSES/*
	dodoc COPYING.adoc
	mv "${ED}/usr/share/doc/${PN}/LICENSE" \
		"${ED}/usr/share/doc/${PN}-${PVR}/licenses" || die
	rm -rf "${ED}/usr/share/doc/${PN}" || die
	if use doc ; then
		docinto readmes
		dodoc CHANGELOG.SDK.md
		mv "${ED}/usr/share/doc/${P}/README.md" \
			"${ED}/usr/share/doc/${P}/readmes" || die
	else
		rm -rf "${ED}/usr/share/doc/${P}/README.md"
	fi
}