libtool/tests/depdemo-relink.test
Gary V. Vaughan e9b2b3f264 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 13:07:15 +00:00

111 lines
3.7 KiB
Bash
Executable File

#! /bin/sh
# depdemo-relink.test - check to see whether shlibpath overrides runpath
# 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.
. defs || exit 1
func_restore_files ()
{
func_mkdir_p "$objdir"
mv -f _fnord/temp/libs/* "l3/$objdir"
mv -f "_fnord/temp/libl3.la" "l3"
mv -f "_fnord/temp/lt-depdemo$EXEXT" "_fnord/temp/depdemo$EXEXT" "$objdir"
rm -rf "_fnord"
}
func_save_files ()
{
func_mkdir_p "_fnord/temp/libs"
cp -f "$objdir/lt-depdemo$EXEEXT" "$objdir/depdemo$EXEEXT" "_fnord/temp"
cp -f l3/libl3.la "_fnord/temp"
cp -f l3/"$objdir"/* "_fnord/temp/libs"
trap "func_restore_files" 0 1 2 13 15
}
func_require "depdemo-inst" "$prefix/lib/libl3.la" "depdemo/l3/libl3.la"
func_mkprefixdir
func_cd "depdemo"
func_save_files
# Check to make sure we have a dynamic library.
func_get_config "library_names" "cat l3/libl3.la"
test -z "$library_names" \
&& func_fatal_error "Exiting: depdemo/l3/libl3.la is not a shared library"
func_get_config 'shlibpath_overrides_runpath
hardcode_action
hardcode_direct
hardcode_into_libs' "./libtool --config" ": fatal"
./depdemo # so that it links on-demand if needed
func_msg "removing libl3.la from depdemo/l3"
rm -rf l3/libl3.la l3/$objdir
func_msg "running depdemo/depdemo"
if ./depdemo ||
# On AIX 4.1, when the installed copy of libl3 is loaded, it brings
# with it the installed copies of libl1 and libl2, with disjoint
# counters var_l1 and var_l2. This is arguably acceptable behavior,
# but it's definitely not enough of a reason for the test to fail.
./depdemo -alt; then
:
elif test "x,$hardcode_action,$hardcode_direct" = x,relink,yes; then
func_msg "Ok, uninstalled programs fail after uninstalled libraries are removed"
func_msg "This works in other configurations, but not in this particular one"
else
func_fail "Exiting: depdemo/depdemo does not run, maybe libl3 was not installed"
fi
func_msg "linking a broken depdemo/l3/libl3.la"
(cd l3 && $MAKE libl3.la libl3_la_OBJECTS=../l2/l2.lo) \
|| func_fail "Exiting: cannot link broken libl3.la"
rm -f l3/libl3.la
func_msg "running depdemo/depdemo with broken libl3.la"
if (./depdemo) 2>&1; then
func_msg "Exiting: depdemo/depdemo runs even though libl3.la is incomplete"
func_fail "shlibpath_overrides_runpath should be set to no"
else
func_msg "Failed, as expected"
fi
if test "x$hardcode_action" = xrelink; then
func_msg "Exiting: install-time relinking is required"
exit $EXIT_SUCCESS
fi
if test "$shlibpath_overrides_runpath" != yes; then
rm -f $objdir/lt-depdemo || exit $EXIT_FAILURE
cp $objdir/depdemo $objdir/lt-depdemo || exit $EXIT_FAILURE
func_msg "running depdemo/depdemo with installed libl3.la"
if ./depdemo; then
func_msg "Worked, as expected"
else
func_msg "shlibpath_overrides_runpath should be set to yes"
status=$EXIT_FAILURE
fi
fi
exit $status