#!/bin/sh

# Note:  use sed to strip blanks because not all systems have same version
# of diff.

if [ "x$GCTLIB" = "x" ]
then
  GCTLIB=`pwd`/../../../../
  PATH=.:`pwd`/../../../..:$PATH
  export PATH
fi


say()
{
	echo "$INDENT" " $1"
}

# Just instrument -- looking for catastrophic failures (core dumps)
one_doit()
{
WHICH=$1
  say $WHICH
  make clean
  gct-init $GCTLIB
  gct -B$GCTLIB -test-control gct-ctrl.nocc $WHICH.c
}

# Don't run the program (because it's compiled for another machine)
# but check whether GCC can compile it - to see whether GCT messed
# up its output
partial_doit()
{
WHICH=$1
GCC=$2
	say "$WHICH (partial)"
	make clean
	gct-init $GCTLIB
	gct -B$GCTLIB -test-cc $GCC -c $WHICH.c
}


full_doit()
{
WHICH=$1
GCC=$2
	say "$WHICH (complete)"
	make clean
	gct-init $GCTLIB
	gct -B$GCTLIB -test-cc $GCC $WHICH.c
	./a.out > $WHICH.log;	diff $WHICH.log $WHICH.ref
	greport -all GCTLOG > $WHICH.glog; diff $WHICH.glog $WHICH.gref
}


one_doit 1norm-var
one_doit 2norm-var
one_doit 1norm-std
one_doit 2norm-std

one_doit 1sparc-var
one_doit 2sparc-var
one_doit 1sparc-std
one_doit 2sparc-std

one_doit 1i860-var
one_doit 2i860-var
one_doit 1i860-std
one_doit 2i860-std


if [ "$GCT_UNPORTABLE_OK" = true ]
then
	partial_doit 1norm-var gcc-1.40
	partial_doit 2norm-var gcc
	partial_doit 1norm-std gcc-1.40
	partial_doit 2norm-std gcc

	full_doit 1sparc-var gcc-1.40
	full_doit 2sparc-var gcc
	full_doit 1sparc-std gcc-1.40
	full_doit 2sparc-std gcc

	partial_doit 1i860-var gcc-1.40
	partial_doit 2i860-var gcc
	partial_doit 1i860-std gcc-1.40
#
# This doesn't work on sparc -- GCC catches an incompatibility.
#	partial_doit 2i860-std gcc
fi


exit 0
