# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/eclass/matrox.eclass,v 1.11 2005/02/04 12:25:41 spyderous Exp $
#
# Author: Donnie Berkholz <spyderous@gentoo.org>
#
# This eclass is designed to reduce code duplication in the mtxdrivers* ebuilds.
# The only addition to mtxdrivers-pro is OpenGL stuff.

inherit eutils

ECLASS="matrox"
INHERITED="${INHERITED} ${ECLASS}"

EXPORT_FUNCTIONS pkg_setup src_compile

HOMEPAGE="http://www.matrox.com/mga/products/parhelia/home.cfm"

LICENSE="Matrox"
SLOT="${KV}"
RESTRICT="fetch nostrip"

RDEPEND="virtual/x11
	virtual/linux-sources"

matrox_pkg_setup() {
	# Require correct /usr/src/linux
	check_KV

	# Set up X11 implementation
	X11_IMPLEM_P="$(best_version virtual/x11)"
	X11_IMPLEM="${X11_IMPLEM_P%-[0-9]*}"
	X11_IMPLEM="${X11_IMPLEM##*\/}"
	einfo "X11 implementation is ${X11_IMPLEM}."

	# Force XFree86 4.3.0, 4.2.1 or 4.2.0 to be installed unless FORCE_VERSION
	# is set. Need FORCE_VERSION for 4.3.99/4.4.0 compatibility until Matrox
	# comes up with drivers (spyderous)
	if has_version "x11-base/xfree"
	then
		local INSTALLED_X="`best_version x11-base/xfree`"
		GENTOO_X_VERSION_REVISION="${INSTALLED_X/x11-base\/xfree-}"
		GENTOO_X_VERSION="${GENTOO_X_VERSION_REVISION%-*}"
		if [ "${GENTOO_X_VERSION}" != "4.3.0" ]
		then
			if [ "${GENTOO_X_VERSION}" != "4.2.1" ]
			then
				if [ "${GENTOO_X_VERSION}" != "4.2.0" ]
				then
					if [ -n "${FORCE_VERSION}" ]
					then
						GENTOO_X_VERSION="${FORCE_VERSION}"
					else
						die "These drivers require XFree86 4.3.0, 4.2.1 or 4.2.0. Do FORCE_VERSION=version-you-want emerge ${PN} (4.3.0, 4.2.1 or 4.2.0) to force installation."
					fi
				fi
			fi
		fi
	# xorg-x11 compatibility
	elif has_version "x11-base/xorg-x11"
	then
		if [ "${FORCE_VERSION}" != "4.3.0" ]
		then
			die "Set FORCE_VERSION=4.3.0 to emerge this. Use at your own risk."
		fi
		GENTOO_X_VERSION="${FORCE_VERSION}"
	fi
}

matrox_src_compile() {
	# 2.6 builds use the ARCH variable
	set_arch_to_kernel
	export PARHELIUX="${PWD}/src"
	cd ${S}/src/kernel/parhelia
	ln -sf ../../../kernel/mtx_parhelia.o .
	cd ..
	# Can't use emake here
	make clean
	make || die "make failed"
	set_arch_to_portage
}

matrox_base_src_install() {
	# Kernel Module
	dodir /$(get_libdir)/modules/${KV}/kernel/drivers/video; insinto /$(get_libdir)/modules/${KV}/kernel/drivers/video
	doins src/kernel/mtx.o

	# X Driver (2D)
	dodir /usr/X11R6/$(get_libdir)/modules/drivers; insinto /usr/X11R6/$(get_libdir)/modules/drivers
	doins xfree86/${GENTOO_X_VERSION}/mtx_drv.o
}

matrox_base_pkg_postinst() {
	if [ "${ROOT}" = "/" ]
	then
		/sbin/modules-update
	fi

	if [ ! -d /dev/video ]
	then
		if [ -f /dev/video ]
		then
			einfo "NOTE: To be able to use busmastering, you MUST have /dev/video as"
		    einfo "a directory, which means you must remove anything there first"
			einfo "(rm -f /dev/video), and mkdir /dev/video"
		else
			mkdir /dev/video
		fi
	fi
}