# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sci-astronomy/predict/predict-2.2.3.ebuild,v 1.5 2009/02/23 18:31:04 bicatali Exp $

inherit toolchain-funcs eutils

DESCRIPTION="Satellite tracking and orbital prediction."
HOMEPAGE="http://www.qsl.net/kd2bd/predict.html"
SRC_URI="http://www.amsat.org/amsat/ftp/software/Linux/${P}.tar.gz"

LICENSE="GPL-2"
SLOT="0"
IUSE="doc gtk nls xforms xplanet"
KEYWORDS="amd64 ~ppc x86"

DEPEND="sys-libs/ncurses
	gtk? ( =x11-libs/gtk+-1.2* )
	xforms? ( x11-libs/xforms )
	xplanet? ( || ( x11-misc/xplanet x11-misc/xearth ) )"

src_unpack() {
	unpack ${A}
	cd "${S}"
	epatch "${FILESDIR}"/${P}-xforms.patch
}

src_compile() {
	# predict uses a ncurses based configure script
	# this is what it does if it was bash based ;)
	COMPILER="$(tc-getCC) ${CFLAGS} ${LDFLAGS}"

	einfo "Compiling predict"
	echo "char *predictpath=\"/usr/share/predict/\";" > predict.h
	echo "char soundcard=1;" >> predict.h
	echo "char *version=\"${PV}\";" >> predict.h
	${COMPILER} \
		predict.c -o predict \
		-L/$(get_libdir) -lm -lncurses -lpthread \
		|| die "Failed compiling predict"

	einfo "Compiling vocalizer"
	cd vocalizer
	echo "char *path={\"/usr/share/predict/vocalizer/\"};" > vocalizer.h
	${COMPILER} vocalizer.c -o vocalizer \
		|| die "Failed compiling vocalizer"

	if use xplanet; then
		einfo "Compiling earthtrack"
		cd "${S}"/clients/earthtrack
		# fix include path
		sed -i \
			-e "s:/usr/local/share/xplanet:/usr/share/xplanet:" \
			earthtrack.c || die "Failed to fix xplanet paths"
		${COMPILER} earthtrack.c -o earthtrack  -lm \
			|| die "Failed compiling earthtrack"
	fi

	# kep_reload
	einfo "Compiling kep_reload"
	cd "${S}"/clients/kep_reload
	${COMPILER} kep_reload.c -o kep_reload || \
		die "Failed compiling kep_reload"

	# map
	if use xforms; then
		einfo "Compiling map"
		cd "${S}"/clients/map
		${COMPILER} -I/usr/X11R6/include \
			map.c map_cb.c map_main.c \
			-L/usr/X11R6/$(get_libdir) -lforms -lX11 -lm \
			-o map || die "Failed compiling map"
	fi

	# gsat
	if use gtk; then
		# note there are plugins for gsat but they are missing
		## header files and wont compile
		einfo "Compiling gsat"
		cd "${S}"/clients/gsat-*
		econf $(use_enable nls)
		cd src
		sed -i \
			-e "s:#define DEFAULTPLUGINSDIR .*:#define DEFAULTPLUGINSDIR \"/usr/$(get_libdir)/gsat/plugins/\":" \
			-e 's:int errno;::' \
			globals.h || die
		cd ..
		emake || die "Failed compiling gsat"
	fi
}

src_install() {
	dobin predict "${FILESDIR}"/predict-update || die
	dodoc CHANGES CREDITS HISTORY README NEWS
	doman docs/man/predict.1
	insinto /usr/share/${PN}/default
	doins default/predict.* || die
	if use doc; then
		dodoc docs/postscript/predict.ps || die
		insinto /usr/share/doc/${PF}
		doins docs/pdf/predict.pdf || die
	fi

	exeinto /usr/bin
	cd vocalizer
	doexe vocalizer || die
	dosym  /usr/bin/vocalizer /usr/share/predict/vocalizer/vocalizer
	insinto /usr/share/${PN}/vocalizer
	doins *.wav || die "Failed to install vocalizer *.wav files"

	# earthtrack
	if use xplanet; then
		cd "${S}"/clients/earthtrack
		ln -s earthtrack earthtrack2
		dobin earthtrack earthtrack2 || die
		newdoc README README.earthtrack
	fi

	# kep_reload
	cd "${S}"/clients/kep_reload
	dobin kep_reload
	newdoc README README.kep_reload

	# map
	if use xforms; then
		cd "${S}"/clients/map
		dobin map || die
		newdoc CHANGES CHANGES.map
		newdoc README README.map
	fi

	# gsat
	if use gtk; then
		# the install seems broken so do manually...
		cd "${S}"/clients/gsat-*
		dodir /usr/$(get_libdir)/gsat/plugins
		keepdir /usr/$(get_libdir)/gsat/plugins
		cd src
		dobin gsat
		cd ..
		for i in AUTHORS ABOUT-NLS ChangeLog NEWS README Plugin_API; do
			newdoc ${i} ${i}.gsat
		done
	fi
}

pkg_postinst() {
	einfo "To use the clients the following line will"
	einfo "have to be inserted into /etc/services"
	einfo "predict    1210/udp"
	einfo "The port can be changed to anything"
	einfo "the name predict is what is needed to work"
	einfo "after that is set run 'predict -s'"
	einfo ""
	einfo "To get list of satellites run 'predict-update'"
	einfo "before running predict this script will also update"
	einfo "the list of satellites so they are up to date."
}