#!/bin/sh
#
#         OpenPBS (Portable Batch System) v2.3 Software License
# 
# Copyright (c) 1999-2000 Veridian Information Solutions, Inc.
# All rights reserved.
# 
# ---------------------------------------------------------------------------
# For a license to use or redistribute the OpenPBS software under conditions
# other than those described below, or to purchase support for this software,
# please contact Veridian Systems, PBS Products Department ("Licensor") at:
# 
#    www.OpenPBS.org  +1 650 967-4675                  sales@OpenPBS.org
#                        877 902-4PBS (US toll-free)
# ---------------------------------------------------------------------------
# 
# This license covers use of the OpenPBS v2.3 software (the "Software") at
# your site or location, and, for certain users, redistribution of the
# Software to other sites and locations.  Use and redistribution of
# OpenPBS v2.3 in source and binary forms, with or without modification,
# are permitted provided that all of the following conditions are met.
# After December 31, 2001, only conditions 3-6 must be met:
# 
# 1. Commercial and/or non-commercial use of the Software is permitted
#    provided a current software registration is on file at www.OpenPBS.org.
#    If use of this software contributes to a publication, product, or
#    service, proper attribution must be given; see www.OpenPBS.org/credit.html
# 
# 2. Redistribution in any form is only permitted for non-commercial,
#    non-profit purposes.  There can be no charge for the Software or any
#    software incorporating the Software.  Further, there can be no
#    expectation of revenue generated as a consequence of redistributing
#    the Software.
# 
# 3. Any Redistribution of source code must retain the above copyright notice
#    and the acknowledgment contained in paragraph 6, this list of conditions
#    and the disclaimer contained in paragraph 7.
# 
# 4. Any Redistribution in binary form must reproduce the above copyright
#    notice and the acknowledgment contained in paragraph 6, this list of
#    conditions and the disclaimer contained in paragraph 7 in the
#    documentation and/or other materials provided with the distribution.
# 
# 5. Redistributions in any form must be accompanied by information on how to
#    obtain complete source code for the OpenPBS software and any
#    modifications and/or additions to the OpenPBS software.  The source code
#    must either be included in the distribution or be available for no more
#    than the cost of distribution plus a nominal fee, and all modifications
#    and additions to the Software must be freely redistributable by any party
#    (including Licensor) without restriction.
# 
# 6. All advertising materials mentioning features or use of the Software must
#    display the following acknowledgment:
# 
#     "This product includes software developed by NASA Ames Research Center,
#     Lawrence Livermore National Laboratory, and Veridian Information
#     Solutions, Inc.
#     Visit www.OpenPBS.org for OpenPBS software support,
#     products, and information."
# 
# 7. DISCLAIMER OF WARRANTY
# 
# THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT
# ARE EXPRESSLY DISCLAIMED.
# 
# IN NO EVENT SHALL VERIDIAN CORPORATION, ITS AFFILIATED COMPANIES, OR THE
# U.S. GOVERNMENT OR ANY OF ITS AGENCIES BE LIABLE FOR ANY DIRECT OR INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# 
# This license will be governed by the laws of the Commonwealth of Virginia,
# without reference to its choice of law rules.
#
#
# This is a simple script that generates a machine type name
# based on the output of uname.  The generated name is in the
# style of old PBS machine names and thus a hand generated
# mapping needs to take place. If you port PBS to new architectures
# you should modify the lookup table. A better way would have been
# to name the machines in a more "standard" way but it would require
# a considerable amount of effort to find all the dependencies in
# the code and documentation.
#
# The big kluge is when we are on an AIX box to figure out whether or
# not we are running on an SP2. What we do is have the user set
# --enable-sp2 when configuring. Since this script is needed by configure
# we can't perform a substitution on it based on the output of configure.
# Thus the case of the sp2 will be handled by configure.
# All of this is rather cheesy as sp2, aix3, aix4, and aix5
# are logically overlapping.
#

OS=`uname -s | tr '[A-Z]' '[a-z]'`
REL=`uname -r`
VER=`uname -v 2> /dev/null`

test "$VER" = unicosmk && OS="$VER"

bad_rel=n

verbose=""; export verbose

test "$1" = "-v" && verbose=yes

case "$OS" in 

  sun*)  case "$REL" in
           4*)  mach=sunos4 ;;
           5.10)  mach=solaris7 ;;
           5.[0123456]*)  mach=solaris5 ;;
           5.*)  mach=solaris7 ;;
           *)   bad_rel=y ;;
         esac ;;

  cm*)   mach=cm5 ;;

  #
  # as usual, AIX is different...
  #
  aix*) REL=`uname -v`
        case "$REL" in
          3*)  mach=aix3 ;;
          4*)  mach=aix4 ;;
          5*)  mach=aix5 ;;
          *)   bad_rel=y ;;
        esac ;;

  hp*) case "$REL" in
          B.1[1-9].[1-9]*) mach=hpux11 ;;
          *)  mach=hpux10 ;;
        esac ;;

  irix*) case "$REL" in
          5*) mach=irix5 ;;
          6*) mach=irix6 ;;
          *)  bad_rel=y ;;
        esac ;;

  netbsd*) mach=netbsd ;;

  freebsd*)
       if [ `echo "$REL" | cut -f 1 -d .` -lt 5 ]; then
               mach=freebsd
       else
               mach=freebsd5
       fi
       ;;

  darwin*) mach=darwin ;;

  linux*) mach=linux ;;

  cygwin*) mach=cygwin ;;
  
  unicosmk*) mach=unicosmk2 ;;

  gnu/kfreebsd) mach=freebsd5 ;;

  gnu) mach=linux ;;

  unicos*) mach=unicos8 ;;

  sn*)	if echo $OS | egrep '^sn[0-9]+$' > /dev/null ; then
	    mach=unicos8;
	else
	    echo $0: the operating system \"$OS\" is unknown >&2 ;
	    echo unknown ;
	    exit 1 ;
	fi;;

  osf*) mach=digitalunix ;;

  unix_system_v ) mach=fujitsu ;;

  *)   test -n "$verbose" && \
           echo $0: the operating system \"$OS\" is unknown >&2 ;
       echo unknown ;
       exit 1 ;;

esac


if test "$bad_rel" = y; then
  test -n "$verbose" && \
      echo $0: for operating system \"$OS\", release \"$REL\" is unknown >&2
  echo unknown
  exit 2
fi


#
# an irix6array is a machine running irix6 with the array daemon
# configured to start at boot time. The whole concept of embedding
# the release number of the OS in the machine type is retarded.
#
IRIX_ARRAY_CONF=/etc/config/array
if test "$mach" = irix6; then
  test -r "$IRIX_ARRAY_CONF" && \
    test `cat "$IRIX_ARRAY_CONF"` = on && \
    mach=irix6array
fi

echo $mach
exit 0


