# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/app-misc/lirc/lirc-0.7.0_pre3.ebuild,v 1.6 2004/06/28 03:56:00 vapier Exp $

inherit eutils kernel-mod

DESCRIPTION="LIRC is a package that allows you to decode and send infra-red \
	signals of many (but not all) commonly used remote controls."
HOMEPAGE="http://www.lirc.org"

[ "x${LIRC_OPTS}" = x ] && LIRC_OPTS="--with-driver=serial \
	--with-port=0x3f8 --with-irq=4"

# This are the defaults. With this support for all supported remotes
# will be build.
# If you want other options then set the Environment variable to your needs.

# Note: If you don't specify the driver configure becomes interactiv.

# You have to know, which driver you want;
# --with-driver=X

# where X is one of:
# none, any, animax, avermedia, avermedia98,
# bestbuy, bestbuy2, caraca, chronos, comX,
# cph03x, cph06x, creative, fly98, flyvideo,
# hauppauge,hauppauge_dvb, ipaq, irdeo,
# irdeo_remote, irman, irreal, it87, knc_one,
# logitech, lptX, mediafocusI, packard_bell,
# parallel, pctv, pixelview_bt878,
# pixelview_pak, pixelview_pro, provideo,
# realmagic, remotemaster, serial, silitek,
# sir, slinke, tekram, winfast_tv2000

# This could be usefull too

# --with-port=port	# port number for the lirc device.
# --with-irq=irq	# irq line for the lirc device.
# --with-timer=value	# timer value for the parallel driver
# --with-tty=file	# tty to use (Irman, RemoteMaster, etc.)
# --without-soft-carrier	# if your serial hw generates carrier
# --with-transmitter	# if you use a transmitter diode

SLOT="0"
LICENSE="GPL-2"
IUSE=""
KEYWORDS="x86 ppc alpha ia64"

DEPEND="virtual/linux-sources"

MY_P=${P/_/}

SRC_URI="http://lirc.sourceforge.net/software/snapshots/${MY_P}.tar.bz2"

S=${WORKDIR}/${MY_P}

src_unpack() {
	unpack ${A}
	cd ${S}
	sed	-i -e "s:-O2 -g:${CFLAGS}:" configure configure.in
}

is_SMP() {
	# We have a SMP enabled kernel?
	if [ ! -z "`uname -v | grep SMP`" ]
	then
		return 0
	else
		return 1
	fi
}

src_compile() {
	ewarn "If you are using a 2.6 kernel you have to patch it for lirc support."
	ewarn "There are several patches floating around, one of them can be found at "
	ewarn "http://flameeyes.web.ctonet.it/."

	# Let portage tell us where to put our modules
	check_KV

	./configure \
		--host=${CHOST} \
		--prefix=/usr \
		--infodir=/usr/share/info \
		--mandir=/usr/share/man \
		--with-kerneldir="/usr/src/linux" \
		--with-moduledir="/lib/modules/${KV}/misc" \
		--disable-manage-devices \
		--enable-sandboxed \
		${LIRC_OPTS} || die "./configure failed"

	if kernel-mod_is_2_6_kernel; then
		(cd daemons; emake) || die
		(cd tools; emake) || die
		(cd doc; emake) || die
	else
		emake || die

		case ${LIRC_OPTS}
		in
		  *"any"*)
			if is_SMP; then
				# The parallel driver will not work with SMP kernels
				# so we need to compile without it
				emake -C drivers "SUBDIRS=lirc_dev lirc_serial \
				lirc_sir lirc_it87 lirc_i2c lirc_gpio" || die
			else
				emake -C drivers "SUBDIRS=lirc_dev lirc_serial \
				lirc_parallel lirc_sir lirc_it87 lirc_i2c \
				lirc_gpio" || die
			fi
		;;
		esac
	fi
}

src_install() {
	if kernel-mod_is_2_6_kernel; then
		(cd daemons; make DESTDIR=${D} install) || die
		(cd tools; make DESTDIR=${D} install) || die
		(cd doc; make DESTDIR=${D} install) || die
	else
		emake || die
		make DESTDIR=${D} install || die

		case ${LIRC_OPTS}
		in
		  *"any"*)
			insinto /lib/modules/${KV}/misc
			if is_SMP; then
				for i in lirc_dev lirc_serial \
					lirc_sir lirc_it87 lirc_i2c lirc_gpio
				do
				doins drivers/${i}/${i}.o
				done
			else
				for i in lirc_dev lirc_serial \
					lirc_parallel lirc_sir lirc_it87 lirc_i2c lirc_gpio
				do
				doins drivers/${i}/${i}.o
				done
			fi
		;;
		esac
	fi

	exeinto /etc/init.d
	doexe ${FILESDIR}/lircd

	insinto /etc/conf.d
	newins ${FILESDIR}/lircd.conf lircd

	dohtml doc/html/*.html
}

pkg_postinst() {
	if kernel-mod_is_2_4_kernel; then
		/usr/sbin/update-modules
	fi

	einfo
	einfo "The lirc Linux Infrared Remote Control Package has been"
	einfo "merged, please read the documentation, and if necessary"
	einfo "add what is needed to /etc/modules.autoload or"
	einfo "/etc/modules.d.  If you need special compile options"
	einfo "then read the comments at the begin of this"
	einfo "ebuild (source) and set the LIRC_OPTS environment"
	einfo "variable to your needs."
	einfo
}