#! /bin/sh
#
# sxpreproc-wrapper --- capture preprocessed output from frontends of
#                       NEC SX series Fortran 90 compiler
#
# Copyright  (C)  2010  Thomas Jahns <jahns@dkrz.de>
#
# Version: 1.0
# Keywords:
# Author: Thomas Jahns <jahns@dkrz.de>
# Maintainer: Thomas Jahns <jahns@dkrz.de>
# URL: https://swprojects.dkrz.de/redmine/projects/scales-ppm
#
# Redistribution and use in source and binary forms, with or without
# modification, are  permitted provided that the following conditions are
# met:
#
# Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
#
# Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# Neither the name of the DKRZ GmbH nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
# OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Commentary:
#
#
#
# Code:
#
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
set -e
test "${DEBUG+set}" = set && echo "$FPPFLAGS" >&2
FCFLAGS=${FCFLAGS--EP}
if [ "${FC+set}" != set ]; then
  for F90C in sxf90 f90 '' ; 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}
IFStr=`echo "$IFS" | sed -n '$!s/$/\\\\n/
H
$x
$s/\n//g
$P'`
#translate -Ep to -EP in FCFLAGS
FCFLAGS=`echo "$FCFLAGS" | sed -e 's/\('"[$IFStr]\\|^\\)-Ep\\([$IFStr]\\|\$\\)"'/\1-EP\2/'`
# append -EP if necessary
if echo "$FCFLAGS" \
  | grep -v '\('"[$IFStr]\\|^\\)-EP\\([$IFStr]\\|\$\\)" >/dev/null
then
  FCFLAGS="${FCFLAGS+$FCFLAGS }-EP"
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 $?
#echo \"$FCFLAGS\"
trap "rm -rf '$tmp'" 0
for FortranFile in "$@" ; do
  fppOutput=`echo "$FortranFile" | sed 's:.*/::
s:^:'"$tmp/"'i.:'`
  set +e
  eval \$FC \$FCFLAGS -ts \"'$tmp'\" \$FPPFLAGS \"\$FortranFile\" $outputRedir
  set -e
  cat "$fppOutput" 2>/dev/null
  test "${DEBUG+set}" = set && cat "$fppOutput" >&2
  rm "$fppOutput"
done
#
# Local Variables:
# license-project-url: "https://swprojects.dkrz.de/redmine/projects/scales-ppm"
# license-default: "bsd"
# End:
