#!/bin/sh
#
# Autoconf substitutes @VAR@ definitions to come up with a 
# semi-valid test script
# 
if test "$SHL_EXT" = ""; then
    SHL_EXT=".dll"
fi
if test "$OBJ_EXT" = ""; then
    OBJ_EXT=".o"
fi

if test "$EXE_EXT" = ""; then
    EXE_EXT=".exe"
fi

export SHL_EXT
export OBJ_EXT
export EXE_EXT

if test "$ELMER_HOME" = ""; then
    # assume that we are testing local version
    printf "\$ELMER_HOME undefined, setting it to ../src\n"
    export ELMER_HOME="../../src"
    export ELMER_LIB="../../src"
    export ELMER_INCLUDE="../../src"
    # elmergrid must be in path
    export ELMER_GRID="ElmerGrid"
    export ELMER_SOLVER="../../src/ElmerSolver"
    # elmergrid must be in path
    export ELMER_MESH2D="Mesh2D"
    export PATH=".:$ELMER_HOME:$ELMER_HOME/modules:$PATH"
    # assume that stuff has been installed here
    export PATH=/c/Stuff/Elmerfem/bin:$PATH
else 
    # ELMER_HOME is defined, so we'll just use that
    printf "ELMER_HOME=%s\n" $ELMER_HOME
    export ELMER_HOME=`echo $ELMER_HOME | sed 's+.:+/&+' | sed 's.:..' | sed 's.\\\./.g'`
    export ELMER_LIB="$ELMER_HOME/share/elmersolver/lib"
    export ELMER_INCLUDE="$ELMER_HOME/share/elmersolver/include"
    export ELMER_GRID="$ELMER_HOME/bin/ElmerGrid"
    export ELMER_SOLVER="$ELMER_HOME/bin/ElmerSolver"
    export ELMER_MESH2D="$ELMER_HOME/bin/Mesh2D"
    export PATH=".:$ELMER_HOME/lib:$PATH"
    export PATH=$ELMER_HOME/bin:$PATH
fi

#
# Autoconf substitutes these variables with correct values.
#
#export F90="gfortran -O  -I. -Ibinio -I../binio -I. -I$ELMER_INCLUDE"
#export LD="gfortran -shared   "
export LD=elmerld
export F90=elmerf90-nosh
export LIBS="-L$ELMER_LIB -L. -L/c/Stuff/Elmerfem/lib -lelmersolver"

gcc -o findnorm$EXE_EXT findnorm.c -lm
chmod 775 findnorm$EXE_EXT

total=0
passed=0

if test "$1" = ""; then
   dirs=`find . -type d |sed -e 's/\// /g' |awk '{print $2}' |uniq |grep -v CVS | grep -v .svn | sort`
else
  if test "$1" = "-r"; then
    dirs=`find . -type d |sed -e 's/\// /g' |awk '{print $2}' |uniq |grep -v CVS | grep -v .svn | sort -r`
  else
    dirs="$*"
  fi
fi

cputime="0"
for dir in $dirs; do

      total=`expr $total + 1`
      cwd=`pwd`
      cd $dir
      printf "test $total : %25s " $dir
      make  > test.log 2>&1

      success=`grep "ALL DONE" test.log | wc -l`
      if test $success -ge 1; then
	  success=`../findnorm$EXE_EXT test.log`
	  cputime=`../findnorm$EXE_EXT test.log $cputime`
      fi

      if test $success -ge 1; then
	  passed=`expr $passed + 1`
          printf "		[PASSED], CPU time=$cputime\n"
	  make -i clean > /dev/null 2>&1
      else
          printf "look at [%s/test.log] for details\n" $dir
      fi
      cd $cwd
done

echo "Tests completed, passed: $passed out of total $total tests"
echo "Cumulative CPU time used in test: $cputime s"
