# -*- sh -*-
# Defines for Libtool testing environment.
# Gord Matzigkeit <gord@gnu.ai.mit.edu>, 1996

# Check that srcdir is set to an absolute path.
case "$srcdir" in
/* | [A-Za-z]:\\*) ;;
*) srcdir=`cd $srcdir && pwd` ;;
esac

progname=`echo "$0" | sed 's%^.*/%%'`

libtool="../libtool"
make="${MAKE-make}"
SHELL="${CONFIG_SHELL-/bin/sh}"

if echo a | (grep -E '(a|b)') >/dev/null 2>&1; then
  EGREP='grep -E'
else
  EGREP='egrep'
fi
if echo 'ab*c' | (grep -F 'ab*c') >/dev/null 2>&1; then
  FGREP='grep -F'
else
  FGREP='fgrep'
fi

prefix="./_inst"
if test "$need_prefix" = yes; then
  # An absolute path to a test installation directory.
  test -d $prefix || mkdir $prefix
  prefix=`cd $prefix && pwd`
else
  test -d $prefix && rm -rf $prefix
  prefix=NONE
fi

# Extract CC from the libtool configuration
eval `$libtool --config | grep '^CC='`

# Disable usage of config.site for autoconf, unless DJGPP is present.
# The DJGPP port of autoconf requires config.site, to work correctly.
if test -z "$DJGPP"; then
    CONFIG_SITE=/nonexistent
fi

# See how redirections should work.
case "$VERBOSE" in
NO | no | 0 | "")
  exec > /dev/null 2>&1
  ;;
esac

echo "=== Running $progname"
