#!/bin/sh
# $Id: configure,v 1.38 2008/06/15 07:08:49 paulus Exp $

# Where to install stuff by default
DESTDIR=/usr/local
SYSCONF=/etc

# Compile defaults
CROSS_COMPILE=
CC ?= cc
CFLAGS=

system=`uname -s`
release=`uname -r`
arch=`uname -m`
state="unknown"

case $system in
  Linux)
    makext="linux";
    ksrc="linux";
    state="known";
    CFLAGS="$(CFLAGS)";;
  SunOS)
    karch=`/usr/bin/isainfo -k`
    case $release in
      5.[7-9]*|5.[1-9][0-9]*)	state="known"; ksrc="solaris"; makext="sol2";
              case "$karch" in
		amd64)		archvariant='-64x';;
		sparcv9)	archvariant='-64';;
		*)	;;
	      esac;;
      5.[1-6]*)	state="known"; ksrc="solaris"; makext="sol2";;
    esac
    if [ "$1" = gcc ]; then
	shift
	usegcc=gcc
    fi
    if [ "$1" = 32 ]; then
	shift
	archvariant=
    fi
    if [ -x /opt/SUNWspro/bin/cc -a "$usegcc" != gcc ] &&
       /opt/SUNWspro/bin/cc -flags >/dev/null 2>&1; then
      if [ "$archvariant" = "-64x" ]; then
        ( cd /tmp; echo "int x;" > ppp$$.c
	  /opt/SUNWspro/bin/cc -c -errwarn -xchip=opteron -m64 ppp$$.c >/dev/null 2>&1 || (
	    echo "WorkShop C is unable to make 64 bit modules, and your $karch system needs"
	    echo "them.  Consider upgrading cc on this machine."
	    rm -f ppp$$.c
	    exit 1
	  ) || exit 1
	  rm -f ppp$$.c ppp$$.o
        ) || exit 1
      fi
    elif gcc --version >/dev/null 2>&1; then
      archvariant=gcc$archvariant
      compiletype=.gcc
      if [ "$archvariant" = "gcc-64" -o"$archvariant" = "gcc-64x" ]; then
        ( cd /tmp; touch ppp$$.c
	  gcc -c -m64 ppp$$.c >/dev/null 2>&1 || (
	    echo "gcc is unable to make 64 bit modules, and your $karch system needs them."
	    echo "Consider upgrading gcc on this machine, or switching to Sun WorkShop."
	    rm -f ppp$$.c
	    exit 1
	  ) || exit 1
	  rm -f ppp$$.c ppp$$.o
        ) || exit 1
      fi
    else
      echo "C compiler not found; hoping for the best."
    fi;;
  NetBSD|FreeBSD|ULTRIX|OSF1|NeXTStep|SINIX-?|UNIX_SV|UNIX_System_V)
    state="notincluded";;
esac

if [ -d "$ksrc" ]; then :; else
  state="notincluded"
  unset ksrc
fi

case $state in
  unknown)
    echo "This software has not been ported to $system.  Sorry.";;
  notincluded)
    echo "Support for $system has not been included"
    echo "in this distribution.  Sorry.";;
  known)
    echo "Configuring for $system";;
esac

# Parse arguments
while [ $# -gt 0 ]; do
    arg=$1
    val=
    shift
    case $arg in
	*=*)
	    val=`expr "x$arg" : 'x[^=]*=\(.*\)'`
	    arg=`expr "x$arg" : 'x\([^=]*\)=.*'`
	    ;;
	--prefix|--sysconf)
	    if [ $# -eq 0 ]; then
		echo "error: the $arg argument requires a value" 1>&2
		exit 1
	    fi
	    val=$1
	    shift
	    ;;
    esac
    case $arg in
	--prefix)	 DESTDIR=$val ;;
	--sysconfdir)	 SYSCONF=$val ;;
	--cross_compile) CROSS_COMPILE=$val ;;
	--cc)            CC=$val ;;
	--cflags)        CFLAGS=$val ;;
    esac
done

mkmkf() {
    rm -f $2
    if [ -f $1 ]; then
	echo "  $2 <= $1"
	sed -e "s,@DESTDIR@,$DESTDIR,g" -e "s,@SYSCONF@,$SYSCONF,g" \
	    -e "s,@CROSS_COMPILE@,$CROSS_COMPILE,g" -e "s,@CC@,$CC,g" \
	    -e "s,@CFLAGS@,$CFLAGS,g" $1 >$2
    fi
}

if [ -d "$ksrc" ]; then
    echo "Creating Makefiles."
    mkmkf $ksrc/Makefile.top Makefile
    mkmkf $ksrc/Makedefs$compiletype Makedefs.com
    for dir in pppd pppstats chat pppdump pppd/plugins pppd/plugins/pppoe \
	       pppd/plugins/radius pppd/plugins/pppoatm \
	       pppd/plugins/pppol2tp; do
	mkmkf $dir/Makefile.$makext $dir/Makefile
    done
    if [ -f $ksrc/Makefile.$makext$archvariant ]; then
	mkmkf $ksrc/Makefile.$makext$archvariant $ksrc/Makefile
    fi
else
  echo "Unable to locate kernel source $ksrc"
  exit 1
fi
