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

EAPI=8

inherit autotools flag-o-matic toolchain-funcs systemd

DESCRIPTION="A set of tools to collect and process netflow data"
HOMEPAGE="https://github.com/phaag/nfdump"
SRC_URI="https://github.com/phaag/nfdump/archive/v${PV}.tar.gz -> ${P}.tar.gz"

LICENSE="BSD"
SLOT="0/${PV}"
KEYWORDS="amd64 x86"
IUSE="debug doc jnat ftconv nfpcapd nfprofile nftrack nsel readpcap sflow zstd"

REQUIRED_USE="?? ( jnat nsel )"

RDEPEND="
	app-arch/bzip2
	app-arch/lz4:=
	sys-libs/zlib
	elibc_musl? ( sys-libs/fts-standalone )
	ftconv? ( net-analyzer/flow-tools )
	nfpcapd? ( net-libs/libpcap )
	nfprofile? ( net-analyzer/rrdtool )
	nftrack? ( net-analyzer/rrdtool )
	readpcap? ( net-libs/libpcap )
	zstd? ( app-arch/zstd:= )
"
DEPEND="${RDEPEND}"
BDEPEND="
	app-alternatives/lex
	app-alternatives/yacc
	doc? (
		app-text/doxygen
		media-gfx/graphviz
	)
"

QA_CONFIG_IMPL_DECL_SKIP=(
	# Not available on Linux, with fallback at src/libnffile/util.h, bug #904952
	htonll
)

PATCHES=(
	"${FILESDIR}"/${PN}-1.6.19-libft.patch
)

DOCS=( AUTHORS ChangeLog README.md )

src_prepare() {
	default

	eautoreconf

	if use doc; then
		doxygen -u doc/Doxyfile.in || die
	fi
}

src_configure() {
	tc-export CC

	# bug #853763
	use elibc_musl && append-libs "-lfts"

	# --without-ftconf is not handled well, bug #322201
	local myeconfargs=(
		$(usex ftconv "--enable-ftconv --with-ftpath=${EPREFIX}/usr")
		$(usex nfpcapd --enable-nfpcapd)
		$(usex nfprofile --enable-nfprofile)
		$(usex nftrack --enable-nftrack)
		$(use_enable debug devel)
		$(use_enable jnat)
		$(use_enable nsel)
		$(use_enable readpcap)
		$(use_enable sflow)
		$(use_with zstd "zstdpath" "${EPREFIX}/usr")
	)
	econf "${myeconfargs[@]}"
}

src_install() {
	default

	find "${ED}" -name '*.la' -type f -delete || die

	newinitd "${FILESDIR}"/nfcapd.initd nfcapd
	newconfd "${FILESDIR}"/nfcapd.confd nfcapd
	systemd_newunit "${FILESDIR}/nfdump.service" nfdump@.service

	if use doc; then
		dodoc -r doc/html
	fi
}