vhdl/run
#!/usr/bin/env bash
# No point in using Makefile, since we don't have
# one generated output per input without GCC.
set -e
cc='ghdl'
cflags='--std=08'
in_ext='.vhdl'
in_suffix='_tb'
get_prefix() {
  prefix="$1"
  prefix="${prefix%$in_ext}"
  prefix="${prefix%$in_suffix}"
  echo "$prefix"
}
analyze_or_run() {
  prefix="$(get_prefix "$1")"
  if [ -r "${prefix}${in_ext}" ]; then
    $cc -a $cflags "${prefix}${in_ext}"
  fi
  if [ -r "${prefix}${in_suffix}${in_ext}" ]; then
    $cc -a $cflags "${prefix}${in_suffix}${in_ext}"
    $cc -e $cflags "${prefix}${in_suffix}"
    $cc -r $cflags "${prefix}${in_suffix}" --assert-level=error --vcd="${prefix}.vcd"
  fi
}
$cc -a $cflags "common${in_ext}"
if [ $# -gt 0 ]; then
  analyze_or_run "$1"
else
  for f in *${in_suffix}${in_ext}; do
    echo "$f"
    analyze_or_run "$f"
  done
fi
Ciro Santilli