#!/bin/bash

ERROUTPUT=/tmp/orca-rez-err.$$

FILENAME="$1"
shift

DESTBASENAME="$1"
shift

if echo $FILENAME | grep -v '\.rez$' > /dev/null
then
    echo Expected first argument to be a *.rez file but got $FILENAME
    exit 1
fi

SRCBASENAME=`echo $FILENAME | sed 's/\.rez$//'`
SRCOBJNAME="${SRCBASENAME}.r"

DESTDEPSNAME="${DESTBASENAME}.rez.d"
DESTOBJNAME="${DESTBASENAME}.r"

$ORCA --trace-gsos compile "$@" keep="${SRCOBJNAME}" "$FILENAME" 2> $ERROUTPUT
RESULT=$?

awk '
    /^[A-Za-z][A-Za-z]*\(.*\)$/ {
        next
    }

    {
        print
    }

    /^File [^ ]*; Line [0-9][0-9]*;/ {
        sub(/;/,"",$4)
        LINENO=$4
        sub(/^File [^ ]*; Line [0-9][0-9]*/, "", $0)
        printf("%s/%s:%d:0: error: %s\n", PWD, FILE, LINENO, $0)
    }
' "PWD=`pwd`" "FILE=$FILENAME" $ERROUTPUT >&2

if [ "$RESULT" -ne 0 ]
then
    rm -f $ERROUTPUT
    rm -f $SRCOBJNAME
    exit $RESULT
fi

mkdir -p `dirname "$DESTOBJNAME"`
mv -f "$SRCOBJNAME" "$DESTOBJNAME" 2> /dev/null

DEPS=`awk '
    /^FastFileLoad/ {
        sub(/^FastFileLoad\(/, "");
        sub(/\)$/, "");
        print}' $ERROUTPUT | sort -u | while read FILE
    do
        if [ -f "$FILE" ]
        then
            echo $FILE
        fi
    done`

echo $DESTOBJNAME: $DEPS > $DESTDEPSNAME
rm -f $ERROUTPUT

exit 0
