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

EAPI=8

PYTHON_COMPAT=( python3_{12..14} )
inherit python-any-r1 xdg cmake desktop

DESCRIPTION="Offline maps and navigation using OpenStreetMap data"
HOMEPAGE="https://organicmaps.app"

FAST_OBJ_COMMIT="42629f744269e004907a6fb4f16c6c7f69acc586"
GLAZE_COMMIT="30401f90cee9ef3cde294b62b2b6c2080d0a2810"
GLFW_COMMIT="21fea01161e0d6b70c0c5c1f52dc8e7a7df14a50"
HARFBUZZ_COMMIT="788b469ad5e5f78611f665b6eb17afd0eb040f21"
IMGUI_COMMIT="6982ce43f5b143c5dce5fab0ce07dd4867b705ae"
JUST_GTFS_COMMIT="7516753825500f90ac2de6f18c256d5abec1ff33"
PROTOBUF_COMMIT="9442c12e866b56369f1c53abea1261259c924a19"
TEST_DATA_COMMIT="30ecb0b3fe694a582edfacc2a7425b6f01f9fec6"
WORLD_FEED_TESTS_S="${WORKDIR}/world_feed_integration_tests_data-${TEST_DATA_COMMIT}"

SRC_URI="https://github.com/${PN}/${PN}/archive/refs/tags/${PV}-5-android.tar.gz -> ${P}.tar.gz
	https://github.com/thisistherk/fast_obj/archive/${FAST_OBJ_COMMIT}.tar.gz -> ${P}-fast_obj-${FAST_OBJ_COMMIT}.tar.gz
	https://github.com/organicmaps/glaze/archive/${GLAZE_COMMIT}.tar.gz -> ${P}-glaze-${GLAZE_COMMIT}.tar.gz
	https://github.com/glfw/glfw/archive/${GLFW_COMMIT}.tar.gz -> ${P}-glfw-${GLFW_COMMIT}.tar.gz
	https://github.com/harfbuzz/harfbuzz/archive/${HARFBUZZ_COMMIT}.tar.gz -> ${P}-harfbuzz-${HARFBUZZ_COMMIT}.tar.gz
	https://github.com/ocornut/imgui/archive/${IMGUI_COMMIT}.tar.gz -> ${P}-imgui-${IMGUI_COMMIT}.tar.gz
	https://github.com/organicmaps/just_gtfs/archive/${JUST_GTFS_COMMIT}.tar.gz -> ${P}-just_gtfs-${JUST_GTFS_COMMIT}.tar.gz
	https://github.com/organicmaps/protobuf/archive/${PROTOBUF_COMMIT}.tar.gz -> ${P}-protobuf-${PROTOBUF_COMMIT}.tar.gz
	test? ( https://github.com/${PN}/world_feed_integration_tests_data/archive/${TEST_DATA_COMMIT}.tar.gz -> ${P}-test_data-${TEST_DATA_COMMIT}.tar.gz )
"

S="${WORKDIR}/${P}-5-android"
LICENSE="Apache-2.0 BSD MIT ZLIB Old-MIT ISC icu"

SLOT="0"

KEYWORDS="~amd64"
IUSE="test"
RESTRICT="!test? ( test )"

BDEPEND="
	dev-util/vulkan-headers
	${PYTHON_DEPS}
	test? ( dev-cpp/gtest )
"

# depend on sys-libs/zlib[minizip] when it is not pulled in as subproject anymore
RDEPEND="
	dev-cpp/gflags:=
	dev-db/sqlite:=
	dev-libs/boost:=
	dev-libs/icu:=
	dev-libs/jansson:=
	dev-libs/pugixml
	dev-libs/utfcpp
	dev-qt/qtbase:=[gui,network,opengl,widgets]
	dev-qt/qtpositioning:=
	dev-qt/qtsvg:=
	media-libs/freetype:=
	virtual/zlib:=
"

DEPEND="
	${RDEPEND}
	dev-cpp/fast_float
	media-libs/glm
"

PATCHES=(
	"${FILESDIR}"/fix-system-boost-target.patch
	"${FILESDIR}"/fix-jansson.patch
	"${FILESDIR}"/protobuf.patch
	"${FILESDIR}"/respect-ldflags.patch
	"${FILESDIR}"/drape.patch
	"${FILESDIR}"/gtest.patch
	"${FILESDIR}"/timezone-put-time.patch
)

src_unpack() {
	default

	rm -rf \
		"${S}/3party/fast_obj" \
		"${S}/3party/glaze" \
		"${S}/3party/glfw" \
		"${S}/3party/harfbuzz/harfbuzz" \
		"${S}/3party/imgui/imgui" \
		"${S}/3party/just_gtfs" \
		"${S}/3party/protobuf/protobuf" || die

	mv "${WORKDIR}/fast_obj-${FAST_OBJ_COMMIT}" "${S}/3party/fast_obj" || die
	mv "${WORKDIR}/glaze-${GLAZE_COMMIT}" "${S}/3party/glaze" || die
	mv "${WORKDIR}/glfw-${GLFW_COMMIT}" "${S}/3party/glfw" || die
	mv "${WORKDIR}/harfbuzz-${HARFBUZZ_COMMIT}" "${S}/3party/harfbuzz/harfbuzz" || die
	mv "${WORKDIR}/imgui-${IMGUI_COMMIT}" "${S}/3party/imgui/imgui" || die
	mv "${WORKDIR}/just_gtfs-${JUST_GTFS_COMMIT}" "${S}/3party/just_gtfs" || die
	mv "${WORKDIR}/protobuf-${PROTOBUF_COMMIT}" "${S}/3party/protobuf/protobuf" || die

	if use test; then
		mkdir -p "${S}/data/test_data" || die
		rm -rf "${S}/data/test_data/world_feed_integration_tests_data" || die
		cp -a "${WORLD_FEED_TESTS_S}" "${S}/data/test_data/world_feed_integration_tests_data" || die
	fi
}

src_configure() {
	local mycmakeargs=(
		-DWITH_SYSTEM_PROVIDED_3PARTY=yes
		-DBUILD_SHARED_LIBS=off
		-DUSE_CCACHE=off
		-DTEST_DATA_REPO_URL="$(usex test "${WORLD_FEED_TESTS_S}" "")"
		-DSKIP_TESTS="$(usex !test)"
	)
	cmake_src_configure
}

src_compile() {
	if use test; then
		cmake_src_compile
	else
		cmake_src_compile desktop
	fi
}

src_test() {
	cmake_src_test
}

src_install() {
	dobin "${BUILD_DIR}"/OMaps

	insinto /usr/share/organicmaps
	doins -r data

	insinto /usr/share/metainfo
	doins packaging/app.organicmaps.desktop.metainfo.xml
	domenu qt/res/linux/app.organicmaps.desktop.desktop
	newicon -s 512 qt/res/logo.png organicmaps.png

	rm -rf "${ED}"/usr/share/${PN}/data/world_feed_integration_tests_data || die
}

pkg_postinst() {
	xdg_pkg_postinst

	einfo "For dark  mode type in search ?dark"
	einfo "For light mode type in search ?light"
}