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

EAPI=8

PYTHON_COMPAT=( python3_{10..12} )
inherit multibuild python-r1 qmake-utils out-of-source-utils

DESCRIPTION="Python bindings for QScintilla"
HOMEPAGE="https://www.riverbankcomputing.com/software/qscintilla/ https://pypi.org/project/QScintilla/"

MY_PN=QScintilla
MY_P=${MY_PN}_src-${PV/_pre/.dev}
SRC_URI="https://www.riverbankcomputing.com/static/Downloads/${MY_PN}/${PV}/${MY_P}.tar.gz"
S=${WORKDIR}/${MY_P}/Python

LICENSE="GPL-3"
SLOT="0"
KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
IUSE="debug +qt5 qt6"

REQUIRED_USE="|| ( qt5 qt6 ) ${PYTHON_REQUIRED_USE}"

# no tests
RESTRICT="test"

DEPEND="${PYTHON_DEPS}
	qt5? (
		>=dev-python/PyQt5-5.15.5[gui,printsupport,widgets,${PYTHON_USEDEP}]
		dev-qt/qtcore:5
		dev-qt/qtgui:5
		dev-qt/qtprintsupport:5
		dev-qt/qtwidgets:5
	)
	qt6? (
		dev-python/PyQt6[gui,printsupport,widgets,${PYTHON_USEDEP}]
		dev-qt/qtbase:6[gui,widgets]
	)
	~x11-libs/qscintilla-${PV}:=[qt5(+)?,qt6(-)?]
"
RDEPEND="${DEPEND}
	qt5? ( >=dev-python/PyQt5-sip-12.9:=[${PYTHON_USEDEP}] )
	qt6? ( >=dev-python/PyQt6-sip-13.5:=[${PYTHON_USEDEP}] )
"
BDEPEND="
	>=dev-python/PyQt-builder-1.10[${PYTHON_USEDEP}]
	>=dev-python/sip-6.2[${PYTHON_USEDEP}]
	qt5? ( dev-qt/qtcore:5 )
	qt6? ( dev-qt/qtbase:6 )
"

pkg_setup() {
	MULTIBUILD_VARIANTS=( $(usev qt5) $(usev qt6) )
}

src_configure() {
	my_src_configure() {
		case ${MULTIBUILD_VARIANT} in
			qt5)
				configuration() {
					local myconf=(
						sip-build
						--verbose
						--build-dir="${BUILD_DIR}"
						--scripts-dir="$(python_get_scriptdir)"
						--qmake="$(qt5_get_bindir)"/qmake
						--no-make
						$(usev debug '--debug --qml-debug --tracing')
					)
					echo "${myconf[@]}"
					"${myconf[@]}" || die

					run_in_build_dir qmake5 -recursive ${MY_PN}.pro
				}
				mv pyproject{-${MULTIBUILD_VARIANT},}.toml || die
				python_foreach_impl configuration
				;;
			qt6)
				configuration() {
					local myconf=(
						sip-build
						--verbose
						--build-dir="${BUILD_DIR}"
						--scripts-dir="$(python_get_scriptdir)"
						--qmake="$(qt6_get_bindir)"/qmake
						--no-make
						$(usev debug '--debug --qml-debug --tracing')
					)
					echo "${myconf[@]}"
					"${myconf[@]}" || die

					run_in_build_dir qmake6 -recursive ${MY_PN}.pro
				}
				mv pyproject{-${MULTIBUILD_VARIANT},}.toml || die
				python_foreach_impl configuration
				;;
		esac
	}
	multibuild_foreach_variant my_src_configure
}

src_compile() {
	multibuild_foreach_variant python_foreach_impl run_in_build_dir default
}

src_install() {
	installation() {
		emake INSTALL_ROOT="${D}" install
		python_optimize
	}
	multibuild_foreach_variant python_foreach_impl run_in_build_dir installation
}