#!/bin/sh
CBASE=""
ASFLAGS=""
LFLAGS=""
if [ `uname` = Linux ]
then
  VERSION=`uname -r | cut -b1`
  CFLAGS=-DLINUX$VERSION
  for dir in /usr/local/lib /usr/lib
  do
    for lib in gz z
    do
      if [ -f $dir/lib$lib.a ]
      then
	if [ "$LFLAGS" = "" ]
	then
	  for hdr in /usr/local/include /usr/include
	  do
	    if [ -f $hdr/zlib.h ]
	    then
	      if [ "`grep -c '.*int.*compress2' $hdr/zlib.h`" != "0" ]
	      then
		if [ "$hdr" = "/usr/include" ]
		then
		  CFLAGS="-DCOMPRESS $CFLAGS"
		else
		  CFLAGS="-I$hdr -DCOMPRESS $CFLAGS"
		fi
		if [ "$dir" = "/usr/lib" ]
		then
		  LFLAGS="-l$lib"
		else
		  LFLAGS="-L$dir -l$lib"
		fi
		  ASFLAGS="--defsym COMPRESS=1"
	      else
		echo "Please upgrade your zlib package to at least 1.1.3"
		echo "You can find it at:"
		echo "http://www.cdrom.com/pub/infozip/zlib/"
		echo "Building vpnd with runtime compression disabled."
	      fi
	    fi
	  done
	fi
      fi
    done
  done
  if [ "$VERSION" = "2" ]
  then
    if [ -f /usr/include/linux/if_slip.h ]
    then
      if [ ! -f /usr/include/net/if_slip.h ]
      then
	CFLAGS="$CFLAGS -DLINSLIP"
      fi
    fi
  fi
  inl=`gcc $CFLAGS -DMD5_HMAC_FAST -DSHA1_HMAC_FAST -DRMD160_HMAC_FAST -O3 -fno-inline -S route.c -o - | grep -c __fswab`
  if [ "$inl" = "0" ]
  then
    INLINE=" -fno-inline"
  else
    INLINE=""
  fi
  case `uname -m` in
   i486)cobj="blowfishx86.o cryptox86.o md5x86.o sha1x86.o rmd160x86.o"
	robj="blowfishx86.o"
	cflg="-DCRYPTOX86"
	aflg="--defsym MD5_HMAC_FAST=1 --defsym SHA1_HMAC_FAST=1 --defsym=RMD160_HMAC_FAST=1"
	;;
   i586)cobj="blowfishx86.o cryptox86.o md5x86.o sha1x86.o rmd160x86.o"
	robj="blowfishx86.o"
	cflg="-DCRYPTOX86"
	aflg="--defsym MD5_HMAC_FAST=1 --defsym SHA1_HMAC_FAST=1 --defsym=RMD160_HMAC_FAST=1"
	;;
   i686)cobj="blowfishx86.o cryptox86.o md5x86.o sha1x86.o rmd160x86.o"
	robj="blowfishx86.o"
	cflg="-DCRYPTOX86"
	aflg="--defsym MD5_HMAC_FAST=1 --defsym SHA1_HMAC_FAST=1 --defsym=RMD160_HMAC_FAST=1"
	;;
   *)   cobj="blowfish.o md5.o sha1.o rmd160.o"
	robj="blowfish.o"
	cflg=""
	aflg=""
	;;
  esac
  (
  echo '# uncomment the following line for debug code'
  echo '#DEBUG=-DDEBUG'
  if [ "$VERSION" = "1" ]
  then
    echo "ADDON=randomd"
  fi
  echo "CRYPTOOBJ1=$cobj"
  echo "CRYPTOOBJ2=$robj"
  echo "CRYPTOFLG=$cflg"
  echo "CC=gcc"
  echo "AS=as"
  echo "LINK=gcc"
  echo "CBASE=$CFLAGS -Wall -O3$INLINE"
  echo "LFLAGS=-s $LFLAGS"
  if [ "$ASFLAGS" != "" ]
  then
    echo "ASFLAGS=$ASFLAGS $aflg"
  else
    echo "ASFLAGS=$aflg"
  fi
  cat Makefile.in
  ) > Makefile
else
  if [ "$1" = "--port" ]
  then
    os=`uname`
    echo "Generating generic Makefile for port to $os..."
    (
    echo 'DEBUG=-DDEBUG'
    if [ ! -e /dev/random ]
    then
      echo "ADDON=randomd"
    fi
    echo "CRYPTOOBJ1=blowfish.o"
    echo "CRYPTOOBJ2=blowfish.o"
    echo "CRYPTOFLG="
    echo "CC=cc"
    echo "AS=as"
    echo "LINK=cc"
    echo "CBASE=-D$os"
    echo "LFLAGS="
    echo "ASFLAGS="
    cat Makefile.in
    ) > Makefile
  else
    echo 'Operating system not (yet) supported. Please port!!!'
    exit 1
  fi
fi
