#!/bin/sh
#
#  arch
#
# (c) 2002 Sun Microsystems, Inc. Use is subject to license terms.  
#
#  The original idea of "aimk" where this script is based on came from the
#  PVM 3.x distribution, 22 Jul 1991 Robert Manchek manchek@CS.UTK.EDU. 
#
#  call:   arch       (print SGE architecture string)
#          arch -m    (print default MANPATH of system)
#          arch -mt   (print either "man" or "catman")
#          arch -lib  (print name of variable to extend shared library path)
#

# On some architectures, it is necessicary to run the manpath(1) command
# with the user's path instead of our "safe" one.  Thus we need to
# save the old value of PATH for later restoration.
SAFE_PATH=/bin:/usr/bin:/usr/sbin
OLD_PATH=$PATH
PATH=$SAFE_PATH

ARCH=UNKNOWN

if [ -x /usr/bin/uname ]; then
   os="`/usr/bin/uname -s`"
   ht="`/usr/bin/uname -m`"
   osht="$os,$ht"
   case $osht in
   Darwin,*)
      ARCH=darwin
      ;;
   FreeBSD,*)
      ARCH=fbsd-$ht
      ;;
   esac
fi

if [ -x /bin/uname ]; then
   os="`/bin/uname -s`"
   ht="`/bin/uname -m`"
   osht="$os,$ht"
   case $osht in
   SUPER-UX,SX-4*)
      ARCH=necsx4
      ;;
   SUPER-UX,SX-[56]*)
      ARCH=sx
      ;;
   SunOS,sun4*)
      ARCH=sun4
      ;;
   SunOS,i86*)
      ARCH=solaris86
      ;;
   AIX,*)
      rev=`/bin/uname -v`
      case $rev in
      3)
         ARCH=UNSUPPORTED-rs6000
         ;;
      4)
         subrev=`/bin/uname -r`
         case $subrev in
         1)
            ARCH=UNSUPPORTED-aix41
            ;;
         2)
            ARCH=aix42
            ;;
         3)
            ARCH=aix43
            ;;
         esac  
         ;;
      5)
         ARCH=aix43
#         subrev=`/bin/uname -r`
#         case $subrev in
#         1)
#            ARCH=aix51
#            ;;
#         esac
         ;;
      esac
      ;;
   HP-UX,ia64)
      ARCH=hp11-64
      ;;
   *,9000/*)
      rev=`/bin/uname -r`
      case $rev in
      *.09.*)
         ARCH=UNSUPPORTED-hp
         ;;
      *.10.10)
         ARCH=UNSUPPORTED-hp1010
         ;;
      *.10.*)
         ARCH=hp10
         ;;
      *.11.*)
         ARCH=hp11
#         bits=`/usr/bin/getconf KERNEL_BITS`
#         if [ $bits -eq 64 ]; then
#            ARCH=hp11-64
#         else
#            ARCH=hp11
#         fi
         ;;
      esac
      ;;
   Linux,alpha)
      ARCH=alinux
      ;;
   Linux,sparc)
      ARCH=slinux
      ;;
   Linux,ia64)
      ARCH=ia64linux
      ;;
   Linux,x86_64)
      ARCH=lx24-amd64
      ;;
   Linux,*)
      rev="`/bin/uname -r`"
      case $rev in
      2.[246].*)
         strings /lib/libc.so.6 | grep "GNU C Library" | grep "2\.[01]" 2>&1 > /dev/null
         if [ $? = 0 ]; then
            ARCH=UNSUPPORTED-glinux20
         else
            ARCH=glinux
         fi
         ;;
      *)
         ARCH=UNSUPPORTED-linux
         ;;
      esac
      ;;
   *,alpha)
      rev=`/usr/bin/uname -r`
      case $rev in
      V4*)
         ARCH=osf4
         ;;
      V5*|T5*)
         ARCH=tru64
         ;;
      *)
         ARCH=UNSUPPORTED-osf
         ;;
      esac
      ;;
   CRSOS,smp)
      ARCH=craysmp
      ;;
   esac

   if [ $ARCH = UNKNOWN ]; then
      os="`/bin/uname -s`"
      rel="`/bin/uname -r`"
      osrel="$os,$rel"

      case $osrel in
      IRIX,4*)
         ARCH=UNSUPPORTED-irix4
         ;;
      IRIX,5*)
         ARCH=UNSUPPORTED-irix5
         ;;
      IRIX*,6*)
         ARCH=irix6
         ;;
      esac
   fi
fi

if [ $ARCH = UNKNOWN ]; then
   if [ -f /unicos ]; then
      if [ "`/bin/uname -m`" = "CRAY TS" ]; then
         if [ `/bin/target|/bin/grep ieee` = noieee ]; then
            ARCH=crayts
         else
            ARCH=craytsieee
         fi
      else
         ARCH=cray
      fi
   fi
fi

if [ "$ARCH" = sun4 ]; then
   REL=`/bin/uname -r`
   case $REL in
   5.[1789]*)
      if [ `isainfo -b` = 64 ]; then
         ARCH=solaris64
      else
         ARCH=solaris
      fi
      ;;
   5.[56]*)
      ARCH=solaris
      ;;
   *)
      ARCH=UNSUPPORTED-sun4-$REL
      ;;
   esac
fi

if [ "$1" = "-m" -o "$1" = "-mt" -o "$1" = "-lib" ]; then
   MANTYPE=man
   SHARED_LIBRARY_PATH="LD_LIBRARY_PATH"
   case $ARCH in
   solaris|solaris64)
      DEFAULTMANPATH=/usr/share/man
      ;;
   alinux|glinux|ia64linux)
      if [ "`which manpath 2>/dev/null`" != "" ]; then
         DEFAULTMANPATH=`manpath 2>/dev/null`
      else
         DEFAULTMANPATH=/usr/local/man:/usr/share/man:/usr/man:/usr/X11R6/man
      fi
      ;;
   osf4|tru64)
      DEFAULTMANPATH=/usr/share/man:/usr/dt/share/man:/usr/local/man
      ;;
   irix6|irix65)
      DEFAULTMANPATH=/usr/share/catman:/usr/share/man:/usr/catman:/usr/man
      MANTYPE=catman
      ;;
   hp10|hp11|hp11-64)
      DEFAULTMANPATH=/usr/man:/usr/contrib/man:/usr/local/man
      SHARED_LIBRARY_PATH="SHLIB_PATH"
      ;;
   aix42|aix43|aix51)
      DEFAULTMANPATH=/usr/man
      SHARED_LIBRARY_PATH="LIBPATH"
      ;;
   fbsd-*)
      PATH=$OLD_PATH
      DEFAULTMANPATH=`/usr/bin/manpath -q`
      PATH=$SAFE_PATH
      ;;
   darwin)
      DEFAULTMANPATH=`/usr/bin/manpath -q`
      SHARED_LIBRARY_PATH="DYLD_LIBRARY_PATH"
      ;;
   esac

   if [ "$1" = "-m" ]; then
      echo $DEFAULTMANPATH
   elif [ "$1" = "-lib" ]; then
      echo $SHARED_LIBRARY_PATH
   else
      echo $MANTYPE
   fi
else
   echo $ARCH
fi
