#! /bin/sh

AWK=${AWK:-'awk'}

# FIXME -- is there a better way to handle the possibility of spaces
# in these names? 

top_srcdir='%abs_top_srcdir%'
builddir='%builddir%'

liboctinterp="$builddir/src/%liboctinterp%"
liboctave="$builddir/liboctave/%liboctave%"
libcruft="$builddir/libcruft/%libcruft%"

d1="$top_srcdir/test"
d2="$top_srcdir/scripts"
d3="$builddir/scripts"
d4="$builddir/src"

d1_list=$(find "$d1" -type d -a ! \( \( -name CVS -o -name private \) -a -prune \) -exec echo '{}': ';')
d2_list=$(find "$d2" -type d -a ! \( \( -name CVS -o -name private \) -a -prune \) -exec echo '{}': ';')
d3_list=$(find "$d3" -type d -a ! \( \( -name CVS -o -name private \) -a -prune \) -exec echo '{}': ';')
d4_list=$(find "$d4" -type d -a ! \( \( -name CVS -o -name private \) -a -prune \) -exec echo '{}': ';')

d1_path=$(echo "$d1_list" | $AWK '{ s = sprintf ("%s%s", s, $0); } END { sub (/:$/, "", s); print s; }')
d2_path=$(echo "$d2_list" | $AWK '{ s = sprintf ("%s%s", s, $0); } END { sub (/:$/, "", s); print s; }')
d3_path=$(echo "$d3_list" | $AWK '{ s = sprintf ("%s%s", s, $0); } END { sub (/:$/, "", s); print s; }')
d4_path=$(echo "$d4_list" | $AWK '{ s = sprintf ("%s%s", s, $0); } END { sub (/:$/, "", s); print s; }')

LOADPATH="$d1_path:$d2_path:$d3_path:$d4_path"
IMAGEPATH="$top_srcdir/scripts/image"
INFOFILE="$builddir/doc/interperter/octave.info"

args="--no-initial-path --path=\"$LOADPATH\" --image-path=\"$IMAGEPATH\" --info-file=\"$INFOFILE\""

if [ $# -gt 0 ]; then
  if [ "x$1" = "x-g" ]; then
    driver="gdb"
    if [ $(/bin/pwd) = "$builddir" ]; then
      sed "s|^set args.*$|set args $args|" .gdbinit > .gdbinit-tmp
      mv .gdbinit-tmp .gdbinit
    fi
    args=""
    shift
  elif [ "x$1" = "x-valgrind" ]; then
    driver="valgrind --tool=memcheck"
    shift
  elif [ "x$1" = "x-strace" ]; then
    driver="strace -o octave.trace"
    shift
  fi
fi

if [ -n "$args" ]; then
  OCTAVE_SITE_INITFILE="$top_srcdir/scripts/startup/main-rcfile" \
  LD_PRELOAD="$liboctinterp $liboctave $libcruft" \
  %library_path_var%="$builddir/src:$builddir/liboctave:$builddir/libcruft:$%library_path_var%" \
    exec $driver "$builddir/src/octave" --no-initial-path --path="$LOADPATH" --image-path="$IMAGEPATH" "$@"
else
  OCTAVE_SITE_INITFILE="$top_srcdir/scripts/startup/main-rcfile" \
  LD_PRELOAD="$liboctinterp $liboctave $libcruft" \
  %library_path_var%="$builddir/src:$builddir/liboctave:$builddir/libcruft:$%library_path_var%" \
    exec $driver "$builddir/src/octave" "$@"
fi
