1999-03-07 Alexandre Oliva <oliva@dcc.unicamp.br>
+ * tests/build-relink.test: new; check shlibpath_overrides_runpath
+ * tests/Makefile.am (TESTS): add build-relink.test; remove
+ hardcode.test duplicates
+ * doc/libtool.texi: document it
+
* ltmain.in (relink_command): do not prepend cd `pwd` to it, the
scripts already enters the correct directory, and expanding the
pathname would prevent the build tree from moving
libraries (@samp{--disable-shared}), and @file{cdemo-shared.test} builds
only shared libraries (@samp{--disable-static}).
+@item build-relink.test
+@pindex build-relink.test
+Checks whether variable @var{shlibpath_overrides_runpath} is properly
+set. If the test fails and @var{VERBOSE} is set, it will indicate what
+the variable should have been set to.
+
@item hardcode.test
@pindex hardcode.test
On all systems with shared libraries, the location of the library can be
AUTOMAKE_OPTIONS = gnits
TESTS = demo-static.test demo-make.test demo-exec.test \
- demo-inst.test demo-unst.test hardcode.test \
+ demo-inst.test demo-unst.test \
mdemo-static.test mdemo-make.test mdemo-exec.test \
mdemo-inst.test mdemo-unst.test \
cdemo-static.test cdemo-make.test cdemo-exec.test \
demo-conf.test demo-make.test demo-exec.test \
- demo-inst.test demo-unst.test hardcode.test \
+ demo-inst.test demo-unst.test \
mdemo-conf.test mdemo-make.test mdemo-exec.test \
mdemo-inst.test mdemo-unst.test \
cdemo-conf.test cdemo-make.test cdemo-exec.test \
demo-shared.test demo-make.test demo-exec.test \
- demo-inst.test demo-unst.test hardcode.test \
+ demo-inst.test \
+ build-relink.test hardcode.test \
+ demo-unst.test \
mdemo-shared.test mdemo-make.test mdemo-exec.test \
mdemo-inst.test mdemo-unst.test \
cdemo-shared.test cdemo-make.test cdemo-exec.test \
--- /dev/null
+#! /bin/sh
+# build-relink.test - check to see whether shlibpath overrides runpath
+
+# Test script header.
+need_prefix=yes
+if test -z "$srcdir"; then
+ srcdir=`echo "$0" | sed 's%/[^/]*$%%'`
+ test "$srcdir" = "$0" && srcdir=.
+ test "${VERBOSE+set}" != "set" && VERBOSE=yes
+fi
+. $srcdir/defs || exit 1
+
+# Check that things are built.
+if test -f ../demo/hell; then :
+else
+ echo "You must run demo-inst.test before $0" 1>&2
+ exit 1
+fi
+
+# Change to our build directory.
+cd ../demo || exit 1
+
+# Unfortunately, we need access to libtool internals for this test.
+objdir=NONE
+eval `egrep -e '^objdir=' ./libtool 2>/dev/null`
+if test "$objdir" = NONE; then
+ echo "objdir not set in ../demo/libtool" 1>&2
+ exit 1
+fi
+
+shlibpath_overrides_runpath=NONE
+eval `egrep -e '^shlibpath_overrides_runpath=' ./libtool 2>/dev/null`
+if test "$shlibpath_overrides_runpath" = NONE; then
+ echo "shlibpath_overrides_runpath not set in ../demo/libtool" 1>&2
+ exit 1
+fi
+
+# Check to make sure we have a dynamic library.
+library_names=NONE
+eval `egrep -e '^library_names=' ./libhello.la 2>/dev/null`
+
+if test "$library_names" = NONE; then
+ echo "library_names not set in ../demo/libhello.la" 1>&2
+ exit 1
+elif test -z "$library_names"; then
+ echo "= Exiting: ../demo/libhello.la is not a shared library"
+ exit 0
+fi
+
+./hell # so that it links on-demand if needed
+
+echo "removing libhello.la from ../demo"
+rm -f libhello.la $objdir/libhello.*
+
+echo "running ../demo/hell"
+if ./hell; then
+ :
+else
+ echo "= Exiting: ../demo/hell does not run, maybe libhello was not installed"
+ exit 1
+fi
+
+echo "linking a broken ../demo/libhello.la"
+if $make libhello.la libhello_la_OBJECTS=; then
+ :
+else
+ echo "= Exiting: cannot link broken libhello.la"
+ exit 1
+fi
+rm -f libhello.la
+
+echo "running ../demo/hell with broken libhello.la"
+if ./hell; then
+ echo "= Exiting: ../demo/hell runs even though libhello.la is incomplete"
+ echo "shlibpath_overrides_runpath should be set to no"
+ exit 1
+else
+ echo "Failed, as expected"
+fi
+
+if test "$shlibpath_overrides_runpath" != yes; then
+ rm $objdir/hellT || exit 1
+ cp $objdir/hell $objdir/hellT || exit 1
+ echo "running ../demo/hell with installed libhello.la"
+ if ./hell; then
+ echo "Worked, as expected"
+ else
+ echo "shlibpath_overrides_runpath should be set to yes"
+ status=1
+ fi
+ rm -f $objdir/hellT
+fi
+
+exit $status