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

EAPI=8

LUA_COMPAT=( lua5-{1,2,3,4} )
WX_GTK_VER="3.2-gtk3"

inherit autotools lua-single readme.gentoo-r1 toolchain-funcs wxwidgets

DESCRIPTION="Command-line driven interactive plotting program"
HOMEPAGE="http://www.gnuplot.info/"

if [[ -z ${PV%%*9999} ]]; then
	inherit git-r3
	EGIT_REPO_URI="https://git.code.sf.net/p/gnuplot/gnuplot-main"
	EGIT_BRANCH="master"
	MY_P="${PN}"
	EGIT_CHECKOUT_DIR="${WORKDIR}/${MY_P}"
else
	MY_P="${P/_/.}"
	SRC_URI="https://downloads.sourceforge.net/gnuplot/${MY_P}.tar.gz"
	KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
fi

S="${WORKDIR}/${MY_P}"

LICENSE="gnuplot"
SLOT="0"
IUSE="amos aqua bitmap cairo doc examples +gd gpic latex libcaca libcerf lua metafont metapost qt5 qt6 readline regis tgif wxwidgets X"

REQUIRED_USE="
	doc? ( gd )
	lua? ( ${LUA_REQUIRED_USE} )"

RDEPEND="
	amos? ( dev-libs/openspecfun )
	cairo? (
		x11-libs/cairo
		x11-libs/pango )
	gd? ( >=media-libs/gd-2.0.35-r3:2=[png] )
	latex? (
		virtual/latex-base
		lua? (
			dev-tex/pgf
			>=dev-texlive/texlive-latexrecommended-2008-r2 ) )
	libcaca? ( media-libs/libcaca )
	lua? ( ${LUA_DEPS} )
	qt5? ( !qt6? (
		dev-qt/qtcore:5=
		dev-qt/qtgui:5=
		dev-qt/qtnetwork:5=
		dev-qt/qtprintsupport:5=
		dev-qt/qtsvg:5=
		dev-qt/qtwidgets:5= ) )
	qt6? (
		dev-qt/qtbase:6=[gui,network,widgets]
		dev-qt/qtsvg:6=
		dev-qt/qt5compat:6= )
	readline? ( sys-libs/readline:0= )
	libcerf? ( sci-libs/libcerf )
	wxwidgets? (
		x11-libs/wxGTK:${WX_GTK_VER}[X]
		x11-libs/cairo
		x11-libs/pango
		x11-libs/gtk+:3 )
	X? (
		x11-libs/libX11
		x11-libs/libXaw )"

DEPEND="${RDEPEND}
	X? ( x11-base/xorg-proto )"

BDEPEND="
	virtual/pkgconfig
	doc? (
		virtual/latex-base
		dev-texlive/texlive-latexextra
		dev-texlive/texlive-langgreek
		dev-texlive/texlive-mathscience
		app-text/ghostscript-gpl )
	qt5? ( !qt6? ( dev-qt/linguist-tools:5 ) )"

IDEPEND="latex? ( virtual/latex-base )"

GP_VERSION="${PV%.*}"
TEXMF="${EPREFIX}/usr/share/texmf-site"

PATCHES=(
	"${FILESDIR}"/${PN}-6.1-no-picins.patch
	"${FILESDIR}"/${PN}-6.0.0-configure.patch
	"${FILESDIR}"/${PN}-6.0.1-watchpoints.patch
)

pkg_setup() {
	use lua && lua-single_pkg_setup
}

src_prepare() {
	default

	if [[ ${PV##*.} = 9999 ]]; then
		local dir
		for dir in config demo m4 term tutorial; do
			emake -C "$dir" -f Makefile.am.in Makefile.am
		done
	fi

	# Add special version identification as required by provision 2
	# of the gnuplot license
	sed -i -e "1s/.*/& (Gentoo revision ${PR})/" PATCHLEVEL || die

	eautoreconf

	# Make sure we don't mix build & host flags.
	sed -i \
		-e 's:@CPPFLAGS@:$(BUILD_CPPFLAGS):' \
		-e 's:@CFLAGS@:$(BUILD_CFLAGS):' \
		-e 's:@LDFLAGS@:$(BUILD_LDFLAGS):' \
		-e 's:@CC@:$(CC_FOR_BUILD):' \
		docs/Makefile.in || die
}

src_configure() {
	if ! use latex; then
		sed -i -e '/SUBDIRS/s/LaTeX//' share/Makefile.in || die
	fi

	use wxwidgets && setup-wxwidgets

	tc-export CC CXX			#453174
	tc-export_build_env BUILD_CC
	export CC_FOR_BUILD=${BUILD_CC}

	use qt5 && use qt6 && ewarn "USE flag \"qt6\" overrides \"qt5\""

	econf \
		--with-texdir="${TEXMF}/tex/latex/${PN}" \
		--with-readline=$(usex readline gnu builtin) \
		$(use_with amos) \
		$(use_with bitmap bitmap-terminals) \
		$(use_with cairo) \
		$(use_with gd) \
		$(use_with gpic) \
		"$(use_with libcaca caca "${EPREFIX}/usr/$(get_libdir)")" \
		$(use_with libcerf) \
		$(use_with lua) \
		$(use_with metafont) \
		$(use_with metapost) \
		$(use_with regis) \
		$(use_with tgif) \
		$(use_with X x) \
		--enable-stats \
		$(usev qt6 --with-qt=qt6 || use_with qt5 qt qt5) \
		$(use_enable wxwidgets) \
		DIST_CONTACT="https://bugs.gentoo.org/" \
		EMACS=no
}

src_compile() {
	# Prevent access violations, see bug 201871
	export VARTEXFONTS="${T}/fonts"

	emake all

	# pdflatex fails in titlepag.tex: "Argument of  has an extra }."
	# Install the pre-built gnuplot.pdf instead.
	#if use doc; then
	#	if use cairo; then
	#		emake -C docs pdf
	#	else
	#		ewarn "Cannot build figures unless cairo is enabled."
	#		ewarn "Building documentation without figures."
	#		emake -C docs pdf_nofig
	#		mv docs/nofigures.pdf docs/gnuplot.pdf || die
	#	fi
	#fi
}

src_install() {
	emake DESTDIR="${D}" install

	dodoc BUGS NEWS PGPKEYS README* RELEASE_NOTES
	newdoc term/PostScript/README README-ps
	newdoc term/js/README README-js
	use lua && newdoc term/lua/README README-lua

	local DOC_CONTENTS='Gnuplot no longer links against pdflib. You can
		use the "pdfcairo" terminal for PDF output.'
	use cairo || DOC_CONTENTS+=' It is available with USE="cairo".'
	use gd && DOC_CONTENTS+="\n\nFor font support in png/jpeg/gif output,
		you may have to set the GDFONTPATH and GNUPLOT_DEFAULT_GDFONT
		environment variables. See the FAQ file in /usr/share/doc/${PF}/
		for more information."
	readme.gentoo_create_doc

	if use examples; then
		# Demo files
		insinto /usr/share/${PN}/${GP_VERSION}
		doins -r demo
		rm "${ED}"/usr/share/${PN}/${GP_VERSION}/demo/binary{1,2,3} || die
		rm "${ED}"/usr/share/${PN}/${GP_VERSION}/demo/plugin/*.{o,so} || die
	fi

	if use doc; then
		# Manual, FAQ
		dodoc docs/gnuplot.pdf #FAQ.pdf
		# Documentation for making PostScript files
		docinto psdoc
		dodoc docs/psdoc/{*.doc,*.tex,*.ps,*.gpi,README}
	fi
}

src_test() {
	emake check GNUTERM="dumb"
}

pkg_postinst() {
	use latex && texmf-update
	readme.gentoo_print_elog
}

pkg_postrm() {
	use latex && texmf-update
}