# Copyright 2025-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit cmake xdg
MUPDF_PV="1.27.2"
SYNCTEX_COMMIT="917617707955cde0c2fae127130d9d3129303cbc"
DESCRIPTION="High-performance PDF reader that prioritizes screen space and control"
HOMEPAGE="https://github.com/dheerajshenoy/lektra"
SRC_URI="
https://github.com/dheerajshenoy/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz
https://mupdf.com/downloads/archive/mupdf-${MUPDF_PV}-source.tar.gz
synctex? (
https://github.com/jlaurens/synctex/archive/${SYNCTEX_COMMIT}.tar.gz
-> ${PN}-synctex-${SYNCTEX_COMMIT}.tar.gz
)
"
# lektra is AGPL-3; the bundled synctex parser is MIT.
LICENSE="AGPL-3 synctex? ( MIT )"
SLOT="0"
KEYWORDS="~amd64"
IUSE="synctex"
# mupdf and, with synctex, the synctex parser are git submodules absent
# from the release tarball; both are vendored via SRC_URI. mupdf is built
# by the project's ExternalProject step through its own Makefile.
DEPEND="
dev-qt/qtbase:6[concurrent,gui,network,opengl,widgets]
dev-qt/qtsvg:6
virtual/zlib
"
RDEPEND="${DEPEND}"
BDEPEND="
dev-build/cmake
dev-qt/qttools:6[linguist]
"
src_prepare() {
# The release tarball ships empty thirdparty/mupdf and thirdparty/synctex
# submodule directories; populate them from the vendored sources.
rmdir "${S}/thirdparty/mupdf" || die
mv "${WORKDIR}/mupdf-${MUPDF_PV}-source" "${S}/thirdparty/mupdf" || die
if use synctex; then
rmdir "${S}/thirdparty/synctex" || die
mv "${WORKDIR}/synctex-${SYNCTEX_COMMIT}" "${S}/thirdparty/synctex" || die
fi
# CMake 4 dropped compatibility with cmake_minimum_required() < 3.5.
# mupdf's bundled thirdparty CMake projects (zlib, freetype, freeglut,
# curl, ...) declare older minimums. They build through mupdf's Makefile,
# not CMake, but cmake.eclass still scans the tree and, on finding them,
# applies a policy workaround that trips the overlay elog gate as a QA
# notice. Raise every bundled minimum so the scan finds none.
find "${S}/thirdparty/mupdf" -name CMakeLists.txt -exec sed -i -E \
-e 's/^(\s*cmake_minimum_required\s*\(\s*VERSION\s+)[0-9.]+/\13.15/I' {} + || die
cmake_src_prepare
}
src_configure() {
local mycmakeargs=(
-DWITH_SYNCTEX=$(usex synctex ON OFF)
-DWITH_LUA=OFF
)
cmake_src_configure
}
src_install() {
cmake_src_install
# Upstream installs docs to /usr/share/doc/lektra,
# but Gentoo requires /usr/share/doc/${PF}.
if [[ -d "${ED}/usr/share/doc/${PN}" && "${PN}" != "${PF}" ]]; then
mv "${ED}/usr/share/doc/${PN}"/* "${ED}/usr/share/doc/${PF}/" || die
rmdir "${ED}/usr/share/doc/${PN}" || die
fi
}