2003-10-15 05:46:13 +08:00
|
|
|
#! /bin/sh
|
|
|
|
# demo-relink.test - check to see whether shlibpath overrides runpath
|
|
|
|
|
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
|
|
|
# Copyright (C) 2003, 2004 Free Software Foundation, Inc.
|
2003-10-15 05:46:13 +08:00
|
|
|
# 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.
|
|
|
|
|
* 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: POSIX `.' searches only in user's $PATH, so
we must use `. ./defs' to source the common code.
Reported by Alexandre Duret-Lutz <adl@src.lip6.fr>
2004-09-23 22:50:36 +08:00
|
|
|
. ./defs || exit 1
|
2003-10-15 05:46:13 +08:00
|
|
|
|
|
|
|
func_restore_files ()
|
|
|
|
{
|
|
|
|
mv -f "$objdir"/temp/libs/* "$objdir"
|
|
|
|
mv -f "$objdir/temp/libhello.la" .
|
|
|
|
rm -rf "$objdir/temp"
|
|
|
|
}
|
|
|
|
|
|
|
|
func_save_files ()
|
|
|
|
{
|
|
|
|
func_mkdir_p "$objdir/temp/libs"
|
|
|
|
cp -f libhello.la "$objdir/temp"
|
|
|
|
cp -f "$objdir"/libhello.* "$objdir/lt-hell$EXEEXT" "$objdir/temp/libs"
|
|
|
|
trap "func_restore_files" 0 1 2 13 15
|
|
|
|
}
|
|
|
|
|
|
|
|
func_require "demo-inst" "$prefix/lib/libhello.la" "demo/libhello.la"
|
|
|
|
|
|
|
|
func_mkprefixdir
|
|
|
|
func_cd "demo"
|
|
|
|
func_save_files
|
|
|
|
|
|
|
|
# Check to make sure we have a dynamic library.
|
|
|
|
func_get_config "library_names" "cat libhello.la"
|
|
|
|
test -z "$library_names" \
|
|
|
|
&& func_fatal_error "Exiting: demo/libhello.la is not a shared library"
|
|
|
|
|
|
|
|
func_get_config 'shlibpath_overrides_runpath
|
|
|
|
hardcode_action
|
|
|
|
hardcode_direct
|
|
|
|
hardcode_into_libs' "./libtool --config" ": fatal"
|
|
|
|
|
|
|
|
./hell # so that it links on-demand if needed
|
|
|
|
|
|
|
|
func_msg "removing libhello.la from demo"
|
|
|
|
rm -f libhello.la "$objdir"/libhello.*
|
|
|
|
|
|
|
|
func_msg "running demo/hell"
|
|
|
|
if ./hell; 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: demo/hell does not run, maybe libhello was not installed"
|
|
|
|
fi
|
|
|
|
|
|
|
|
func_msg "linking a broken demo/libhello.la"
|
|
|
|
func_make libhello.la libhello_la_OBJECTS=hello.lo \
|
|
|
|
|| func_fail "Exiting: cannot link broken libhello.la"
|
|
|
|
rm -f libhello.la
|
|
|
|
|
|
|
|
func_msg "running demo/hell with broken libhello.la"
|
|
|
|
if (./hell) 2>&1; then
|
|
|
|
func_msg "Exiting: demo/hell runs even though libhello.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-hell$EXEEXT || exit $EXIT_FAILURE
|
|
|
|
cp $objdir/hell$EXEEXT $objdir/lt-hell$EXEEXT || exit $EXIT_FAILURE
|
|
|
|
func_msg "running demo/hell with installed libhello.la"
|
|
|
|
if ./hell; then
|
|
|
|
func_msg "Worked, as expected"
|
|
|
|
else
|
|
|
|
func_msg "shlibpath_overrides_runpath should be set to yes"
|
|
|
|
status=$EXIT_FAILURE
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
exit $status
|