#! /bin/sh
# compile script for quadruple precision
# this file is part of LoopTools
# last modified 2 Dec 09 th

f77290=`dirname $0`/f77290
[ ! -x $f77290 -a -f $f77290.c ] && gcc -O -o $f77290 $f77290.c
if [ ! -x $f77290 ] ; then
  echo "Cannot find the f77290 utility."
  exit 1
fi

tmpdir=${TMPDIR:-/tmp}

f90="f90 -r16"
cc="gcc"
cpp="$cc -E -P -C -x f77-cpp-input"

fppflags=""
cppflags=""
ldflags=""
fflags=""
ffiles=""
cfiles=""

while [ $# -gt 0 ] ; do
  case "$1" in
  *.[fF])
	ffiles="$ffiles $1" ;;
  *.c)
	cfiles="$cfiles $1" ;;
  -I*)
	fppflags="$fppflags $1" ;;
  -D*)
	cppflags="$cppflags $1" ;;
  -looptools)
	ldflags="$ldflags -looptools-quad" ;;
  -[lL]*)
	ldflags="$ldflags $1" ;;
  -extend_source | -old_f77)
	;;
  *)
	fflags="$fflags $1" ;;
  esac
  shift
done


if [ -n "$ffiles" ] ; then
  tmpfiles=""
  for file in $ffiles ; do
    tmp=$tmpdir/`basename $file | sed s/.$/f90/g`
    tmpfiles="$tmpfiles $tmp"
    tmpfppflags="-I`dirname $file` $fppflags"
    sed "
/^[cC*]/d
/^[^#].*include / {
  s/^[^i]*/#/
  s/'/\"/g
}" $file | $cpp $tmpfppflags $cppflags - | $f77290 - > $tmp
  done
  (set -x; $f90 $tmpfppflags $fflags $tmpfiles $ldflags) || exit $?
  rm -f $tmpfiles
fi

if [ -n "$cfiles" ] ; then
  tmpfiles=""
  for file in $cfiles ; do
    tmp=$tmpdir/`basename $file`
    tmpfiles="$tmpfiles $tmp"
    sed 's/sizeof(double)/2*&/g' $file > $tmp
  done
  (set -x; $cc $fppflags $cppflags $fflags $tmpfiles $ldflags) || exit $?
  rm -f $tmpfiles
fi

