#! /bin/sh
if [ "${DEBUG+set}" = set ]; then
  set -x
  outputRedir=">&2"
else
  outputRedir=">/dev/null 2>&1"
fi
while echo "$1" | grep '^-' >/dev/null 2>&1; do
  FPPFLAGS="${FPPFLAGS+${FPPFLAGS} }\"$1\""
  shift
done
TRAPCMD=':'
trap 'eval $TRAPCMD' 0
set -e
test "${DEBUG+set}" = set && echo "$FPPFLAGS" >&2
FCFLAGS=${FCFLAGS--EP}
if [ "${FC+set}" != set ]; then
  for F90C in sunf95 '' ; do
    test -n "$F90C" || exit 1
    set +e
    F90BIN=`which $F90C 2>/dev/null`
    set -e
    test ! -x "$F90BIN" || break
  done
fi
FC=${FC-$F90C}
# append -fpp if necessary
IFStr=`echo "$IFS" | sed -n '$!s/$/\\\\n/
H
$x
$s/\n//g
$P'`
if echo "$FCFLAGS" \
  | grep -v '\('"[$IFStr]\\|^\\)-[cf]pp\\([$IFStr]\\|\$\\)" >/dev/null
then
  FCFLAGS="${FCFLAGS+$FCFLAGS }-fpp"
fi
TMPDIR="${TMPDIR-/tmp}"
{
  tmp=`
  (umask 077 && mktemp -d "$TMPDIR/fooXXXXXX") 2>/dev/null
  ` &&
  test -n "$tmp" && test -d "$tmp"
} || {
  tmp="$TMPDIR/foo$$-$RANDOM"
  (umask 077 && mkdir "$tmp")
} || exit $?
TRAPCMD="$TRAPCMD ; rm -rf \"$tmp\""
#echo \"$FCFLAGS\"
for FortranFile in "$@" ; do
  fppInput=`echo "$FortranFile" | sed 's:.*/::
s:\.[^./]*:.F90:'`
  cp "$FortranFile" "$tmp/$fppInput"
  fppOutput=`echo "$fppInput" | sed 's:.*/::
s:\.F90:.f90:'`
  for i in fppOutput ; do
    if eval test -e \$$i ; then
      eval backup$i=true
      eval mv \"\$$i\" \"\$$i.bak\"
      eval TRAPCMD${i}Save=\"$TRAPCMD\"
      TRAPCMD="$TRAPCMD ; "`eval echo mv \"\\$$i.bak\" \"\\$$i\"`
    fi
  done
  set +e
  eval \$FC \$FCFLAGS -F $FPPFLAGS \"\$tmp/\$fppInput\" $outputRedir
  set -e
  grep -v '^#' "$fppOutput"
  test "${DEBUG+set}" = set && cat "$fppOutput" >&2
  rm "$fppOutput" "$tmp/$fppInput"
  for i in fppOutput ; do
    if eval test \"\$backup$i\" = true ; then
      eval mv \"\$$i.bak\" \"\$$i\"
      TRAPCMD=`eval echo \\$TRAPCMD\${i}Save`
    fi
  done
done
