# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/app-editors/xemacs/xemacs-21.5.28.ebuild,v 1.2 2008/05/21 15:50:20 dev-zero Exp $

inherit autotools eutils

DESCRIPTION="highly customizable open source text editor and application development system"
HOMEPAGE="http://www.xemacs.org/"
SRC_URI="http://ftp.xemacs.org/pub/xemacs/beta/${P}.tar.gz"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~x86"
IUSE="athena berkdb canna debug dnd esd freewnn gdbm gif gnome gpm gtk hesiod ipv6 jpeg kerberos ldap motif mule nas neXt ncurses png pop postgres purify quantify socks5 tooltalk tiff X Xaw3d xface xft xim xpm zlib"

DEPEND="virtual/libc
	!virtual/xemacs
	>=dev-libs/openssl-0.9.6
	>=media-libs/audiofile-0.2.3
	>=sys-libs/ncurses-5.2
	>=app-admin/eselect-emacs-0.7-r1
	berkdb? ( =sys-libs/db-1* >=sys-libs/gdbm-1.8.0 )
	canna? ( app-i18n/canna )
	dnd? ( x11-libs/dnd )
	esd? ( media-sound/esound )
	freewnn? ( app-i18n/freewnn )
	gdbm? ( sys-libs/gdbm )
	gif? ( media-libs/giflib )
	gnome? ( gnome-base/libgnomeui )
	gpm? ( sys-libs/gpm )
	gtk? ( =x11-libs/gtk+-1.2* )
	hesiod? ( net-dns/hesiod )
	jpeg? ( media-libs/jpeg )
	kerberos? ( virtual/krb5 )
	ldap? ( net-nds/openldap )
	motif? ( x11-libs/openmotif )
	nas? ( media-libs/nas )
	ncurses? ( sys-libs/ncurses )
	png? ( media-libs/libpng )
	postgres? ( >=virtual/postgresql-server-7.2 )
	socks5? ( >=net-proxy/dante-1.1.13 )
	tiff? ( media-libs/tiff )
	xface? ( media-libs/compface )
	xft? ( virtual/xft )
	xpm? ( x11-libs/libXpm )
	zlib? ( >=sys-libs/zlib-1.1.4 )"

PDEPEND="app-xemacs/xemacs-base"

PROVIDE="virtual/xemacs"

src_compile() {
	local myconf=""

	if use X; then

		myconf="${myconf} --with-widgets=athena"
		myconf="${myconf} --with-dialogs=athena"
		myconf="${myconf} --with-menubars=lucid"
		myconf="${myconf} --with-scrollbars=lucid"
		if use motif ; then
			myconf="--with-widgets=motif"
			myconf="${myconf} --with-dialogs=motif"
			myconf="${myconf} --with-scrollbars=motif"
			myconf="${myconf} --with-menubars=lucid"
		fi
		if use athena ; then
			myconf="--with-scrollbars=athena"
		fi

		if use Xaw3d; then
			myconf="${myconf} --with-athena=3d"
		elif use neXt; then
			myconf="${myconf} --with-athena=next"
		else
			myconf="${myconf} --with-athena=xaw"
		fi

		use dnd && myconf="${myconf} --with-dragndrop --with-offix"

		myconf="${myconf} $(use_with tiff ) $(use_with png )"
		myconf="${myconf} $(use_with jpeg ) $(use_with xface )"
	else
		myconf="${myconf}
			--without-x
			--without-xpm
			--without-dragndrop
			--with-gif=no"
	fi

	if use mule ; then
		myconf="${myconf} --with-mule"

		if use xim ; then
			if use motif ; then
				myconf="${myconf} --with-xim=motif"
			else
				myconf="${myconf} --with-xim=xlib"
			fi
		else
			myconf="${myconf} --with-xim=no"
		fi

		myconf="${myconf} $(use_with canna ) $(use_with freewnn wnn )"
	fi

	# This determines the type of sounds we are playing
	local soundconf="native"

	# This determines how these sounds should be played
	use nas	&& soundconf="${soundconf},nas"
	use esd && soundconf="${soundconf},esd"

	myconf="${myconf} --with-sound=${soundconf}"

	if use gdbm || use berkdb ; then
		use gdbm && mydb="gdbm"

		use berkdb && mydb="${mydb},berkdb"

		myconf="${myconf} --with-database=${mydb}"
	else
		myconf="${myconf} --with-database=no"
	fi

	# Don't use econf because it uses options which this configure
	# script does not understand (like --host).
	./configure ${myconf} ${EXTRA_ECONF} \
		$(use_with debug ) \
		$(use_with gif ) \
		$(use_with gpm ) \
		$(use_with hesiod ) \
		$(use_with ipv6 ipv6-cname ) \
		$(use_with jpeg ) \
		$(use_with kerberos ) \
		$(use_with ldap ) \
		$(use_with ncurses ) \
		$(use_with png ) \
		$(use_with pop ) \
		$(use_with postgres postgresql ) \
		$(use_with purify ) \
		$(use_with quantify ) \
		$(use_with socks5 socks ) \
		$(use_with tiff ) \
		$(use_with tooltalk ) \
		$(use_with xface ) \
		$(use_with xpm ) \
		$(use_with zlib ) \
		--prefix=/usr \
		--with-msw=no \
		--with-site-lisp=yes \
		--with-site-modules=yes \
		|| die "The configure script failed to run properly"

	emake || die "emake failed"
}

src_install() {
	emake prefix="${D}"/usr \
		mandir="${D}"/usr/share/man/man1 \
		infodir="${D}"/usr/share/info \
		install gzip-el || die "emake install failed"

	# Rename some applications installed in bin so that it is clear
	# which application installed them and so that conflicting
	# packages (emacs) can't clobber the actual applications.
	# Addresses bug #62991.
	for i in b2m ctags etags rcs-checkin ; do
		mv "${D}"/usr/bin/${i} "${D}"/usr/bin/${i}-xemacs || die "mv ${i} failed"
	done

	# rename man pages
	for i in ctags etags; do
		mv "${D}"/usr/share/man/man1/${i}{,-xemacs}.1 || die "mv ${i}.1 failed"
	done

	# install base packages directories
	dodir /usr/lib/xemacs/xemacs-packages/
	dodir /usr/lib/xemacs/site-packages/
	dodir /usr/lib/xemacs/site-modules/
	dodir /usr/lib/xemacs/site-lisp/

	# remove extraneous info files
	cd "${D}"/usr/share/info
	rm -f dir info.info texinfo* termcap* standards*

	cd "${S}"
	dodoc BUGS CHANGES-* ChangeLog GETTING* INSTALL PROBLEMS README*
	dodoc "${FILESDIR}"/README.Gentoo

	insinto /usr/share/pixmaps
	newins "${S}"/etc/${PN}-icon.xpm ${PN}.xpm

	insinto /usr/share/applications
	doins "${FILESDIR}"/${PN}.desktop
}

pkg_postinst() {
	eselect emacs update --if-unset
}

pkg_postrm() {
	eselect emacs update --if-unset
}