#!/bin/sh
# $Id: timing,v 1.23 1997/07/27 02:06:47 phil Exp $

# perform basic timing tests
# pb 6/4/94

if [ "$*" ]; then
# XXX check for abs path, or prepend "../"??
	SNOBOL=$1
	shift
	ARGS="$*"
else
	SNOBOL=./xsnobol4
fi

echo 'Date:'
date
echo ''
for p in `echo $PATH | tr : ' '`; do
	if [ -f $p/uname ]; then
		UNAME=$p/uname
		break
	fi
done
if [ "$UNAME" ]; then
	echo 'uname -a:'
	$UNAME -a
	echo ''

	# show hardware, if we know how;
	case `$UNAME` in
	*BSD*)
		if [ -x /usr/sbin/sysctl ]; then
			echo /usr/bin/sysctl hw:
			/usr/sbin/sysctl hw
			echo ''
		fi
		;;
	HP-UX)
		if [ -f /usr/bin/model ]; then
			echo model:
			/usr/bin/model
			echo ''
		fi
		;;
	IRIX*)
		echo 'hinv:'
		hinv
		echo ''
		;;
	Linux)
		if [ -f /proc/cpuinfo ]; then
			echo /proc/cpuinfo:
			cat /proc/cpuinfo
			echo ''
		fi
		if [ -f /proc/meminfo ]; then
			echo /proc/meminfo:
			cat /proc/meminfo
			echo ''
		fi
		;;
	SunOS)
		echo 'sunmodel:'
		./sunmodel
		echo ''
		;;
	esac
fi
#
echo 'config.guess:'
./config.guess
echo ''
echo "ls -l config.m4 ${SNOBOL}:"
ls -l config.m4 $SNOBOL
echo ''
echo 'config.m4:'
cat config.m4
echo ''
if [ "$CCVERS" ]; then
	echo "$CC $CCVERS"
	$CC $CCVERS
	echo ''
fi
echo "size ${SNOBOL}:"
size $SNOBOL

if [ -x /usr/bin/uptime ]; then
	echo ''
	echo 'uptime:'
	/usr/bin/uptime
elif [ -x /usr/ucb/uptime ]; then
	echo ''
	echo 'uptime:'
	/usr/ucb/uptime
fi

echo ''
echo 'timing run of genc.sno:'
if [ "$ARGS" ]; then
	echo "	args: $ARGS"
fi

TDIR=timdir.$$
rm -rf $TDIR
trap "rm -rf $TDIR; exit 1" 1 2 15
mkdir $TDIR
OUT=stdout
TAIL1='sed -n 2,$p'
(
	cd $TDIR

LNFILES='../procs ../globals ../xsnobol4'
# AFS doesn't allow hard links across directories!
	ln $LNFILES . || ln -s $LNFILES .

	# stderr to file "stderr", all but first line of stdout to "$OUT"
	time $SNOBOL $ARGS -s ../genc.sno < ../v311.sil 2>stderr | $TAIL1 >$OUT
)
# use snobol program to process output!!
$SNOBOL -b timing.sno < $TDIR/stderr
# save exit status
STAT=$?

# check output regardless of timing.sno status
if $TAIL1 < snobol4.c | cmp -s - $TDIR/$OUT; then
	echo "genc.sno output checks out"
	rm -rf $TDIR
else
	echo "ERROR: genc.sno output is bad; compare $TDIR/$OUT with snobol4.c"
	STAT=2
fi

exit $STAT
