diff options
Diffstat (limited to 'tests/defs.in')
-rw-r--r-- | tests/defs.in | 244 |
1 files changed, 244 insertions, 0 deletions
diff --git a/tests/defs.in b/tests/defs.in new file mode 100644 index 000000000..e2c0997f8 --- /dev/null +++ b/tests/defs.in @@ -0,0 +1,244 @@ +# -*- shell-script -*- +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# +# This file is part of GNU Automake. +# +# GNU Automake 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. +# +# GNU Automake 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 autoconf; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +# Defines for Automake testing environment. +# Tom Tromey <tromey@cygnus.com> + +# Ensure we are running from the right directory. +test -f ./defs || { + echo "defs: not found in current directory" 1>&2 + exit 1 +} + +# If srcdir is not set, then we are not running from `make check', be verbose. +if test -z "$srcdir"; then + test -z "$VERBOSE" && VERBOSE=x + # compute $srcdir. + srcdir=`echo "$0" | sed -e 's,/[^\\/]*$,,'` + test $srcdir = $0 && srcdir=. +fi + +# Ensure $srcdir is set correctly. +test -f $srcdir/defs.in || { + echo "$srcdir/defs.in not found, check \$srcdir" 1>&2 + exit 1 +} + +me=`echo "$0" | sed -e 's,.*[\\/],,;s/\.test$//'` + +# See how redirections should work. User can set VERBOSE to see all +# output. +test -z "$VERBOSE" && { + exec > /dev/null 2>&1 +} + +# User can override various tools used. +#est -z "$SHELL" && SHELL=/bin/sh +test -z "$PERL" && PERL='@PERL@' +test -z "$MAKE" && MAKE=make +test -z "$AUTOCONF" && AUTOCONF="@AUTOCONF@" +test -z "$AUTOHEADER" && AUTOHEADER="@AUTOHEADER@" +test -z "$AUTOUPDATE" && AUTOUPDATE=autoupdate + +if test -n "$required" +then + for tool in $required + do + # Check that each required tool is present. + case $tool in + bison) + # Since bison is required, we pick YACC for ./configure. + YACC='bison -y' + export YACC + echo "$me: running bison --version" + ( bison --version ) || exit 77 + ;; + GNUmake) + echo "$me: running $MAKE --version" + ( $MAKE --version ) || 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=gcc + export CC + echo "$me: running $CC --version" + ( $CC --version ) || exit 77 + ;; + g++) + CXX=g++ + export CXX + echo "$me: running $CXX --version" + ( $CXX --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 + ;; + # Generic case: the tool must support --version. + *) + echo "$me: running $tool --version" + ( $tool --version ) || exit 77 + ;; + esac + # Additional variables to define if some $tool is required. + case $tool in + gcc) + ;; + esac + done +fi + +# 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 + +chmod -R a+rwx testSubDir > /dev/null 2>&1 +rm -rf testSubDir > /dev/null 2>&1 +mkdir testSubDir + +# Copy in some files we need. +for file in install-sh mkinstalldirs 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. +cat > configure.in << END +AC_INIT([$me], [1.0]) +AM_INIT_AUTOMAKE +AC_PROG_INSTALL +AC_PROG_MAKE_SET +AC_CONFIG_FILES([Makefile]) +END + +# Unset some MAKE... 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 +unset MAKEFLAGS +unset MAKELEVEL +unset DESTDIR + +echo "=== Running test $0" + +# 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. +if test -z "$AUTOMAKE"; then + perllibdir=$srcdir/../lib + export perllibdir + # 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 + AUTOMAKE="$PERL `pwd`/../../automake --libdir=$srcdir/../lib --foreign -Werror -Wall" +fi + +# See how aclocal should be run. +if test -z "$ACLOCAL"; then + perllibdir=$srcdir/../lib + export perllibdir + # Most of the files are in $srcdir/../m4. However amversion.m4 is + # generated in ../m4, so we include that directory in the search + # path too. + ACLOCAL="$PERL `pwd`/../../aclocal -I `pwd`/../../m4 --acdir=$srcdir/../m4" +fi + +# We might need extra macros, e.g., from Libtool or Gettext. +# Find them on the system. +# Use `-I $srcdir/../m4' in addition to `--acdir', because the +# other `-I' directories added for libtool and gettext might contain +# files from an old version of Automake that we don't want to use. +aclocaldir=`(aclocal --print-ac-dir) 2>/dev/null` +extra_includes="" +if [ -f $aclocaldir/dirlist ] ; then + extra_includes=`(tmp_inc="" + while read LINE ; do + tmp_inc="$tmp_inc -I $LINE" + done + echo $tmp_inc) < $aclocaldir/dirlist` +fi +case $required in + *libtool* ) + libtool_found=no + for d in $extra_includes $aclocaldir ; do + if [ "x$d" != "x-I" ] && [ -f "$d/libtool.m4" ] ; then + libtool_found=yes + fi + done + test "x$libtool_found" = "xyes" || exit 77 + ACLOCAL="$ACLOCAL -I $srcdir/../m4 $extra_includes -I $aclocaldir" + ;; + *gettext* ) + gettext_found=no + for d in $extra_includes $aclocaldir ; do + if [ "x$d" != "x-I" ] && [ -f "$d/gettext.m4" ] ; then + gettext_found=yes + fi + done + test "x$gettext_found" = "xyes" || exit 77 + ACLOCAL="$ACLOCAL -I $srcdir/../m4 $extra_includes -I $aclocaldir" + ;; +esac + +# Export AUTOMAKE and ACLOCAL so that rebuild rules in Makefiles +# generated for the tests do not use the installed tools. +export AUTOMAKE ACLOCAL + +# POSIX no longer requires 'egrep' and 'fgrep', +# but some hosts lack 'grep -E' and 'grep -F'. +EGREP='@EGREP@' +FGREP='@FGREP@' + +# The tests call `make -e' but we do not want $srcdir from the evironment +# to override the definition from the Makefile. +testsrcdir=$srcdir +unset srcdir + +# Turn on shell traces when VERBOSE=x. +if test "x$VERBOSE" = xx; then + set -x +else + : +fi +pwd |