#!/bin/bash

prefix=""
sbindir=${prefix}/sbin
etcdir=${prefix}/etc
vardir=${prefix}/var
subsysdir=${vardir}/lock/subsys

usage() {
cat <<EOF
./configure [options]
EOF
}

for arg; do
	optarg=`expr "x$option" : 'x[^=]*=\(.*\)'`

	case "$arg" in 
	--prefix=*)
		prefix="$optarg" ; shift ;;
	--sbindir=*)
		sbindir="$optarg" ; shift ;;
	--sysconfdir=*)
		etcdir="$optarg" ; shift ;;
	--localstatedir=*)
		vardir="$optarg" ; shift ;;
	--subsysdir=*)
		subsysdir="$optarg" ; shift ;;
#	--enable-overwrite-init)
#		enable_overwrite_init=yes ; shift ;;
        *)
	    echo "Skipping option \"$arg\""; ;;
    esac
done

failed() {
    cat <<EOF

*** One or more required programs not found.
*** Exiting.
EOF
    exit -1
}

#check_prg "message" program [variable] [success] [fail]
check_prg() {
    echo -n "Checking $1..."
    
    if [ -x $2 ]; then
	echo " $2";
	[ -n "$3" ] && eval "$3=$2";
	[ -n "$4" ] && eval "$4";
    else
	n="`basename $2`"
	PRG="`type -p $n`"
	if [ -n "$PRG" ]; then
	    echo " $PRG";
	    [ -n "$3" ] && eval "$3=$PRG";
	    [ -n "$4" ] && eval "$4";
	else
	    echo " failed"
	    [ -n "$5" ] && eval "$5";
	fi
    fi
}

subst() {
    echo "s,@$1@,$2,g;t t" >> subs.sed
}

do_subst() {
    [ -f "$1.in" ] || return
    $SED -f subs.sed $1.in > $1
}


#############################################################################
# checks
#############################################################################

# sed
check_prg "for sed" sed SED "" "failed"

# check if grep is present
check_prg "for grep" grep GREP "" "failed"

# check for chmod, chgrp, chown
check_prg "for chmod" chmod CHMOD "" "failed"
check_prg "for chown" chown CHOWN "" "failed"
check_prg "for chgrp" chgrp CHGRP "" "failed"

# bash version
check_prg "for bash" bash BASH "" "failed"

echo -n "Checking for bash version..."
BASH_VERSION="`$BASH --version | $GREP version | $SED 's,.*version \([^.]*\).*,\1,'`"
if [ "$BASH_VERSION" -ne 2 ]; then
    failed
fi
echo " $BASH_VERSION"

# check if awk is present
check_prg "for gawk" gawk AWK
[ -z "$AWK" ] && check_prg "for awk" awk AWK "" "failed"

# check for modprobe|rmmod
check_prg "for modprobe" /sbin/modprobe MODPROBE "" "failed"
check_prg "for rmmod" /sbin/rmmod RMMOD "" "failed"

#############################################################################
# generate substitutions
#############################################################################
echo ":t" > subs.sed

subst SED $SED
subst AWK $AWK
subst GREP $GREP
subst CHMOD $CHMOD
subst CHOWN $CHOWN
subst CHGRP $CHGRP
subst MODPROBE $MODPROBE
subst RMMOD  $RMMOD

subst prefix $prefix
subst sbindir $sbindir
subst etcdir $etcdir
subst vardir $vardir
subst subsysdir $subsysdir

#############################################################################
# do substitutions
#############################################################################
echo "creating Makefiles"
do_subst Makefile
do_subst src/Makefile

echo "creating etc/rockplug/functions"
do_subst etc/rockplug/functions
