1997-04-02 03:18:28 +08:00
|
|
|
# -*- sh -*-
|
|
|
|
# Defines for Libtool testing environment.
|
|
|
|
# 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
|
|
|
|
2004-06-24 20:21:41 +08:00
|
|
|
# See if we are running on zsh, and set the options which allow our
|
|
|
|
# commands through without removal of \ escapes.
|
|
|
|
if test -n "${ZSH_VERSION+set}" ; then
|
|
|
|
setopt NO_GLOB_SUBST
|
|
|
|
fi
|
|
|
|
|
1997-04-02 03:18:28 +08:00
|
|
|
# Check that srcdir is set to an absolute path.
|
|
|
|
case "$srcdir" in
|
1998-02-17 04:13:54 +08:00
|
|
|
/* | [A-Za-z]:\\*) ;;
|
1997-04-02 03:18:28 +08:00
|
|
|
*) srcdir=`cd $srcdir && pwd` ;;
|
|
|
|
esac
|
|
|
|
|
2003-10-15 05:46:13 +08:00
|
|
|
sed_basename='s,^.*/,,g'
|
|
|
|
sed_dirname='s,/[^/]*$,,'
|
|
|
|
|
|
|
|
progname=`echo "$0" | sed "$sed_basename"`
|
1997-04-02 03:53:01 +08:00
|
|
|
|
1998-03-09 13:34:02 +08:00
|
|
|
libtool="../libtool"
|
2003-10-15 05:46:13 +08:00
|
|
|
prefix="./_inst"
|
1997-04-02 03:53:01 +08:00
|
|
|
make="${MAKE-make}"
|
2001-07-01 04:31:34 +08:00
|
|
|
SHELL="${CONFIG_SHELL-/bin/sh}"
|
2003-10-15 05:46:13 +08:00
|
|
|
MKDIR="${MKDIR-mkdir}"
|
2004-05-18 01:42:44 +08:00
|
|
|
AUTOCONF="${AUTOCONF-autoconf}"
|
1997-04-02 03:21:43 +08:00
|
|
|
|
Don't assume that egrep and fgrep exist. POSIX 1003.1-2001 no
longer requires them; you're supposed to use grep -E and grep -F
instead. Also, don't assume that "test -a" works, since POSIX
doesn't require it.
* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER, _LT_AC_LANG_C_CONFIG,
_LT_AC_LANG_CXX_CONFIG, AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE,
AC_LIBTOOL_PROG_LD_SHLIBS):
egrep -> grep, when that makes no difference.
* libtoolize.in: Likewise.
* ltdl.m4 (AC_LTDL_SYMBOL_USCORE): Likewise.
* ltmain.in: Likewise.
* demo/Makefile.am (hc-direct): Likewise.
* pdemo/Makefile.am (hc-direct): Likewise.
* tests/build-relink.test, tests/build-relink2.test,
tests/cdemo-conf.test, tests/cdemo-shared.test,
tests/cdemo-static.test, tests/demo-conf.test,
tests/demo-nofast.test, tests/demo-shared.test,
tests/demo-static.test, tests/depdemo-conf.test,
tests/depdemo-nofast.test, tests/depdemo-shared.test,
tests/depdemo-static.test, tests/hardcode.test,
tests/mdemo-conf.test, tests/mdemo-shared.test,
tests/mdemo-static.test, tests/pdemo-conf.test,
tests/tagdemo-conf.test, tests/tagdemo-shared.test,
tests/tagdemo-static.test: Likewise.
* libtool.m4 (AC_PROG_EGREP):
New macro, defined if Autoconf doesn't define.
(AC_PATH_TOOL_PREFIX, AC_PROG_LD_GNU): Use it.
(AC_PROG_LD, AC_PROG_NM, AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE):
Use shell pattern matching rather than egrep.
(AC_LIBTOOL_CONFIG): Set lt_EGREP and EGREP.
* demo/Makefile.am (SET_HARDCODE_FLAGS): Use sed instead of egrep.
* pdemo/Makefile.am (SET_HARDCODE_FLAGS): Likewise.
* tests/defs (EGREP, FGREP): New vars.
* ltmain.in: egrep -> $EGREP
* tests/assign.test, tests/demo-exec.test, tests/demo-inst.test,
tests/pdemo-exec.test, tests/pdemo-inst.test, tests/sh.test:
Likewise.
* tests/hardcode.test: fgrep -> $FGREP
* tests/f77demo-exec.test: test -a -> test &&
2002-11-19 17:42:39 +08:00
|
|
|
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
|
|
|
|
|
* Makefile.am: Define CONF_SUBDIRS.
* tests/defs: Set CONFIG_SITE to /nonexistent, except on DJGPP,
which requires its config.site, to work correctly.
* tests/cdemo-conf.test, tests/cdemo-shared.test,
tests/cdemo-static.test, tests/demo-conf.test,
tests/demo-nofast.test, tests/demo-nopic.test,
tests/demo-pic.test, tests/demo-shared.test,
tests/demo-static.test, tests/depdemo-conf.test,
tests/depdemo-nofast.test, tests/depdemo-shared.test,
tests/depdemo-static.test, tests/f77demo-conf.test,
tests/f77demo-shared.test, tests/f77demo-static.test,
tests/mdemo-conf.test, tests/mdemo-shared.test,
tests/mdemo-static.test, tests/pdemo-conf.test,
tests/tagdemo-conf.test, tests/tagdemo-shared.test,
tests/tagdemo-static.test: Don't set CONFIG_SITE, now that
tests/defs sets it.
* tests/cdemo-exec.test, tests/demo-exec.test,
tests/demo-inst.test, tests/depdemo-exec.test,
tests/depdemo-inst.test, tests/f77demo-exec.test,
tests/mdemo-exec.test, tests/mdemo-inst.test,
tests/pdemo-exec.test, tests/pdemo-inst.test,
tests/tagdemo-exec.test: When checking for the existence
of executables, use the executable file extension from $EXEEXT.
2003-03-29 13:06:46 +08:00
|
|
|
# Disable usage of config.site for autoconf, unless DJGPP is present.
|
|
|
|
# The DJGPP port of autoconf requires config.site, to work correctly.
|
2003-04-03 13:45:22 +08:00
|
|
|
if test -z "$DJGPP"; then
|
* Makefile.am: Define CONF_SUBDIRS.
* tests/defs: Set CONFIG_SITE to /nonexistent, except on DJGPP,
which requires its config.site, to work correctly.
* tests/cdemo-conf.test, tests/cdemo-shared.test,
tests/cdemo-static.test, tests/demo-conf.test,
tests/demo-nofast.test, tests/demo-nopic.test,
tests/demo-pic.test, tests/demo-shared.test,
tests/demo-static.test, tests/depdemo-conf.test,
tests/depdemo-nofast.test, tests/depdemo-shared.test,
tests/depdemo-static.test, tests/f77demo-conf.test,
tests/f77demo-shared.test, tests/f77demo-static.test,
tests/mdemo-conf.test, tests/mdemo-shared.test,
tests/mdemo-static.test, tests/pdemo-conf.test,
tests/tagdemo-conf.test, tests/tagdemo-shared.test,
tests/tagdemo-static.test: Don't set CONFIG_SITE, now that
tests/defs sets it.
* tests/cdemo-exec.test, tests/demo-exec.test,
tests/demo-inst.test, tests/depdemo-exec.test,
tests/depdemo-inst.test, tests/f77demo-exec.test,
tests/mdemo-exec.test, tests/mdemo-inst.test,
tests/pdemo-exec.test, tests/pdemo-inst.test,
tests/tagdemo-exec.test: When checking for the existence
of executables, use the executable file extension from $EXEEXT.
2003-03-29 13:06:46 +08:00
|
|
|
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
|
|
|
|
2003-10-15 05:46:13 +08:00
|
|
|
|
|
|
|
EXIT_SUCCESS=0
|
|
|
|
EXIT_FAILURE=1
|
|
|
|
EXIT_SKIP=77
|
|
|
|
|
|
|
|
# func_msg arg...
|
|
|
|
# Echo message with prefix.
|
|
|
|
func_msg ()
|
|
|
|
{
|
|
|
|
echo "=" ${1+"$@"}
|
|
|
|
}
|
|
|
|
|
|
|
|
# func_error arg...
|
|
|
|
# Echo message to standard error.
|
|
|
|
func_error ()
|
|
|
|
{
|
|
|
|
echo ${1+"$@"} 1>&2
|
|
|
|
}
|
|
|
|
|
|
|
|
# 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_error ${1+"$@"}
|
|
|
|
exit $EXIT_FAILURE
|
|
|
|
}
|
|
|
|
|
|
|
|
# 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\"`
|
|
|
|
|
|
|
|
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"
|
|
|
|
|
|
|
|
# Extract objdir from the libtool configuration
|
|
|
|
func_get_config "objdir" "$libtool --config" ": fatal"
|
|
|
|
|
|
|
|
# Extract CC from the libtool configuration
|
|
|
|
func_get_config "CC" "$libtool --config" ": fatal"
|
|
|
|
|
|
|
|
# Extract host from the libtool configuration
|
|
|
|
func_get_config "host" "$libtool --config" ": fatal"
|
|
|
|
|
|
|
|
|
|
|
|
# func_grep expression filename
|
|
|
|
# Check whether EXPRESSION matches any line of FILENAME, without output.
|
|
|
|
func_grep ()
|
|
|
|
{
|
|
|
|
grep "$1" "$2" >/dev/null 2>&1
|
|
|
|
}
|
|
|
|
|
|
|
|
# func_mkdir_p dir
|
|
|
|
# Make sure the entire path to DIR is available.
|
|
|
|
func_mkdir_p ()
|
|
|
|
{
|
|
|
|
my_dir=$1
|
|
|
|
my_dirs=
|
|
|
|
|
|
|
|
while test ! -d "$my_dir"; do
|
|
|
|
my_dirs="$my_dir $my_dirs"
|
|
|
|
case $my_dir in */*) ;; *) break ;; esac
|
|
|
|
my_dir=`echo "$my_dir" | sed "$sed_dirname"`
|
|
|
|
done
|
|
|
|
test ! -n "$my_dirs" || $MKDIR $my_dirs
|
|
|
|
}
|
|
|
|
|
|
|
|
# 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" || exit 1
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# 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 "$sed_basename"`
|
|
|
|
my_testdir="$srcdir/$my_dir"
|
|
|
|
|
|
|
|
test -n "$my_args" && my_args=" $my_args"
|
|
|
|
my_args="--srcdir="\""$my_testdir"\"" --prefix="\""$prefix"\""$my_args"
|
|
|
|
|
2003-11-24 23:26:56 +08:00
|
|
|
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 "$sed_basename"`
|
|
|
|
|
|
|
|
func_msg "Running \`$make $my_args' in $my_dir"
|
|
|
|
|
|
|
|
eval $make $my_args || exit $EXIT_FAIL
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# 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 "$sed_basename"`
|
|
|
|
|
|
|
|
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
|
|
|
|
}
|
|
|
|
|
1997-04-02 03:53:01 +08:00
|
|
|
echo "=== Running $progname"
|