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

EAPI=8
ADA_COMPAT=( gcc_12 gcc_13 gcc_14 )
PYTHON_COMPAT=( python3_{10..12} )

inherit ada python-any-r1 multiprocessing

DESCRIPTION="Port of the Prettier formatter to the Ada programming language"
HOMEPAGE="https://github.com/AdaCore/prettier-ada"
SRC_URI="https://github.com/AdaCore/${PN}/archive/refs/tags/v${PV}.tar.gz
	-> ${P}.tar.gz"

LICENSE="Apache-2.0"
SLOT="0/${PV}"
KEYWORDS="~amd64 ~arm64 ~x86"
IUSE="+shared static-libs static-pic test"

RDEPEND="${ADA_DEPS}
	dev-ada/VSS:${SLOT}[${ADA_USEDEP},shared?,static-libs?,static-pic?]
	dev-ada/gnatcoll-core:${SLOT}[${ADA_USEDEP},shared?,static-libs?,static-pic?]"
DEPEND="${RDEPEND}
	dev-ada/gprbuild[${ADA_USEDEP}]"
BDEPEND="test? (
	$(python_gen_any_dep '
		dev-ada/e3-testsuite[${PYTHON_USEDEP}]
	')
)"

REQUIRED_USE="${ADA_REQUIRED_USE}
	|| ( shared static-libs static-pic )
	test? ( static-libs )"
RESTRICT="!test? ( test )"

python_check_deps() {
	use test || return 0
	python_has_version "dev-ada/e3-testsuite[${PYTHON_USEDEP}]"
}

pkg_setup() {
	use test && python-any-r1_pkg_setup
	ada_pkg_setup
}

src_compile() {
	build() {
		gprbuild \
			-v \
			-k \
			-XLIBRARY_TYPE=$1 \
			-XPRETTIER_ADA_LIBRARY_TYPE=$1 \
			-P prettier_ada.gpr \
			-p \
			-j$(makeopts_jobs) \
			-largs ${LDFLAGS} \
			-cargs ${ADAFLAGS} \
			|| die "gprbuild failed"
	}
	use shared && build relocatable
	use static-libs && build static
	use static-pic && build static-pic
}

src_install() {
	build() {
		gprinstall \
			-XPRETTIER_ADA_LIBRARY_TYPE=$1 \
			-XLIBRARY_TYPE=$1 \
			--prefix="${D}"/usr \
			--install-name=prettier_ada \
			--build-name=$1 \
			--build-var=LIBRARY_TYPE \
			-P prettier_ada.gpr -p -f \
			|| die "gprinstall failed"

	}
	use shared && build relocatable
	use static-libs && build static
	use static-pic && build static-pic
	einstalldocs
}

src_test() {
	gprbuild \
		-v \
		-k \
		-XLIBRARY_TYPE=static \
		-XPRETTIER_ADA_LIBRARY_TYPE=static \
		-P testsuite/test_programs/test_programs.gpr \
		-p \
		-j$(makeopts_jobs) \
		|| die
	gprinstall \
		-XLIBRARY_TYPE=static \
		-XPRETTIER_ADA_LIBRARY_TYPE=static \
		--prefix="${TMP}"/usr \
		--install-name=test_programs \
		--mode=usage \
		-P testsuite/test_programs/test_programs.gpr \
		-p \
		-f \
		|| die
	PATH=${PATH}:"${TMP}"/usr/bin \
	${EPYTHON} testsuite/testsuite.py || die
}