#!/bin/bash
#Copyright 2001-2002 William Stearns <wstearns@pobox.com>
#Released under the GPL.

#FIXME - where to make clean?

#http://www.pcchips.com.tw/driver/linux/MODEM/PCTEL.ZIP
#Above (old) url no longer appears to work.
#ftp://www.pcchips.com.tw/driver/Linux/MODEM/PCTEL.ZIP

if [ -z "$PCTELVERSION" ]; then
	echo PCTELVERSION unset, skipping pctel.
	exit
fi

exec 2>&1
PROJECT="pctel"
BKLIBDIR="${BKLIBDIR:-/var/lib/buildkernel}/"
THISSCRIPT="$BKLIBDIR/bkrun-$PROJECT"   #We can't use $0 as this script is sourced; $0=/usr/bin/buildkernel

if [ -f $BKLIBDIR/${PROJECT}-options ]; then
	echo $PROJECT loading options
	. $BKLIBDIR/${PROJECT}-options
fi
echo $PROJECT \(Version $PCTELVERSION\) $1 called from Buildkernel

PCTELSOURCEDIR=${PCTELSOURCEDIR:-"/usr/src/pctel"}
if [ -f "$BKSOURCEDIR/PCTEL.ZIP" ]; then
	PCTELTAR=${PCTELTAR:-"$BKSOURCEDIR/PCTEL.ZIP"}
else
	PCTELTAR=${PCTELTAR:-"$BKSOURCEDIR/pctel.zip"}
fi
PCTELTESTFILE=${PCTELTESTFILE:-"$PCTELSOURCEDIR/src/module/Makefile"}

case $1 in
POSTLOADVARS)		:		;;
POSTGETSOURCE)
	cd $BKSOURCEDIR
	if [ ! -f "$PCTELTAR" ]; then
		echo Getting the Pctel driver \"source\".
		bkgetfile ftp www.pcchips.com.tw anonymous "$USER@$HOSTNAME" driver/Linux/MODEM PCTEL.ZIP
		PCTELTAR="$BKSOURCEDIR/PCTEL.ZIP"
	fi
	;;
POSTOPENSOURCE)
	if [ ! -f "$PCTELTESTFILE" ]; then	#Open up source
		if [ -f "$PCTELTAR" ]; then
			echo Opening $PROJECT source.
			mkdir --parents $PCTELSOURCEDIR
			cd $PCTELSOURCEDIR
			if [ -d include ]; then
				rm -rf $PCTELSOURCEDIR/include
				rmdir include
			elif [ -f include ]; then
				rm -f include
			fi
			ln -sf /usr/src/linux/include include
			case $PCTELTAR in
			#FIXME - what if unzip isn't there?
			*.zip|*.ZIP)	unzip $PCTELTAR												;;
			*)			echo Don\'t know how to open $PCTELTAR \! ; bkbeep ; sleep 30		;;
			esac
			if [ ! -f "$PCTELTESTFILE" ]; then
				echo Still no $PCTELTESTFILE after attempting to open \! ; bkbeep ; sleep 30
			fi
		else
			echo Pctel \"source\" is not yet opened and we don\'t have $PCTELTAR \! ; bkbeep ; sleep 30
		fi
	fi
	;;
POSTCONFIGURE)
	if [ -n "$PCTELSOURCEDIR" ]; then
		cd $PCTELSOURCEDIR/src/module >/dev/null
		if [ `pwd` != "$PCTELSOURCEDIR/src/module" ]; then
			echo can\'t change directory to src/module, exiting.
		else
			if [ -z "`cat ptmodule.c 2>/dev/null | grep IntrOpen`" ]; then
				echo >>ptmodule.c
				echo 'void IntrOpen(void) { }' >>ptmodule.c
				echo 'void IntrClose(void) { }' >>ptmodule.c
				echo 'void IntrWrite(void) { }' >>ptmodule.c
			fi		
			if [ -f ptmodule.o ]; then
				rm -f ptmodule.o
			fi
		fi
		cd $PCTELSOURCEDIR/lib >/dev/null
		if [ `pwd` != "$PCTELSOURCEDIR/lib" ]; then
			echo can\'t change directory to lib, exiting.
		else
			if [ -f pctel.o ]; then
				rm -f pctel.o
			fi
		fi
		cd $PCTELSOURCEDIR/src/module >/dev/null
		if [ `pwd` != "$PCTELSOURCEDIR/src/module" ]; then
			echo can\'t change directory, exiting.
		else
			make all_targets
		fi
	fi
	;;
POSTKERNELBUILD)	:		;;
POSTMODULEBUILD)	:		;;
POSTINSTALL)
	if [ -f "$PCTELSOURCEDIR/lib/pctel.o" ]; then
		echo Installing Pctel Kernel module.
		if [ ! -d /lib/modules/$BKKERNELTOBUILD/net ]; then
			mkdir --parents /lib/modules/$BKKERNELTOBUILD/net
		fi
		cp -p $PCTELSOURCEDIR/lib/pctel.o /lib/modules/$BKKERNELTOBUILD/net
	else
		echo No Pctel kernel module was created.
	fi
	;;
POSTCLEAN)			:		;;
''|ALL)
	. $THISSCRIPT POSTLOADVARS
	. $THISSCRIPT POSTGETSOURCE
	. $THISSCRIPT POSTOPENSOURCE
	. $THISSCRIPT POSTCONFIGURE
	. $THISSCRIPT POSTKERNELBUILD
	. $THISSCRIPT POSTMODULEBUILD
	. $THISSCRIPT POSTINSTALL
	. $THISSCRIPT POSTCLEAN
	;;
*)	echo unrecognized phase $1 ;;
esac

