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

EAPI=8

inherit qt6-build

DESCRIPTION="Physical position determination library for the Qt6 framework"

if [[ ${QT6_BUILD_TYPE} == release ]]; then
	KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~x86"
fi

IUSE="geoclue nmea +qml"

DEPEND="
	~dev-qt/qtbase-${PV}:6
	geoclue? ( ~dev-qt/qtbase-${PV}:6[dbus] )
	nmea? (
		~dev-qt/qtbase-${PV}:6[network]
		~dev-qt/qtserialport-${PV}:6
	)
	qml? ( ~dev-qt/qtdeclarative-${PV}:6 )
"
RDEPEND="
	${DEPEND}
	geoclue? ( app-misc/geoclue:2.0 )
"

CMAKE_SKIP_TESTS=(
	# threads test (rarely) fails randomly
	tst_qgeoareamonitor
)

src_prepare() {
	qt6-build_src_prepare

	# unfortunately cmake_use_find_package would break things with qtbase
	use geoclue ||
		sed -e 's/TARGET Qt::DBus/FALSE/' \
			-i src/plugins/position/CMakeLists.txt || die
	use nmea ||
		sed -e 's/TARGET Qt::Network/FALSE/' \
			-i src/plugins/position/CMakeLists.txt || die
}

src_configure() {
	local mycmakeargs=(
		$(cmake_use_find_package qml Qt6Qml)
	)

	qt6-build_src_configure
}

src_install() {
	qt6-build_src_install

	if use test; then
		local delete=( # sigh
			"${D}${QT6_LIBDIR}"/cmake/Qt6Positioning/*DummyPlugin*.cmake
			"${D}${QT6_LIBDIR}"/cmake/Qt6Positioning/*TestPlugin*.cmake
			"${D}${QT6_PLUGINDIR}"/position/libqtposition_satellitesourcetest.so
			"${D}${QT6_PLUGINDIR}"/position/libqtposition_testplugin{,2}.so
		)
		# using -f given not tracking which tests may be skipped or not
		rm -f -- "${delete[@]}" || die
	fi
}