libtool/tests/defs.in

305 lines
7.3 KiB
Plaintext
Raw Normal View History

m4_define([_m4_divert(SCRIPT)], 100)
m4_divert_push([SCRIPT])# @configure_input@
# defs -- Defines for Libtool testing environment.
1997-04-02 03:18:28 +08:00
# Gord Matzigkeit <gord@gnu.ai.mit.edu>, 1996
2003-10-15 05:46:13 +08:00
# Gary V. Vaughan <gary@gnu.org>, 2003
1997-04-02 03:18:28 +08:00
# Copyright (C) 2003, 2004 Free Software Foundation, Inc.
# This is free software; see the source for copying conditions. There is NO
# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# 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 of the License, 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, a copy can be downloaded from
# http://www.gnu.org/copyleft/gpl.html, or by writing to the Free
# Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
# MA 02111-1307, USA.
AS_SHELL_SANITIZE
$as_unset CDPATH
m4_include([general.m4sh])
: ${AUTOCONF="autoconf"}
: ${LIBTOOL="../libtool"}
: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
# Sed that helps us avoid accidentally triggering echo(1) options like -n.
Xsed="$SED -e s/^X//"
# 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
1997-04-02 03:18:28 +08:00
# See how redirections should work.
2003-10-15 05:46:13 +08:00
test "${VERBOSE+set}" != "set" && VERBOSE=no
1997-04-02 03:53:01 +08:00
case "$VERBOSE" in
NO | no | 0 | "")
exec > /dev/null 2>&1
;;
esac
1997-04-02 03:18:28 +08:00
Since defs can change (path to grep for example) when it is made for a different host, it can't be shipped. That also means that defs will always be generated in the build tree, so each test case can have the srcdir discovery factored away into tests/defs.in: * Makefile.am (EXTRA_DIST): s/defs/defs.in/g * tests/Makefile.am (defs): New rule to remake defs from the parent directory's Makefile. * tests/cdemo-conf.test, tests/cdemo-exec.test, tests/cdemo-make.test, tests/cdemo-shared.test, tests/cdemo-static.test, tests/demo-conf.test, tests/demo-deplibs.test, tests/demo-exec.test, tests/demo-hardcode.test, tests/demo-inst.test, tests/demo-make.test, tests/demo-nofast.test, tests/demo-noinst-link.test, tests/demo-nopic.test, tests/demo-pic.test, tests/demo-relink.test, tests/demo-shared.test, tests/demo-static.test, tests/demo-unst.test, tests/depdemo-conf.test, tests/depdemo-exec.test, tests/depdemo-inst.test, tests/depdemo-make.test, tests/depdemo-nofast.test, tests/depdemo-relink.test, tests/depdemo-shared.test, tests/depdemo-static.test, tests/depdemo-unst.test, tests/f77demo-conf.test, tests/f77demo-exec.test, tests/f77demo-make.test, tests/f77demo-shared.test, tests/f77demo-static.test, tests/link-2.test, tests/link.test, tests/mdemo-conf.test, tests/mdemo-dryrun.test, tests/mdemo-exec.test, tests/mdemo-inst.test, tests/mdemo-make.test, tests/mdemo-shared.test, tests/mdemo-static.test, tests/mdemo-unst.test, tests/mdemo2-conf.test, tests/mdemo2-exec.test, tests/mdemo2-make.test, tests/nomode.test, tests/pdemo-conf.test, tests/pdemo-exec.test, tests/pdemo-inst.test, tests/pdemo-make.test, tests/quote.test, tests/sh.test, tests/suffix.test, tests/tagdemo-conf.test, tests/tagdemo-exec.test, tests/tagdemo-make.test, tests/tagdemo-shared.test, tests/tagdemo-static.test, tests/tagtrace.test: Removed srcdir discovery boilerplate... * tests/defs.in: ...and put it here.
2004-09-23 21:07:15 +08:00
if test -z "$srcdir"; then
srcdir=`$ECHO "X$0" | $Xsed -e "$dirname"`
Since defs can change (path to grep for example) when it is made for a different host, it can't be shipped. That also means that defs will always be generated in the build tree, so each test case can have the srcdir discovery factored away into tests/defs.in: * Makefile.am (EXTRA_DIST): s/defs/defs.in/g * tests/Makefile.am (defs): New rule to remake defs from the parent directory's Makefile. * tests/cdemo-conf.test, tests/cdemo-exec.test, tests/cdemo-make.test, tests/cdemo-shared.test, tests/cdemo-static.test, tests/demo-conf.test, tests/demo-deplibs.test, tests/demo-exec.test, tests/demo-hardcode.test, tests/demo-inst.test, tests/demo-make.test, tests/demo-nofast.test, tests/demo-noinst-link.test, tests/demo-nopic.test, tests/demo-pic.test, tests/demo-relink.test, tests/demo-shared.test, tests/demo-static.test, tests/demo-unst.test, tests/depdemo-conf.test, tests/depdemo-exec.test, tests/depdemo-inst.test, tests/depdemo-make.test, tests/depdemo-nofast.test, tests/depdemo-relink.test, tests/depdemo-shared.test, tests/depdemo-static.test, tests/depdemo-unst.test, tests/f77demo-conf.test, tests/f77demo-exec.test, tests/f77demo-make.test, tests/f77demo-shared.test, tests/f77demo-static.test, tests/link-2.test, tests/link.test, tests/mdemo-conf.test, tests/mdemo-dryrun.test, tests/mdemo-exec.test, tests/mdemo-inst.test, tests/mdemo-make.test, tests/mdemo-shared.test, tests/mdemo-static.test, tests/mdemo-unst.test, tests/mdemo2-conf.test, tests/mdemo2-exec.test, tests/mdemo2-make.test, tests/nomode.test, tests/pdemo-conf.test, tests/pdemo-exec.test, tests/pdemo-inst.test, tests/pdemo-make.test, tests/quote.test, tests/sh.test, tests/suffix.test, tests/tagdemo-conf.test, tests/tagdemo-exec.test, tests/tagdemo-make.test, tests/tagdemo-shared.test, tests/tagdemo-static.test, tests/tagtrace.test: Removed srcdir discovery boilerplate... * tests/defs.in: ...and put it here.
2004-09-23 21:07:15 +08:00
test "$srcdir" = "$0" && srcdir=.
fi
2003-10-15 05:46:13 +08:00
# func_msg arg...
# Echo message with prefix.
func_msg ()
{
func_echo "=== " ${1+"$@"}
2003-10-15 05:46:13 +08:00
}
# func_skip arg...
# Echo message to standard error, and skip the rest of this test.
func_skip ()
{
func_error ${1+"$@"}
exit $EXIT_SKIP
}
# func_fail arg...
# Echo message to standard error, and fail this test.
func_fail ()
{
func_fatal_error ${1+"$@"}
2003-10-15 05:46:13 +08:00
}
# func_get_config varname_list src [failp] [regex]
func_get_config ()
{
my_varname_list="$1"
my_src="$2"
my_failp="false"; test -z "$3" || my_failp=:
my_regex="$4"
my_exitp=false
for my_varname in $my_varname_list; do
test -z "$4" && my_regex="^${my_varname}="
eval $my_varname=NONE
eval `eval $my_src | eval $GREP \"$my_regex\"`
2003-10-15 05:46:13 +08:00
if eval test x\"\$$my_varname\" = xNONE; then
func_error "$my_varname not set in \`$my_src'"
$my_failp && my_exitp=:
fi
done
$my_exitp && exit $EXIT_FAILURE
}
# Extract objext from the libtool configuration
func_get_config "objext" "$LIBTOOL --config" ": fatal"
2003-10-15 05:46:13 +08:00
# Extract objdir from the libtool configuration
func_get_config "objdir" "$LIBTOOL --config" ": fatal"
2003-10-15 05:46:13 +08:00
# Extract CC from the libtool configuration
func_get_config "CC" "$LIBTOOL --config" ": fatal"
2003-10-15 05:46:13 +08:00
# Extract host from the libtool configuration
func_get_config "host" "$LIBTOOL --config" ": fatal"
2003-10-15 05:46:13 +08:00
# func_mkprefixdir
func_mkprefixdir ()
{
# An absolute path to a test installation directory.
func_mkdir_p "$prefix"
prefix=`cd $prefix && pwd`
}
# func_rmprefixdir
func_rmprefixdir ()
{
test -d $prefix && rm -rf $prefix
prefix=NONE
}
# func_cd dir
# Make sure a directory exists, and then change to it.
func_cd ()
{
my_dir="$1"
# Maybe we have a VPATH build, in which case, create a new subdir.
func_mkdir_p "$my_dir"
# Change to our build directory.
cd "$my_dir" || func_fatal_error "couldn't cd to \`$my_dir'"
2003-10-15 05:46:13 +08:00
}
# func_require prereq file [...]
# If FILE does not exist, give a fatal error regarding running PREREQ first.
func_require ()
{
my_prereq="$1"; shift
my_files=${1+"$@"}
for my_file in $my_files; do
test -f "$my_file" \
|| func_skip "You must run ${my_prereq}.test before running $0"
done
}
# func_configure [args ...]
# Configure the demonstration.
func_configure ()
{
my_args=${1+"$@"}
my_dir=`pwd | $SED "$basename"`
2003-10-15 05:46:13 +08:00
my_testdir="$srcdir/$my_dir"
test -n "$my_args" && my_args=" $my_args"
my_args="--srcdir="\""$my_testdir"\"" --prefix="\""$prefix"\""$my_args"
func_msg "Configuring in $my_dir"
test -f "$my_testdir/configure" || autoreconf --force --install $my_testdir
test -f "$my_testdir/configure" || exit $EXIT_FAILURE
eval func_msg $SHELL "$my_testdir/configure" $my_args
eval $SHELL "$my_testdir/configure" $my_args || \
{ func_msg "FAILED: Configuring in $my_testdir"
ls -ltr $my_testdir
eval $SHELL -vx "$my_testdir/configure" $my_args;
exit $EXIT_FAILURE;
}
2003-10-15 05:46:13 +08:00
}
# func_check_static_shared staticp sharedp
# Determine whether the generated libtool script is configured properly
# for the expected STATICP and SHAREDP library building
func_check_static_shared ()
{
my_staticp="$1"
my_sharedp="$2"
if func_grep "^build_old_libs=$staticp" libtool &&
func_grep "^build_libtool_libs=$sharedp" libtool; then :
else
rm -f Makefile
exit $EXIT_FAIL
fi
}
# func_make [args ...]
# Do the actual build.
func_make ()
{
my_args=${1+"$@"}
my_dir=`pwd | $SED "$basename"`
2003-10-15 05:46:13 +08:00
func_msg "Running \`$MAKE $my_args' in $my_dir"
2003-10-15 05:46:13 +08:00
eval $MAKE $my_args || exit $EXIT_FAIL
2003-10-15 05:46:13 +08:00
}
# func_distclean
# Possibly clean up the distribution.
func_make_distclean ()
{
if test -f Makefile; then
func_make distclean
fi
rm -rf autom4te.cache config.cache
}
# func_make_uninstall
# See that there were no files leftover in $prefix.
# Ignore dotfiles, so that .nfsXXX files don't screw up the test.
func_make_uninstall ()
{
func_make uninstall
leftovers=`find $prefix ! -type d ! -name '.*' -print`
if test -n "$leftovers"; then
func_msg "Leftover after make uninstall:"
ls -l $leftovers
exit 1
fi
}
# func_exec_init mode
func_exec_init ()
{
func_msg "Executing $1 programs in $my_dir"
# Windows hosts search for dlls in the command path
PATH=$prefix/lib:$PATH
exec_status=$EXIT_SUCCESS
}
# func_exec_check program [msg ...]
# Check to see if PROGRAM was built. If not display MSG.
func_exec_check ()
{
my_program="$1"
if test -f "$my_program"; then :
else
shift
func_error "$0: $my_program did not build ${1+$@}"
exec_status=$EXIT_FAILURE
fi
}
# func_exec program [exp_output] [msg ...]
# Check to see if PROGRAM really runs, and produces EXP_OUTPUT if given.
# If not display MSG.
func_exec ()
{
my_program="$1"
my_exp_output="$2"
my_dir=`pwd | $SED "$basename"`
2003-10-15 05:46:13 +08:00
test -n "$my_exp_output" \
&& my_exp_output="| $EGREP -e "\""$my_exp_output"\"
if eval $my_program $my_exp_output; then :
else
shift; shift
func_error "$0: cannot execute $my_program ${1+$@}"
# Simple check to see if they are superuser.
if test $exec_status = $EXIT_FAILURE || test -w /; then :
else
func_msg "You may need to run $0 as the superuser."
fi
exec_status=$EXIT_FAILURE
fi
}
# Shared global variables for test scripts
prefix="./_inst"
srcdir=`cd $srcdir && pwd`
scripts="$srcdir/config/ltmain.sh ../libtoolize"
func_msg "Running $progname"
# Local Variables:
# mode:shell-script
# sh-indentation:2
# End: