#! /bin/sh
# set -x
#
#  Returns the architecture of the host machine
#
#
# Try to find location of utility uname
for dir in /bin /usr/bin /usr/local/bin ; do
    if [ -x $dir/uname ] ; then
	UNAME="$dir/uname"
        break
    fi
done
#
# Get machine kernal and hardware names values
#
if [ -n "$UNAME" ] ; then
    ARCHLIST="`uname -s`"
    ARCHLIST="$ARCHLIST `uname -m`"
fi
#
# Get environment variable, ARCH, name if defined
if [ -n "$ARCH" ] ; then
    ARCHLIST="$ARCHLIST $ARCH"
fi
#
# Get arch command and execute it to get host machine architecture
if [ -x /bin/arch ] ; then
    ARCHLIST="$ARCHLIST `/bin/arch`"
elif [ -x /usr/local/bin/arch ] ; then
    ARCHLIST="$ARCHLIST `/usr/local/bin/arch`"
fi
#
# GARCH is a guess for the host machine architecture
# LARCH is current value from list of architectures
# FARCH is the returned value
GARCH=

# search architecture list; removing blanks first
for LARCH in $ARCHLIST ; do
   LARCH=`echo $LARCH | sed 's/ //g'`
   case $LARCH in
	AIX|RIOS|ppc64) FARCH=rs6000; break ;;
	HP-UX) FARCH=hpux ; break ;;
	IRIX64|IRIX) FARCH=$LARCH ; break ;;
	Linux|LINUX) FARCH=LINUX ; break ;;
	i586|i486|i86pc)
	    GARCH=$LARCH ;;
	sun4*)
	   Version=`$UNAME -r`
           MajorVersion=`expr "$Version" : "\(.\)"`
           if [ "$MajorVersion" -ge 5 ] ; then
              FARCH=solaris
	   else
	      FARCH=sun4
  	   fi
 	   break ;;
	hp9000*|hp7000*) FARCH=hpux ; break ;;
	mips|dec-5000)   FARCH=dec5000 ; break ;;
        IP12|iris-4d)    GARCH=IRIX ;;
        cray|CRAY*)      GARCH=CRAY ;;
	KSR1|KSR2)       FARCH=ksr ; break ;;	
        FreeBSD)         FARCH=freebsd ; break ;;
	i386)            GARCH=ipsc2 ;;
	ULTRIX|RISC)     GARCH=dec5000 ;;
   esac
   LLARCH=$LARCH
done
#
# Set return value if not already defined
if [ -z "$FARCH" ] ; then
    FARCH=$GARCH
    if [ -z "$FARCH" ] ; then
	FARCH=$LLARCH
    fi
    if [ -z "$FARCH" ] ; then
	FARCH=unknown
    fi
fi
echo $FARCH
exit 0
