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

EAPI=8

PYTHON_COMPAT=( python3_{10..12} )
DOCS_BUILDER="doxygen"
# File is hardcoded to be run from ../ so we use this instead of DOCS_DIR
DOCS_CONFIG_NAME="doc/Doxyfile"

inherit autotools docs python-single-r1 perl-functions

JSMN_COMMIT="85695f3d5903b1cd5b4030efe50db3b4f5f3c928"

DESCRIPTION="C library to handle DWG files"
HOMEPAGE="https://www.gnu.org/software/libredwg/ https://github.com/LibreDWG/libredwg"
SRC_URI="
	https://github.com/LibreDWG/${PN}/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz
	https://github.com/zserge/jsmn/archive/${JSMN_COMMIT}.tar.gz -> ${PN}-${JSMN_COMMIT}.tar.gz
"

LICENSE="GPL-3+ MIT"
SLOT="0"
KEYWORDS="~amd64"

# https://github.com/LibreDWG/libredwg/issues/342
RESTRICT="test"

IUSE="debug python perl static-libs"
REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"

RDEPEND="
	python? ( ${PYTHON_DEPS} )
	perl? ( dev-lang/perl )
	dev-libs/libpcre2
	dev-libs/pslib
"
DEPEND="${RDEPEND}
	python? ( dev-lang/swig )
	perl? ( dev-lang/swig )
"
BDEPEND="|| (
	sys-devel/gcc[sanitize]
	sys-libs/compiler-rt-sanitizers[asan(-)]
	)
	dev-vcs/git
"

src_unpack() {
	# Build system really wants jsmn to be here
	default
	rm -r "${S}/jsmn" || die
	mv "${WORKDIR}/jsmn-${JSMN_COMMIT}" "${S}/jsmn" || die
}

src_prepare() {
	default
	# Fix variable references itself error, fails in src_install otherwise.
	sed -i -e 's/TEXINPUTS="$(TEXINPUTS)$(PATH_SEPARATOR)$(TEXINFO_TEX_DIR)"/TEXINPUTS="$(PATH_SEPARATOR)$(TEXINFO_TEX_DIR)"/g' doc/Makefile.am || die
	# https://github.com/LibreDWG/libredwg/issues/404
	# Workaround: release tarball does not include dwg2ps.1.
	# Upstream autotools stuff has to be run in git repo
	git init -q || die
	git config --global user.email "larry@gentoo.org" || die
	git config --global user.name "Larry the Cow" || die
	git add . || die
	git commit -qm 'init' || die
	git tag ${PV} || die
	eautoreconf
}

src_configure() {
	perl_set_version
	local myconf=(
		--enable-write
		--enable-dxf
		--enable-json
		--disable-gcov
		--disable-werror
		$(use_enable !debug release)
		$(use_enable debug trace)
		$(use_enable debug)
		$(use_enable static-libs static)
		$(use_enable python python "${EPYTHON}")
		$(usex perl "--with-perl-install=vendor" "--with-perl-install=no")
	)

	if use python || use perl; then
		myconf+=( --enable-bindings )
	else
		myconf+=( --disable-bindings )
	fi

	econf ${myconf[@]}
}

src_compile() {
	perl_set_version
	emake
	docs_compile
}

src_install() {
	perl_set_version
	default
	use python && python_optimize
	# remove .la files if static-libs disabled
	if ! use static-libs; then
		rm "${ED}/usr/$(get_libdir)/libredwg.la" || die
		if use python; then
			rm "${D}/$(python_get_sitedir)/_LibreDWG.la" || die
		fi
	fi
}