#!/bin/bash

die () {
	echo "error: $@" >&2
	exit 128
}

XST="$1"
if [ -z "$XST" ]; then
	die "Missing XST variable"
fi

DIR="$2"
if [ -z "$DIR" ]; then
	die "Missing directory"
fi
DIR="$(realpath "$DIR")"

PROJECT="$3"
if [ -z "$PROJECT" ]; then
	die "Missing directory"
fi

shift 3

t=
trap "rm -rf -- \"\$t\"" EXIT
t="$(mktemp -d)" || die "can't create temp dir"

cp -- "$@" "$t"

cd "$t" || die "cd"

mkdir -p xilinx/projnav.tmp
mkdir -p xilinx/_ngo
mkdir -p "$DIR"/logs

if ! "$XST" -ifn $1 -ofn ${PROJECT}.syr > ${PROJECT}.syr.log; then
	cp -- "${PROJECT}".syr.log "$DIR"/logs
	cat ${PROJECT}.syr.log
	exit 128
fi

cp -- "${PROJECT}".syr.log "$DIR"/logs

[ -r "${PROJECT}".syr ] || die "missing syr file"
[ -r "${PROJECT}".ngc ] || die "missing ngc file"
[ -r "${PROJECT}".ngr ] || die "missing ngr file"

cp -- "${PROJECT}".syr "${PROJECT}".ngc "${PROJECT}".ngr "$DIR"

exit 0
