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

EAPI=8

inherit autotools

DESCRIPTION="Recurrent neural network for audio noise reduction"
HOMEPAGE="https://jmvalin.ca/demo/rnnoise/ https://gitlab.xiph.org/xiph/rnnoise"

MY_PV="70f1d256acd4b34a572f999a05c87bf00b67730d"
MODEL_PV="0a8755f8e2d834eff6a54714ecc7d75f9932e845df35f8b59bc52a7cfe6e8b37"
SRC_URI="https://gitlab.xiph.org/xiph/rnnoise/-/archive/${MY_PV}/rnnoise-${MY_PV}.tar.bz2 -> ${P}.tar.bz2
	https://media.xiph.org/rnnoise/models/rnnoise_data-${MODEL_PV}.tar.gz"
S="${WORKDIR}/${PN}-${MY_PV}"

LICENSE="BSD"
SLOT="0/0.4.1"  # TODO: this is the .so version, PV should match tag version instead.
KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
IUSE="doc examples cpu_flags_x86_avx2 cpu_flags_x86_sse4_1"

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

src_unpack() {
	unpack "${P}.tar.bz2"
	cd "${S}" || die
	[[ "$(cat model_version)" = "${MODEL_PV}" ]] || \
		die "Model version mismatch, new version: $(cat model_version)"
	unpack "rnnoise_data-${MODEL_PV}.tar.gz"
}

src_prepare() {
	default
	eautoreconf
}

src_configure() {
	x86_rtcd=enable
	for x in cpu_flags_x86_{avx2,sse4_1}; do
		use ${x} || x86_rtcd=disable
	done

	local myeconfargs=(
		$(use_enable doc)
		$(use_enable examples)
		--${x86_rtcd}-x86-rtcd
	)
	econf "${myeconfargs[@]}"
}

src_install() {
	default
	use examples && dobin examples/.libs/rnnoise_demo

	rm "${ED}/usr/share/doc/${PF}/COPYING" || die
	find "${ED}" -name '*.la' -delete || die
}
