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

EAPI=8

if [[ ${PV} == 9999 ]]; then
	inherit git-r3
	EGIT_REPO_URI="https://github.com/OpenNI/OpenNI"
fi

inherit eapi9-pipestatus flag-o-matic java-pkg-opt-2 toolchain-funcs

if [[ ${PV} != 9999 ]]; then
	KEYWORDS="amd64 ~arm"
	SRC_URI="https://github.com/OpenNI/OpenNI/archive/Stable-${PV}.tar.gz -> ${P}.tar.gz"
	S="${WORKDIR}/${PN}-Stable-${PV}"
fi

DESCRIPTION="OpenNI SDK"
HOMEPAGE="https://github.com/OpenNI/OpenNI"
LICENSE="Apache-2.0"
SLOT="0"
IUSE="doc java opengl"

COMMON_DEPEND="
	media-libs/libjpeg-turbo:=
	virtual/libusb:1
	virtual/libudev
	dev-libs/tinyxml
	opengl? ( media-libs/freeglut !dev-libs/OpenNI2[opengl] )
"

DEPEND="
	${COMMON_DEPEND}
	java? ( >=virtual/jdk-1.8:* !dev-libs/OpenNI2[java] )
"

RDEPEND="
	${COMMON_DEPEND}
	java? ( >=virtual/jre-1.8:* !dev-libs/OpenNI2[java] )
"

BDEPEND="doc? ( app-text/doxygen )"

PATCHES=(
	"${FILESDIR}/tinyxml.patch"
	"${FILESDIR}/jpeg.patch"
	"${FILESDIR}/soname.patch"
	"${FILESDIR}/${P}-gcc6.patch"
	"${FILESDIR}/betterdefines.patch"
)

src_prepare() {
	default

	rm -rf External/{LibJPEG,TinyXml}
	for i in Platform/Linux/Build/Common/Platform.* Externals/PSCommon/Linux/Build/Platform.* ; do
		echo "" > ${i} || die
	done

	local status
	find . -type f -print0 |
		xargs -0 sed -i "s:\".*/SamplesConfig.xml:\"${EPREFIX}/usr/share/${PN}/SamplesConfig.xml:"
	status=$(pipestatus -v) || die "fails to sed SamplesConfig, (PIPESTATUS: ${status})"
}

src_compile() {
	# bug #855671
	append-flags -fno-strict-aliasing

	emake -C "${S}/Platform/Linux/Build" \
		CC="$(tc-getCC)" \
		CXX="$(tc-getCXX)" \
		GLUT_SUPPORTED="$(usex opengl 1 0)" \
		$(usex java "" ALL_JAVA_PROJS="") \
		$(usex java "" JAVA_SAMPLES="") \
		ALL_MONO_PROJS="" \
		MONO_SAMPLES="" \
		MONO_FORMS_SAMPLES=""

	if use doc ; then
		cd Source/DoxyGen || die
		doxygen || die
	fi
}

src_install() {
	dolib.so Platform/Linux/Bin/*Release/*.so

	insinto /usr/include/openni
	doins -r Include/*

	dobin Platform/Linux/Bin/*Release/{ni*,Ni*,Sample-*}

	if use java ; then
		java-pkg_dojar Platform/Linux/Bin/*Release/*.jar
		echo "java -jar ${JAVA_PKG_JARDEST}/org.openni.Samples.SimpleViewer.jar" \
			 > org.openni.Samples.SimpleViewer || die
		dobin org.openni.Samples.SimpleViewer
	fi

	insinto /usr/share/${PN}
	doins Data/*

	dodoc Documentation/OpenNI_UserGuide.pdf CHANGES NOTICE README

	if use doc ; then
		docinto html
		dodoc -r Source/DoxyGen/html/*
		dodoc Source/DoxyGen/Text/*.txt
	fi

	keepdir /var/lib/ni
}

pkg_postinst() {
	if [[ "${ROOT:-/}" = "/" ]]; then
		for i in "${EROOR}/usr/$(get_libdir)"/libnim*.so ; do
			einfo "Registering module ${i}"
			niReg -r "${i}"
		done
	fi
}