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

EAPI=8

inherit tmpfiles toolchain-funcs

DESCRIPTION="Simple Mode S decoder for RTLSDR devices"
HOMEPAGE="https://github.com/flightaware/dump1090"

if [[ ${PV} == *9999 ]] ; then
	inherit git-r3
	EGIT_REPO_URI="https://github.com/flightaware/${PN}.git"
else
	KEYWORDS="~amd64 ~x86"
	SRC_URI="https://github.com/flightaware/dump1090/archive/v${PV}.tar.gz -> ${P}.tar.gz"
fi

LICENSE="BSD GPL-2+"
SLOT="0"
IUSE="bladerf hackrf minimal +rtlsdr"

DEPEND="
	sys-libs/ncurses:=[tinfo]
	bladerf? (
		net-wireless/bladerf:=
		virtual/libusb:1
	)
	hackrf? (
		net-libs/libhackrf:=
		virtual/libusb:1
	)
	rtlsdr? (
		net-wireless/rtl-sdr:=
		virtual/libusb:1
	)
"
RDEPEND="${DEPEND}"
BDEPEND="virtual/pkgconfig"

PATCHES=(
	"${FILESDIR}"/${PN}-6.1-libdir.patch
	"${FILESDIR}"/${PN}-9.0-gcc14.patch
)

src_prepare() {
	default

	sed \
		-e '/CFLAGS/s# -O3 -g -Wall -Wmissing-declarations -Werror -W # #' \
		-e "/LIBS_CURSES/s#-lncurses#$($(tc-getPKG_CONFIG) --libs ncurses)#" \
		-i Makefile || die
}

src_compile() {
	myemakeargs=(
		BLADERF="$(usex bladerf)"
		CC="$(tc-getCC)"
		CPUFEATURES="yes"
		HACKRF="$(usex hackrf)"
		LIMESDR="no"
		RTLSDR="$(usex rtlsdr)"
	)

	emake "${myemakeargs[@]}"
}

src_install() {
	dobin dump1090 view1090

	# DSP config files for bladeRF
	if use bladerf; then
		insinto usr/share/dump1090/bladerf
		doins bladerf/*
	fi

	newtmpfiles "${FILESDIR}"/tmpfilesd-dump1090-5.0.conf dump1090.conf
	newconfd "${FILESDIR}"/dump1090-5.0.confd dump1090
	newinitd "${FILESDIR}"/dump1090-5.0.initd dump1090

	einstalldocs

	if use !minimal; then
		# Install tools
		insinto /usr/share/dump1090
		doins -r tools

		# Install lighthttps example files
		insinto /usr/share/dump1090/lighttpd
		doins debian/lighttpd/{88-dump1090-fa-statcache.conf,89-skyaware.conf}

		# Some tooling expects the -fa variant directory to contain the files
		dosym ../../usr/share/dump1090 /usr/share/dump1090-fa

		# Install html docs
		docinto html
		doins -r public_html/*

		# See README.md for how to use custom wisdom files
		exeinto /usr/share/dump1090/wisdom
		doexe debian/generate-wisdom
		insinto /usr/share/dump1090/wisdom
		doins wisdom.*
		doins wisdom/wisdom.*

		# For /etc/dump1090-fa/wisdom.local
		keepdir /etc/dump1090-fa/

		# Tooling to generate custom wisdom:
		exeinto /usr/libexec/dump1090
		doexe starch-benchmark
	fi
}

pkg_postinst() {
	tmpfiles_process dump1090.conf
}