#! /bin/sh

CC="@CC@"
CFLAGS="@CFLAGS@"
GCC="@GCC@"

srcdir=@srcdir@

# oper-:arch-:syst-:chip-:kern-
# oper = operating system type; e.g., sunos-4.1.4
# arch = machine language; e.g., sparc
# syst = which binaries can run; e.g., sun4
# chip = chip model; e.g., micro-2-80
# kern = kernel version; e.g., sun4m
# dependence: arch --- chip
#                 \        \
#          oper --- syst --- kern
# so, for example, syst is interpreted in light of oper, but chip is not.
# anyway, no slashes, no extra colons, no uppercase letters.
# the point of the extra -'s is to ease parsing: can add hierarchies later.
# e.g., *:i386-*:*:pentium-*:* would handle pentium-100 as well as pentium,
# and i386-486 (486s do have more instructions, you know) as well as i386.
# the idea here is to include ALL useful available information.

sys="`uname -s 2>/dev/null | tr '/:[A-Z]' '..[a-z]'`"
if [ x"$sys" != x ]
then
  unamer="`uname -r 2>/dev/null | tr /: ..`"
  unamem="`uname -m 2>/dev/null | tr /: ..`"
  unamev="`uname -v 2>/dev/null | tr /: ..`"

  case "$sys" in
  bsd.os)
    # in bsd 4.4, uname -v does not have useful info.
    # in bsd 4.4, uname -m is arch, not chip.
    oper="$sys-$unamer"
    arch="$unamem"
    syst=""
    chip="`sysctl -n hw.model 2>/dev/null`"
    kern=""
    ;;
  freebsd)
    # see above about bsd 4.4
    oper="$sys-$unamer"
    arch="$unamem"
    syst=""
    chip="`sysctl -n hw.model 2>/dev/null`" # hopefully
    kern=""
    ;;
  netbsd)
    # see above about bsd 4.4
    oper="$sys-$unamer"
    arch="$unamem"
    syst=""
    chip="`sysctl -n hw.model 2>/dev/null`" # hopefully
    kern=""
    ;;
  linux)
    # i'd really like to know what distribution the user has ...

    # as in bsd 4.4, uname -v does not have useful info.
    oper="$sys-$unamer" # not oper!
    syst=""
    chip="$unamem"
    case "$chip" in
    i386|i486|i586|i686)
      arch="i386"
      ;;
    alpha)
      arch="alpha"
      ;;
    esac
    ;;
  aix)
    # naturally IBM has to get uname -r and uname -v backwards. dorks.
    oper="$sys-$unamev-$unamer"
    arch="`arch  2>/dev/null | tr /: ..`"
    syst=""
    chip="$unamem"
    kern=""
    ;;
  sunos)
    oper="$sys-$unamer-$unamev"
    arch="`(uname -p 2>/dev/null || mach 2>/dev/null ) | tr /: ..`"
    syst="`arch 2>/dev/null | tr /: ..`"
    chip="$unamem" # this is wrong; is there any way to get the real info?
    kern="`arch -k 2>/dev/null | tr /: ..`"
    ;;
  unix_sv)
    oper="$sys-$unamer-$unamev"
    arch="`uname -m 2>/dev/null`"
    syst=""
    chip="$unamem"
    kern=""
    ;;
  beos)
  	oper="$sys-$unamer-$unamev"
	case "$unamem" in
	*BePC*) 
		arch="i386";
		chip="";
		if /bin/sysinfo -cpu 2>/dev/null >/dev/null ; then
			(/bin/sysinfo -cpu 2>/dev/null |grep PentiumPro >/dev/null) && chip=ppro; 
			test "$chip" = "" && \
				(/bin/sysinfo -cpu 2>/dev/null |grep Pentium >/dev/null) && chip=pentium; 
		fi
		;;
	esac
  	;;
  *)
    need_config_guess=1;
    ;;
  esac
else
	need_config_guess=1;
fi

if test "x$need_config_guess" = x1 ; then
	cg=`$srcdir/config.guess` # cpu-company-system
	if test "x$cg" = x ; then
		# damned, config.guess does nothing if it doesn't support the
		# system.
		oper="`uname -s 2>/dev/null | tr '/:[A-Z]' '..[a-z]'`"
		chip="`uname -m 2>/dev/null | tr /: ..`"
		if test "x$oper" = x ; then
			oper="unknown"
		fi
	else
		# cpu-company-system
		# chip-useless-oper+version
		# i586-unknown-sco3.2v4.2
		# m68k-hp-hpux9.00
		# i486-unknown-linux
		chip="`echo $cg | sed s/-.*//`"
		oper="`echo $cg | sed s/.*-// | tr '[A-Z]' '[a-z]'`"
		case "$oper" in
		*[0-9]*)
			# sco3.2v4.2
			# hpux9.00
			x="`echo $oper|sed 's/[0-9].*//'`"
			y="`echo $oper|sed 's/^[a-z]*//'`"
			oper="$x-$y";
			;;
		*linux*)	
			oper=linux-"`uname -r`"
			;;
		esac
	fi
fi


case "$chip" in
80486)
  # let's try to be consistent here. (BSD/OS)
  chip=i486
  ;;
i486DX)
  # respect the hyphen hierarchy. (FreeBSD)
  chip=i486-dx
  ;;
i486.DX2)
  # respect the hyphen hierarchy. (FreeBSD)
  chip=i486-dx2
  ;;
Intel.586)
  # no, you nitwits, there is no such chip. (NeXTStep)
  chip=pentium
  ;;
i586)
  # no, you nitwits, there is no such chip. (Linux)
  chip=pentium
  # djb, stop bashing linux alone, bash to GNU people too ...
  # config.guess also does this!
  ;;
i686)
  # STOP SAYING THAT! (Linux)
  chip=ppro
esac
if test "x$arch" = x ; then
	if test "x$chip" = i386 -o "x$chip" = i486 -o "x$chip" = "pentium" \
		-o "x$chip" = "ppro" ; then
		arch="i386";
	fi
fi

x=`echo "$oper-:$arch-:$syst-:$chip-:$kern-" | tr ' [A-Z]' '.[a-z]'`

if test x"$@" = x ; then
	echo "Future @PACKAGE@ versions will include a list of systems this version" >&2
	echo "was compiled under (that's what you send this message for). In case" >&2 
	echo "want to see a shorthand expression of your real name in this list" >&2
	echo "you may provide it here:" >&2
	echo "Realname: " >&2
	read realname
else
	realname="$@"
fi

echo # BeOS /bin/mail doesn't generate any header ...
echo ""
echo "SYS: $x"
echo "PACKAGE: @PACKAGE@ @VERSION@"
cc="`echo \"$CC\"|sed 's/ .*//'`" 
x=`$CC --version </dev/null 2>/dev/null`
echo "CC: $cc $x"
echo "CFLAGS: $CFLAGS"
if test "x$realname" = x ; then
	:
else
	echo "REALNAME: $realname"
fi
