# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/app-editors/emacs-cvs/emacs-cvs-22.0.50-r2.ebuild,v 1.4 2006/06/26 22:21:03 flameeyes Exp $

ECVS_AUTH="pserver"
ECVS_SERVER="cvs.savannah.gnu.org:/sources/emacs"
ECVS_MODULE="emacs"
ECVS_BRANCH="HEAD"

inherit elisp-common cvs alternatives flag-o-matic eutils

IUSE="X Xaw3d aqua gif gtk jpeg png spell tiff"
# IUSE="X Xaw3d aqua gif gtk jpeg png spell tiff xft source"

S=${WORKDIR}/emacs

DESCRIPTION="Emacs is the extensible, customizable, self-documenting real-time display editor."
SRC_URI=""
HOMEPAGE="http://www.gnu.org/software/emacs"

RESTRICT="$RESTRICT nostrip"

X_DEPEND="x11-libs/libXmu x11-libs/libXpm x11-libs/libXt x11-misc/xbitmaps || ( media-fonts/font-adobe-100dpi media-fonts/font-adobe-75dpi )"

DEPEND=">=sys-libs/ncurses-5.3
	spell? ( || ( app-text/ispell app-text/aspell ) )
	X? ( || ( ( $X_DEPEND ) virtual/x11 ) )
	X? ( gif? ( >=media-libs/giflib-4.1.0.1b )
		jpeg? ( >=media-libs/jpeg-6b )
		tiff? ( >=media-libs/tiff-3.5.7 )
		png? ( >=media-libs/libpng-1.2.5 )
		gtk? ( =x11-libs/gtk+-2* )
		!gtk? ( Xaw3d? ( x11-libs/Xaw3d ) ) )
	sys-libs/zlib
	>=sys-apps/portage-2.0.51_rc1"

PROVIDE="virtual/emacs virtual/editor"

SLOT="22.0.50"
LICENSE="GPL-2"
KEYWORDS="~amd64 ~ppc ~ppc-macos ~sparc ~x86 ~x86-fbsd"

DFILE=emacs-${SLOT}.desktop

# pkg_setup() {
#	if use xft; then
#		while read line; do ewarn "${line}"; done <<EOF

# You have chosen to build Emacs using the XFT_JHD_BRANCH.	The
# XFT_JHD_BRANCH is very early work towards supporting XFT in Emacs.
# Emerging app-editors/emacs-cvs was risky enough, trying out the
# XFT_JHD_BRANCH branch for XFT support even more so!

# EOF
#		ebeep
#	fi
# }

src_unpack() {
#	if use xft; then
#		ECVS_BRANCH=XFT_JHD_BRANCH
#	else
#		ECVS_BRANCH=HEAD
#	fi
	cvs_src_unpack
	cd ${S};
	epatch ${FILESDIR}/emacs-subdirs-el-gentoo.diff
	use ppc-macos && epatch ${FILESDIR}/emacs-cvs-21.3.50-nofink.diff
#	if use xft; then
#		epatch ${FILESDIR}/xft-invertcursor.patch
#		epatch ${FILESDIR}/xft-bgalpha.patch
#		epatch ${FILESDIR}/xft-xfaces-fixcrash.patch
#	fi
}

src_compile() {
	export SANDBOX_ON=0			# for the unbelievers, see Bug #131505

	# no flag is allowed
	ALLOWED_FLAGS=" "
	strip-flags
	unset LDFLAGS

	sed -i -e "s/-lungif/-lgif/g" configure* src/Makefile* || die

	local myconf

	if use X; then
		myconf="${myconf} --with-x"
		myconf="${myconf} --with-xpm --with-toolkit-scroll-bars"
		myconf="${myconf} $(use_with jpeg) $(use_with tiff)"
		myconf="${myconf} $(use_with gif) $(use_with png)"
		if use gtk; then
			einfo "Configuring to build with GTK support"
			myconf="${myconf} --with-x-toolkit=gtk"
		else
			einfo "Configuring to build with lucid toolkit support"
			myconf="${myconf} $(use_with Xaw3d toolkit-scroll-bars)"
			myconf="${myconf} --without-gtk"
			myconf="${myconf} --with-x-toolkit=lucid"
		fi
#		if use xft; then
#			# this is only relevant when the source is patched for XFT
#			# support, so it must remain within this if/then block
#			myconf="${myconf} $(use_with xft)"
#		fi
	else
		myconf="${myconf} --without-x"
	fi

	if use aqua ; then
		einfo "Configuring to build with Carbon Emacs"
		econf \
			--enable-carbon-app=/Applications/Gentoo \
			--without-x \
			$(use_with jpeg) $(use_with tiff) \
			$(use_with gif) $(use_with png) \
			 || die "econf carbon emacs failed"
		make bootstrap || die "make carbon emacs bootstrap failed"
	fi

	econf \
		--program-suffix=.emacs-${SLOT} \
		--without-carbon \
		${myconf} || die "econf emacs failed"

	make bootstrap || die "make emacs bootstrap failed"
}

src_install () {
	make DESTDIR=${D} install || die
	rm ${D}/usr/bin/emacs-${SLOT}.emacs-${SLOT} || die "removing duplicate emacs executable failed"
	dohard /usr/bin/emacs.emacs-${SLOT} /usr/bin/emacs-${SLOT} || die

	if use aqua ; then
		einfo "Installing Carbon Emacs..."
		dodir /Applications/Gentoo/Emacs.app
		pushd mac/Emacs.app
		tar -chf - . | ( cd ${D}/Applications/Gentoo/Emacs.app; tar -xf -)
		popd
	fi

	# fix info documentation
	einfo "Fixing info documentation..."
	dodir /usr/share/info/emacs-${SLOT}
	mv ${D}/usr/share/info/{,emacs-${SLOT}/}dir || die "mv dir failed"
	for i in ${D}/usr/share/info/*
	do
		if [ "${i##*/}" != emacs-${SLOT} ] ; then
			mv ${i} ${i/info/info/emacs-${SLOT}}.info
			gzip -9 ${i/info/info/emacs-${SLOT}}.info
		fi
	done

	if has_version 'app-text/aspell' ; then
		# defaults to aspell if installed
		elisp-site-file-install ${FILESDIR}/40aspell-gentoo.el
	fi
	insinto /etc/env.d
	cat >${D}/etc/env.d/50emacs-cvs-${SLOT} <<EOF
INFOPATH=/usr/share/info/emacs-${SLOT}
EOF
	einfo "Fixing manpages..."
	for m in  ${D}/usr/share/man/man1/* ; do
		mv ${m} ${m/.1/.emacs-${SLOT}.1} || die "mv man failed"
	done

#	if use source; then
#		insinto /usr/share/emacs/${SLOT}/src
#		# This is not mean to install all the source -- just the
#		# source you might find via find-function
#		doins src/*.[ch]
# #		cat >00emacs-cvs-${SLOT}-gentoo.el <<EOF
# # (setq find-function-C-source-directory "/usr/share/emacs/${SLOT}/src")
# # EOF
# #		elisp-site-file-install 00emacs-cvs-${SLOT}-gentoo.el || die # need to move outside of NNfoo-gentoo.el for different versions (site-lisp is shared)
#	fi

	dodoc BUGS ChangeLog README

	insinto /usr/share/applications
	doins ${FILESDIR}/${DFILE}
}

update-alternatives() {
	for i in emacs emacsclient etags ctags b2m ebrowse \
		rcs-checkin grep-changelog ; do
		alternatives_auto_makesym "/usr/bin/$i" "/usr/bin/$i.emacs-*"
	done
}

pkg_postinst() {
	use ppc-macos || update-alternatives
}

pkg_postrm() {
	use ppc-macos || update-alternatives
}