#!/bin/sh
#
# The checkreqs script checks for build requirements 
# (java, gcc) and runs them to check 
# that the correct versions are in the path.
#


BADOSTYPE=1
GCCVERSTR="Minimum gcc version is 3.2"
MINGCC_I=3
MINGCC_J=2
MINGCC_K=
GCCPATH="/usr/bin/gcc"
BADGCC=0


JAVAVERSTR="Minimum Java version is 1.4.2"
MINJAVA_I=1
MINJAVA_J=4
MINJAVA_K=2
JAVAPATH="/usr/java/jdk1.5.0/bin"
BADJAVA=0

BADENVV=0
BADJH=0
BADBAL=0
BADLL=0

echo "Checking for required software versions:"

#Check for minimum gcc version
GCCVER=`gcc -v 2>&1 | egrep 'gcc version [0-9]\.[0-9]+' | cut -d" " -f3`
if [ -n "$GCCVER" ]
then
  i=`echo $GCCVER | cut -d. -f1`
  j=`echo $GCCVER | cut -d. -f2`
# ignore version info after the "_" as in 3.3.3_01
  k=`echo $k | cut -d_ -f1`
  if [ $i -lt $MINGCC_I ]
  then 
    BADGCC=1 
  else
    if [ $i -le $MINGCC_I -a $j -lt $MINGCC_J ]
    then
      BADGCC=1 
    fi
  fi
  if [ $BADGCC -eq 1 ]
  then
    echo "  gcc version found is too old for build: version " $GCCVER 
    echo " " $GCCVERSTR
  fi
else
  BADGCC=1 
  echo "Did not find any version of gcc in search path"
fi
if [ $BADGCC -eq 0 ]
then
  echo "  Found gcc version $GCCVER"
fi

#Check for minimum Java version
JAVAVER=`java -version 2>&1 | egrep 'java version .[0-9]\.[0-9]+\.[0-9]+' | cut -d"\"" -f2`
if [ -n "$JAVAVER" ]
then
  i=`echo $JAVAVER | cut -d. -f1`
  j=`echo $JAVAVER | cut -d. -f2`
  k=`echo $JAVAVER | cut -d. -f3`
# ignore version info after the "_" as in 1.4.2_05
  k=`echo $k | cut -d_ -f1`
  if [ $i -lt $MINJAVA_I ]
  then 
    BADJAVA=1 
  else
    if [ $i -le $MINJAVA_I -a $j -lt $MINJAVA_J ]
    then
      BADJAVA=1 
    else
      if [ $i -le $MINJAVA_I -a $j -le $MINJAVA_J -a $k -lt $MINJAVA_K ]
      then
        BADJAVA=1 
      fi
    fi
  fi
  if [ $BADJAVA -eq 1 ]
  then
    echo "  Java version found is too old for build: version " $JAVAVER 
    echo " " $JAVAVERSTR
  fi
else
  BADJAVA=1 
  echo "Did not find any version of java in search path"
fi

if [ $BADJAVA -eq 0 ]
then
  echo "  Found java version $JAVAVER"
fi

if [ $BADGCC -eq 1 ]
then
  echo "Your path to gcc may be set wrong."
  if [ $OSTYPE = linux -o $OSTYPE = linux-gnu ]
  then
    echo "Use: find /usr -name gcc"
    echo "to help locate the required gcc executable."
  fi
fi


if [ $BADJAVA -eq 1 ]
then
  echo "Your path to Java may be set wrong."
  if [ $OSTYPE = linux -o $OSTYPE = linux-gnu ]
  then
    echo "Use: find /usr -name 'jdk1.*'"
    echo "to help locate the required gcc executable."
  fi
fi

echo "Checking for required environment variables:"

if [ $OSTYPE = linux -o $OSTYPE = linux-gnu ]
then
  BADOSTYPE=0
fi

if [ $BADOSTYPE -eq 1 ]
then
 echo " [PROBLEM!] Unknown OSTYPE " $OSTYPE
 echo "            Known values are linux and linux-gnu." 
else 
 echo "  OSTYPE is set to " $OSTYPE
fi

exit 0
