# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sci-libs/plplot/plplot-5.5.2.ebuild,v 1.8 2007/03/13 00:45:18 kugelfang Exp $

inherit eutils

# Known problems with this ebuild:
# - No support for libqhull.
# - No documentation building - although prebuilt docs are in the tarball.

DESCRIPTION="A Scientific Plotting Library"
HOMEPAGE="http://plplot.sourceforge.net/"
SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz"

LICENSE="LGPL-2"
SLOT="0"
KEYWORDS="~amd64 ~x86 ~ppc"
IUSE="X debug doc fortran ifc itcl java jpeg octave png python tk tetex truetype"

RDEPEND="virtual/libc
		 dev-lang/perl
	  	 python? ( dev-python/numeric )
	  	 java? ( virtual/jre )
	  	 tetex? ( app-text/jadetex )
	  	 octave? ( sci-mathematics/octave )
	  	 jpeg? ( media-libs/gd )
	  	 png? ( media-libs/gd )
	  	 truetype? ( media-libs/freetype )
		 X? ( || (	( x11-libs/libX11
					  x11-libs/libXau
					  x11-libs/libXdmcp
						)
					virtual/x11 )
				tk? ( dev-lang/tk
						itcl? ( dev-tcltk/itcl )
						)
			   )"

DEPEND="${RDEPEND}
	dev-util/pkgconfig
	ifc? ( dev-lang/ifc )
	virtual/man
	app-text/opensp
	java? ( virtual/jdk )
	X? ( || ( (	x11-proto/xproto )
			virtual/x11 )
	)
	doc? ( sys-apps/texinfo )"
	# Optional support for libqhull (currently doesn't work).
	# qhull? ( media-libs/qhull )

pkg_setup() {
	# If the fortran interface is wanted, the gnu f77 compiler
	# is needed unless ifc is used (which is taken care of in
	# the dependencies).
	use fortran && ! use ifc || if [[ -z $(type -P g77) ]]; then
		eerror "GNU fortran 77 compiler not found on the system."
		eerror "Please add fortran to your USE flags and reemerge gcc."
		die
	fi
}

src_unpack() {
	unpack ${A}
	cd ${S}
	# Fix compilation problems on GCC 3.4 and the octave bindings, thanks to the
	# patch from Debian's BTS bug 274359.
	epatch ${FILESDIR}/${PN}-5.5.1-gcc-3.4-fix.patch
}

src_compile() {
	# Doesn't compile with j > 1.
	MAKEOPTS="${MAKEOPTS} -e -j1"

	local EXTRA_CONF

	# Export DATA_DIR and DOC_DIR so that configure uses correct install path
	EXTRA_CONF="${EXTRA_CONF} DATA_DIR=\"/usr/share/${PN}\""
	EXTRA_CONF="${EXTRA_CONF} DOC_DIR=\"/usr/share/doc/${PF}\""

	# Use pkg-config
	EXTRA_CONF="${EXTRA_CONF} --with-pkg-config"

	# Compilation options (debug, documentation).
	EXTRA_CONF="${EXTRA_CONF} $(use_with debug)"
	# Documentation building doesn't work.
	# The xml catalogs are not found.
#	 if use doc; then
#	 	EXTRA_CONF="${EXTRA_CONF} --enable-builddoc \
#	 	--with-xml-declaration=/usr/share/sgml/xml.dcl \
#		--with-sgml-catalogs=/etc/sgml/catalog:/usr/share/sgml/docbook/sgml-dtd-4.2/catalog:/usr/share/sgml/docbook/sgml-dtd-4.2/docbook.dtd:/usr/share/sgml/docbook/sgml-dtd-4.2/docbookx.dtd"
#		EXTRA_CONF="${EXTRA_CONF} --with-db2x_texixml=/usr/bin/db2x_texixml.pl --with-db2x_xsltproc=/usr/bin/db2x_xsltproc.pl"
#	 else
#	 	EXTRA_CONF="${EXTRA_CONF} --disable-builddoc"
#	 fi
	EXTRA_CONF="${EXTRA_CONF} --disable-builddoc"

	# Language bindings.
	EXTRA_CONF="${EXTRA_CONF} $(use_enable python)"
	EXTRA_CONF="${EXTRA_CONF} $(use_enable java)"
	EXTRA_CONF="${EXTRA_CONF} $(use_enable octave)"
	if use ifc; then
		EXTRA_CONF="${EXTRA_CONF} --enable-f77 F77=/opt/intel/compiler70/ia32/bin/ifc"
	elif use fortran; then
		EXTRA_CONF="${EXTRA_CONF} --enable-f77"
	else
		EXTRA_CONF="${EXTRA_CONF} --disable-f77"
	fi

	# Device drivers.
	EXTRA_CONF="${EXTRA_CONF} $(use_enable jpeg)"
	EXTRA_CONF="${EXTRA_CONF} $(use_enable png)"
	EXTRA_CONF="${EXTRA_CONF} $(use_enable tetex pstex)"
	# Dynamic driver loading causes segfaults.
	EXTRA_CONF="${EXTRA_CONF} --disable-dyndrivers"
	# The linuxvga driver doesn't compile.
	EXTRA_CONF="${EXTRA_CONF} --disable-linuxvga"

	# Support for optional libraries.
	EXTRA_CONF="${EXTRA_CONF} $(use_with truetype freetype)"
	# Support for libqhull doesn't work. The configure script
	# doesn't find the lib.
	# EXTRA_CONF="${EXTRA_CONF} $(use_with qhull)"
	EXTRA_CONF="${EXTRA_CONF} --without-qhull"

	# Additional X-dependent language bindings and device drivers.
	if use X; then
		EXTRA_CONF="${EXTRA_CONF} --with-x"
		if use tk; then
			EXTRA_CONF="${EXTRA_CONF} --enable-tcl"
			EXTRA_CONF="${EXTRA_CONF} $(use_enable itcl)"
		else
			EXTRA_CONF="${EXTRA_CONF} --disable-tcl"
			EXTRA_CONF="${EXTRA_CONF} --disable-tk"
			EXTRA_CONF="${EXTRA_CONF} --disable-itcl"
		fi
		EXTRA_CONF="${EXTRA_CONF} --disable-gnome"
	else
		EXTRA_CONF="${EXTRA_CONF} --without-x"
		EXTRA_CONF="${EXTRA_CONF} --disable-tcl"
		EXTRA_CONF="${EXTRA_CONF} --disable-itcl"
		EXTRA_CONF="${EXTRA_CONF} --disable-gnome"
	fi

	econf ${EXTRA_CONF} || die
	emake || die "make step failed."
}

src_install() {

	# A little sed magic to make some of the docs install to the right place
	sed -i -e "s|\$(datadir)/doc/plplot|/usr/share/doc/${PF}|" Makefile || \
		die "sed replacement of docs dir failed."

	make install DESTDIR=${D} || die "make install step failed."

	# To match the Gentoo FSH.
	if use java; then
		mv ${D}/usr/lib/java/plplot ${D}/usr/share/${PN}/lib
		rm -r ${D}/usr/lib/java
	fi
	if use octave; then
		# fix the path to plplot's .m files
		mv ${D}/usr/share/plplot_octave ${D}/usr/share/plplot/octave || die \
			"Error moving octave files."
		sed -i -e 's|/usr/share/plplot_octave|/usr/share/plplot/octave|' \
			${D}/usr/share/octave/site/m/PLplot/plplot_octave_path.m \
			|| die "sed replacement of octave path failed."
	fi

	# Fix permissions and gzip the basic documentation.
	chmod 644 ${D}/usr/share/doc/${PF}/*
	gzip ${D}/usr/share/doc/${PF}/*
	# Install prebuilt documentation.
	if use doc; then
		cd doc/docbook/src/
		dohtml *.html
		doinfo plplotdoc.info
		insinto /usr/share/doc/${PF}
		doins ${P}.pdf
	fi
}