# -*- shell-script -*-
# @configure_input@
#
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
# 2005, 2006, 2007, 2008, 2009, 2011 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
# Defines for Automake testing environment.
# Tom Tromey
# Be more Bourne compatible.
# (Snippet copied from configure's initialization in Autoconf 2.64)
DUALCASE=1; export DUALCASE # for MKS sh
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
emulate sh
NULLCMD=:
# Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
else
case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
fi
# A single whitespace character.
sp=' '
# A tabulation character.
tab=' '
# A newline character.
nl='
'
# As autoconf-generated configure scripts do, ensure that IFS
# is defined initially, so that saving and restoring $IFS works.
IFS=$sp$tab$nl
# Ensure we are running from the right directory.
test -f ./defs || {
echo "defs: not found in current directory" 1>&2
exit 1
}
if test -z "$srcdir"; then
# compute $srcdir.
srcdir=`echo "$0" | sed -e 's,/[^\\/]*$,,'`
test "$srcdir" = $0 && srcdir=.
else :; fi
# Ensure $srcdir is set correctly.
test -f "$srcdir/defs.in" || {
echo "$srcdir/defs.in not found, check \$srcdir" 1>&2
exit 1
}
# The name of the current test (without the `.test' suffix).
# Test scripts can override it if they need to (but this should
# be done carefully, and *before* including ./defs).
if test -z "$me"; then
me=`echo "$0" | sed -e 's,.*[\\/],,;s/\.test$//'`
elif env | grep '^me=' >/dev/null; then
echo "$0: variable \`me' is set in the environment: this is unsafe" >&2
exit 99
fi
# Check that the environment is properly sanitized.
for var in required parallel_tests; do
if env | grep "^$var=" >/dev/null; then
echo "$me: variable \`$var' is set in the environment:" \
"this is unsafe" >&2
exit 99
fi
done
unset var
# This might be used in testcases checking distribution-related features.
# Test scripts are free to override this if they need to.
distdir=$me-1.0
APIVERSION='@APIVERSION@'
PATH_SEPARATOR='@PATH_SEPARATOR@'
# Make sure we override the user shell.
SHELL='@SHELL@'
export SHELL
# User can override various tools used.
MAKE=${AM_TESTSUITE_MAKE-${MAKE-'make'}}
test -z "$PERL" && PERL='@PERL@'
test -z "$AUTOCONF" && AUTOCONF="@am_AUTOCONF@"
test -z "$AUTOM4TE" && AUTOM4TE="@am_AUTOM4TE@"
test -z "$AUTORECONF" && AUTORECONF="@am_AUTORECONF@"
test -z "$AUTOHEADER" && AUTOHEADER="@am_AUTOHEADER@"
test -z "$AUTOUPDATE" && AUTOUPDATE="@am_AUTOUPDATE@"
test -z "$MISSING" && MISSING=`pwd`/../lib/missing
# This is a hack to seamlessly support the infamous "autoconf wrappers",
# that might dispatch different autoconf versions depending on the name
# of the input files and/or the command-line options used. See:
#
# FIXME: in the long run, the better fix will be to convert our testsuite
# to use `configure.ac' instead of `configure.in' as autoconf input.
AUTOCONF="$AUTOCONF -B /no/such/dir"
AUTOM4TE="$AUTOM4TE -B /no/such/dir"
AUTORECONF="$AUTORECONF -B /no/such/dir"
# Use -Werror because this also turns some Perl warnings into error.
# (Tests for which this is inappropriate should use -Wno-error.)
test -z "$ACLOCAL" && ACLOCAL="aclocal-$APIVERSION -Werror"
# See how Automake should be run. We put --foreign as the default
# strictness to avoid having to create lots and lots of files. A test
# can override this by specifying a different strictness. Use -Wall
# -Werror by default. Tests for which this is inappropriate
# (e.g. when testing that a warning is enabled by a specific switch)
# should use -Wnone or/and -Wno-error
test -z "$AUTOMAKE" && AUTOMAKE="automake-$APIVERSION --foreign -Werror -Wall"
PATH="`pwd`$PATH_SEPARATOR$PATH"
echo "$PATH"
# Some shells forget to export modified environment variables.
# (See note about `export' in the Autoconf manual.)
export PATH
# We use a trap below for cleanup. This requires us to go through
# hoops to get the right exit status transported through the signal.
# So use `Exit STATUS' instead of `exit STATUS' inside of the tests.
# Turn off errexit here so that we don't trip the bug with OSF1/Tru64
# sh inside this function.
Exit ()
{
set +e
(exit $1)
exit $1
}
# Print warnings (e.g., about skipped and failed tests) to this file
# number. Override by putting, say:
# stderr_fileno_=9; export stderr_fileno_; exec 9>&2;
# in the definition of AM_TESTS_ENVIRONMENT.
# This is useful when using automake's parallel tests mode, to print the
# reason for skip/failure to console, rather than to the *.log files.
: ${stderr_fileno_=2}
# Copied from Gnulib's `tests/init.sh'.
warn_ () { echo "$@" 1>&$stderr_fileno_; }
fail_ () { warn_ "$me: failed test: $@"; Exit 1; }
skip_ () { warn_ "$me: skipped test: $@"; Exit 77; }
fatal_ () { warn_ "$me: hard error: $@"; Exit 99; }
framework_failure_ () { warn_ "$me: set-up failure: $@"; Exit 99; }
# cross_compiling
# ---------------
# Tell whether we are cross-compiling. This is especially useful to skip
# tests (or portions of them) that requires a native compiler.
cross_compiling ()
{
test x"$host_alias" != x
}
# So that we can force the use of correct gcc, g++ etc., consistently
# with cross-compilation settings.
if cross_compiling; then
am__tool_prefix="$host_alias-"
else
am__tool_prefix=
fi
for tool in : $required
do
# Check that each required tool is present.
case $tool in
:) ;;
bison|yacc)
# Since bison is required, we pick YACC for ./configure.
YACC='bison -y'
export YACC
echo "$me: running bison --version"
( bison --version ) || exit 77
;;
flex|lex)
# Since flex is required, we pick LEX for ./configure.
LEX=flex
export LEX
echo "$me: running flex --version"
flex --version || exit 77
;;
cc|c++|fortran|fortran77)
echo "$me: dummy requirement '$tool', no check done"
;;
bzip2)
# Do not use --version, bzip2 still tries to compress stdin.
echo "$me: running bzip2 --help"
( bzip2 --help ) || exit 77
;;
cl)
CC=cl
export CC
echo "$me: running $CC -?"
( $CC -? ) || exit 77
;;
etags)
# Exuberant Ctags will create a TAGS file even
# when asked for --help or --version. (Emacs's etags
# does not have such problem.) Use -o /dev/null
# to make sure we do not pollute the tests/ directory.
echo "$me: running etags --version -o /dev/null"
( etags --version -o /dev/null ) || exit 77
;;
GNUmake)
# Use --version AND -v, because SGI Make doesn't fail on --version.
# Also grep for GNU because newer versions of FreeBSD make do
# not complain about `--version' (they seem to silently ignore it).
echo "$me: running $MAKE --version -v | grep GNU"
( $MAKE --version -v | grep GNU ) || exit 77
;;
gcc)
# When gcc is required, export `CC=gcc' so that ./configure
# always use it. This is important only when the user
# has defined CC in his environment, otherwise ./configure will
# prefer gcc to other compilers.
CC=${am__tool_prefix}gcc
export CC
echo "$me: running $CC --version"
( $CC --version ) || exit 77
;;
gcj)
GCJ=${am__tool_prefix}gcj
export GCJ
echo "$me: running $GCJ --version"
( $GCJ --version ) || exit 77
( $GCJ -v ) || exit 77
;;
g++)
CXX=${am__tool_prefix}g++
export CXX
echo "$me: running $CXX --version"
( $CXX --version ) || exit 77
;;
gfortran)
FC=${am__tool_prefix}gfortran
export FC
echo "$me: running $FC --version"
$FC --version || skip_ "GNU Fortran compiler not available"
echo "$me: running $FC -v"
$FC -v || skip_ "botched installation for GNU Fortran compiler"
case " $required " in
*\ g77\ *) ;;
*) F77=$FC; export F77;;
esac
;;
g77)
F77=${am__tool_prefix}g77
export F77
echo "$me: running $F77 --version"
$F77 --version || skip_ "GNU Fortran 77 compiler not available"
echo "$me: running $F77 -v"
$F77 -v || skip_ "botched installation for GNU Fortran 77 compiler"
case " $required " in
*\ gfortran\ *) ;;
*) FC=$F77; export FC;;
esac
;;
icc)
CC=icc
export CC
# There is no way to ask *only* the compiler's version.
# This tool always wants to do something (by default
# it will try link *nothing* and complain it cannot find
# main(); funny). Use -help so it does not try linking anything.
echo "$me: running $CC -V -help"
( $CC -V -help ) || exit 77
;;
javac)
# The Java compiler from JDK 1.5 (and presumably earlier versions)
# cannot handle the `-version' option by itself: it bails out
# telling that source files are missing. Adding also the `-help'
# option seems to solve the problem.
echo "$me: running javac -version -help"
javac -version -help || exit 77
;;
lib)
AR=lib
export AR
# Attempting to create an empty archive will actually not
# create the archive, but lib will output its version.
echo "$me: running $AR -out:defstest.lib"
$AR -out:defstest.lib || skip_ "Microsoft \`lib' utility not available"
;;
makedepend)
echo "$me: running makedepend -f-"
( makedepend -f- ) || exit 77
;;
makeinfo-html)
# Make sure makeinfo understands --html.
echo "$me: running makeinfo --html --version"
( makeinfo --html --version ) || exit 77
;;
non-root)
# Skip this test case if the user is root.
# We try to append to a read-only file to detect this.
priv_check_temp=priv-check.$$
touch $priv_check_temp || exit 1
chmod a-w $priv_check_temp || exit 1
(echo foo >> $priv_check_temp) >/dev/null 2>&1
overwrite_status=$?
rm -f $priv_check_temp
test $overwrite_status = 0 && exit 77
;;
native)
cross_compiling && skip_ "doesn't work in cross-compile mode"
;;
python)
# Python doesn't support --version, it has -V
echo "$me: running python -V"
( python -V ) || exit 77
;;
ro-dir)
# Skip this test case if read-only directories aren't supported
# (e.g., under DOS.)
ro_dir_temp=ro_dir.$$
mkdir $ro_dir_temp || exit 1
chmod a-w $ro_dir_temp || exit 1
(: > $ro_dir_temp/probe) >/dev/null 2>/dev/null
create_status=$?
rm -rf $ro_dir_temp
test $create_status = 0 && exit 77
;;
rst2html)
# Try the variants that are tried in check.am.
while :; do
for r2h in $RST2HTML rst2html rst2html.py; do
echo "$me: running $r2h --version"
$r2h --version && break 2
done
exit 77
done
;;
runtest)
# DejaGnu's runtest program. We rely on being able to specify
# the program on the runtest command-line. This requires
# DejaGnu 1.4.3 or later.
echo "$me: running runtest --version"
(runtest SOMEPROGRAM=someprogram --version) || exit 77
;;
tex)
# No all versions of Tex support `--version', so we use
# a configure check.
test -n "@TEX@" || exit 77
;;
texi2dvi-o)
# Texi2dvi supports `-o' since Texinfo 4.1.
echo "$me: running texi2dvi -o /dev/null --version"
( texi2dvi -o /dev/null --version ) || exit 77
;;
xsi-shell)
# Try some XSI features.
echo "$me: trying some XSI constructs"
( _am_dummy="a/b/c"
test "${_am_dummy##*/},${_am_dummy%/*},${_am_dummy#??}"${_am_dummy%"$_am_dummy"}, \
= c,a/b,b/c, \
&& eval 'test $(( 1 + 1 )) -eq 2 \
&& test "${#_am_dummy}" -eq 5' ) || exit 77
;;
# Generic case: the tool must support --version.
*)
echo "$me: running $tool --version"
( $tool --version ) || exit 77
;;
esac
done
# Always use an absolute srcdir. Otherwise symlinks made in subdirs
# of the test dir just won't work.
case "$srcdir" in
[\\/]* | ?:[\\/]*)
;;
*)
srcdir=`CDPATH=: && cd "$srcdir" && pwd`
;;
esac
curdir=`pwd`
testSubDir=$me.dir
test ! -d $testSubDir || {
find $testSubDir -type d ! -perm -700 -exec chmod u+rwx {} ";"
rm -rf $testSubDir
}
mkdir $testSubDir
sh_errexit_works=@sh_errexit_works@
if test "$sh_errexit_works" = yes; then
trap 'exit_status=$?
set +e
cd "$curdir"
case $exit_status,$keep_testdirs in
0,)
find $testSubDir -type d ! -perm -700 -exec chmod u+rwx {} ";"
rm -rf $testSubDir
;;
esac
test "$signal" != 0 &&
echo "$me: caught signal $signal"
echo "$me: exit $exit_status"
exit $exit_status
' 0
for signal in 1 2 13 15; do
trap 'signal='$signal'; { Exit 1; }' $signal
done
fi
signal=0
# Copy in some files we need.
for file in install-sh missing depcomp; do
cp "$srcdir/../lib/$file" "$testSubDir/$file" || Exit 1
done
cd ./$testSubDir
# Build appropriate environment in test directory. Eg create
# configure.in, touch all necessary files, etc.
# Don't use AC_OUTPUT, but AC_CONFIG_FILES so that appending
# still produces a valid configure.ac. But then, tests running
# config.status really need to append AC_OUTPUT.
{
echo "AC_INIT([$me], [1.0])"
if test x"$parallel_tests" = x"yes"; then
echo "AM_INIT_AUTOMAKE([parallel-tests])"
else
echo "AM_INIT_AUTOMAKE"
fi
echo "AC_CONFIG_FILES([Makefile])"
} >configure.in
# Unset some make-related variables that may cause $MAKE to act like
# a recursively invoked sub-make. Any $MAKE invocation in a test is
# conceptually an independent invocation, not part of the main
# 'automake' build.
unset MFLAGS MAKEFLAGS AM_MAKEFLAGS MAKELEVEL
unset __MKLVL__ MAKE_JOBS_FIFO # For BSD make.
unset DMAKE_CHILD DMAKE_DEF_PRINTED DMAKE_MAX_JOBS # For Solaris dmake.
# Unset verbosity flag.
unset V
# Also unset variables that will let `make -e install' divert
# files into unwanted directories.
unset DESTDIR
unset prefix exec_prefix bindir datarootdir datadir docdir dvidir
unset htmldir includedir infodir libdir libexecdir localedir mandir
unset oldincludedir pdfdir psdir sbindir sharedstatedir sysconfdir
# Unset variables that might change the "make distcheck" behaviour.
unset DISTCHECK_CONFIGURE_FLAGS AM_DISTCHECK_CONFIGURE_FLAGS
# Also unset variables that control our test driver. While not
# conceptually independent, they cause some changed semantics we
# need to control (and test for) in some of the tests to ensure
# backward-compatible behavior.
unset TESTS_ENVIRONMENT AM_TESTS_ENVIRONMENT
unset DISABLE_HARD_ERRORS
unset AM_COLOR_TESTS
unset TESTS
unset TEST_LOG_COMPILER
unset TEST_LOGS
unset RECHECK_LOGS
unset VERBOSE
echo "=== Running test $0"
# We might need extra macros, e.g., from Libtool or Gettext.
case " $required " in *\ libtool*) . ../libtool-macros.dir/get.sh;; esac
case " $required " in *\ gettext*) . ../gettext-macros.dir/get.sh;; esac
testaclocaldir='@abs_top_srcdir@/m4'
# POSIX no longer requires 'egrep' and 'fgrep',
# but some hosts lack 'grep -E' and 'grep -F'.
EGREP='@EGREP@'
FGREP='@FGREP@'
# The amount we should wait after modifying files depends on the platform.
# For instance, Windows '95, '98 and ME have 2-second granularity
# and can be up to 3 seconds in the future w.r.t. the system clock.
sleep='sleep @MODIFICATION_DELAY@'
# The tests call `make -e' but we do not want $srcdir from the environment
# to override the definition from the Makefile.
testsrcdir=$srcdir
unset srcdir
# An old timestamp that can be given to a file, in "touch -t" format.
# The time stamp should be portable to all file systems of interest.
# Just for fun, choose the exact time of the announcement of the GNU project
# in UTC; see .
old_timestamp=198309271735.59
# is_newest FILE FILES
# --------------------
# Return false if any file in FILES is newer than FILE.
# Resolve ties in favor of FILE.
is_newest ()
{
is_newest_files=`find "$@" -prune -newer "$1"`
test -z "$is_newest_files"
}
# using_gmake
# -----------
# Return success if $MAKE is GNU make, return failure otherwise.
# Caches the result for speed reasons.
using_gmake ()
{
case $am__using_gmake in
yes)
return 0;;
no)
return 1;;
'')
# Use --version AND -v, because SGI Make doesn't fail on --version.
# Also grep for GNU because newer versions of FreeBSD make do
# not complain about `--version' (they seem to silently ignore it).
if $MAKE --version -v | grep GNU; then
am__using_gmake=yes
return 0
else
am__using_gmake=no
return 1
fi;;
*)
fatal_ "invalid value for \$am__using_gmake: '$am__using_gmake'";;
esac
}
am__using_gmake="" # Avoid interferences from the environment.
# AUTOMAKE_run status [options...]
# --------------------------------
# Run Automake with OPTIONS, and fail if automake
# does not exit with STATUS.
AUTOMAKE_run ()
{
expected_exitcode=$1
shift
exitcode=0
$AUTOMAKE ${1+"$@"} >stdout 2>stderr || exitcode=$?
cat stderr >&2
cat stdout
test $exitcode = $expected_exitcode || Exit 1
}
# AUTOMAKE_fails [options...]
# ---------------------------
# Run Automake with OPTIONS, and fail if automake
# does not exit with STATUS.
AUTOMAKE_fails ()
{
AUTOMAKE_run 1 ${1+"$@"}
}
commented_sed_unindent_prog='
/^$/b # Nothing to do for empty lines.
x # Get x into pattern space.
/^$/{ # No prior x, go prepare it.
g # Copy this 1st non-blank line into pattern space.
s/^\(['"$tab"' ]*\).*/x\1/ # Prepare x in pattern space.
} # Now: x in pattern and in hold.
G # Build x\n in pattern space, and
h # duplicate it into hold space.
s/\n.*$// # Restore x in pattern space, and
x # exchange with the above duplicate in hold space.
s/^x\(.*\)\n\1// # Remove leading from .
s/^x.*\n// # Restore when there is no leading .
'
# unindent [input files...]
# -------------------------
# Remove the "proper" amount of leading whitespace from the given files,
# and output the result on stdout. That amount is determined by looking
# at the leading whitespace of the first non-blank line in the input
# files. If no input file is specified, standard input is implied.
unindent ()
{
if test x"$sed_unindent_prog" = x; then
sed_unindent_prog=`printf '%s\n' "$commented_sed_unindent_prog" | sed -e "s/ *# .*//"`
fi
sed "$sed_unindent_prog" ${1+"$@"}
}
sed_unindent_prog="" # Avoid interferences from the environment.
# Turn on shell traces.
set -x
pwd