libtool/tests/sysroot.at
Gary V. Vaughan fda42eb8c6 maint: update copyright statements to include 2015.
* AUTHORS, HACKING, Makefile.am, NEWS, README.md, TODO,
bootstrap, bootstrap.conf, build-aux/edit-readme-alpha,
build-aux/git-hooks/commit-msg, build-aux/ltmain.in, cfg.mk,
configure.ac, doc/libtool.texi, gl/build-aux/bootstrap.in,
gl/build-aux/extract-trace, gl/build-aux/funclib.sh,
gl/build-aux/inline-source, gl/build-aux/options-parser,
libltdl/README, libltdl/configure.ac,
libltdl/libltdl/lt__alloc.h, libltdl/libltdl/lt__argz_.h,
libltdl/libltdl/lt__dirent.h, libltdl/libltdl/lt__glibc.h,
libltdl/libltdl/lt__private.h, libltdl/libltdl/lt__strl.h,
libltdl/libltdl/lt_dlloader.h, libltdl/libltdl/lt_error.h,
libltdl/libltdl/lt_system.h, libltdl/libltdl/slist.h,
libltdl/loaders/dld_link.c, libltdl/loaders/dlopen.c,
libltdl/loaders/dyld.c, libltdl/loaders/load_add_on.c,
libltdl/loaders/loadlibrary.c, libltdl/loaders/preopen.c,
libltdl/loaders/shl_load.c, libltdl/lt__alloc.c,
libltdl/lt__argz.c, libltdl/lt__dirent.c, libltdl/lt__strl.c,
libltdl/lt_dlloader.c, libltdl/lt_error.c, libltdl/ltdl.c,
libltdl/ltdl.h, libltdl/ltdl.mk, libltdl/slist.c, libtoolize.in,
m4/autobuild.m4, m4/libtool.m4, m4/ltargz.m4, m4/ltdl.m4,
m4/ltoptions.m4, m4/ltsugar.m4, m4/ltversion.in,
m4/lt~obsolete.m4, m4/m4.m4, tests/am-subdir.at,
tests/archive-in-archive.at, tests/bindir.at, tests/cdemo.at,
tests/cmdline_wrap.at, tests/configure-iface.at,
tests/convenience.at, tests/ctor.at, tests/cwrapper.at,
tests/darwin.at, tests/demo.at, tests/depdemo.at,
tests/deplib-in-subdir.at, tests/deplibs-ident.at,
tests/deplibs-mingw.at, tests/destdir.at, tests/dlloader-api.at,
tests/dumpbin-symbols.at, tests/duplicate_conv.at,
tests/duplicate_deps.at, tests/duplicate_members.at,
tests/early-libtool.at, tests/exceptions.at,
tests/execute-mode.at, tests/exeext.at, tests/export-def.at,
tests/export.at, tests/f77demo.at, tests/fail.at,
tests/fcdemo.at, tests/flags.at, tests/help.at,
tests/indirect_deps.at, tests/infer-tag.at,
tests/inherited_flags.at, tests/install.at,
tests/lalib-syntax.at, tests/libtool.at, tests/libtoolize.at,
tests/link-order.at, tests/link-order2.at, tests/loadlibrary.at,
tests/localization.at, tests/lt_dladvise.at, tests/lt_dlexit.at,
tests/lt_dlopen.at, tests/lt_dlopen_a.at, tests/lt_dlopenext.at,
tests/ltdl-api.at, tests/ltdl-libdir.at, tests/mdemo.at,
tests/need_lib_prefix.at, tests/no-executables.at,
tests/nocase.at, tests/nonrecursive.at, tests/old-ltdl-iface.at,
tests/old-m4-iface.at, tests/pic_flag.at, tests/recursive.at,
tests/resident.at, tests/runpath-in-lalib.at,
tests/search-path.at, tests/shlibpath.at, tests/slist.at,
tests/standalone.at, tests/static.at, tests/stresstest.at,
tests/subproject.at, tests/sysroot.at, tests/tagdemo.at,
tests/template.at, tests/testsuite.at, tests/versioning.at,
tests/with-pic.at: Update copyright statement to include 2015.
* cfg.mk: Adjust old_NEWS_hash accordingly.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2015-01-18 13:16:42 +00:00

209 lines
5.3 KiB
Plaintext

# static.at -- test flags for sysrooting -*- Autotest -*-
#
# Copyright (C) 2009, 2011-2015 Free Software Foundation, Inc.
# Written by Paolo Bonzini, 2009
#
# This file is part of GNU Libtool.
#
# GNU Libtool 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.
#
# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy
# can be downloaded from http://www.gnu.org/licenses/gpl.html,
# or obtained by writing to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
####
m4_define([SYSROOT_TEST], [
AT_SETUP([$1])
AT_KEYWORDS([libtool sysroot])
gcc_sysroot=`$CC --print-sysroot 2> /dev/null`
if test $? != 0; then
gcc_sysroot=
fi
AT_CHECK([test -n "$gcc_sysroot" || exit 77])
# Detect installation prefix for the compiler
prefix=
for i in crt0.o crt1.o crt2.o crti.o; do
j=`$CC --print-file-name $i 2> /dev/null`
test $? = 0 || continue
case $j in
$gcc_sysroot*/lib/$i)
prefix=`echo "$j" | $SED "s|^$gcc_sysroot\\(.*\\)/lib/$i\$|\\1|"`
break ;;
esac
done
AT_CHECK([test -n "$prefix" || exit 77])
sysroot=`pwd`/sys-root
# difficult to use AS_DIRNAME inside the AT_CHECK macro, so
# encapsulate as a shell function.
local_dirname() {
AS_DIRNAME(["$[]1"])
}
AT_CHECK([
(cd "$gcc_sysroot" && find ".$prefix/bin" ".$prefix/include" ".$prefix/lib" \! -type d) | \
while read file; do
dir=`local_dirname "$sysroot/$file"`
test -d "$dir" || mkdir -p "$dir"
rm -f "$sysroot/$file"
ln -s "$gcc_sysroot/$file" "$sysroot/$file" || \
cp "$gcc_sysroot/$file" "$sysroot/$file"
done])
LDFLAGS="$LDFLAGS --sysroot=$sysroot -no-undefined"
configure_options="$configure_options --with-sysroot=$sysroot --prefix=$prefix"
#???
if test PATH = "$shlibpath_var"; then
configure_options="$configure_options --libdir=/$prefix/bin"
fi
AT_CHECK([mkdir lib1 lib2 prog])
# Build and install package 1.
AT_DATA([lib1/configure.ac],
[[AC_INIT([lib1], [1.0])
AM_INIT_AUTOMAKE([foreign])
AC_PROG_CC
AC_CONFIG_SRCDIR([lib1.c])
LT_INIT
AC_OUTPUT(Makefile)
]])
AT_DATA([lib1/Makefile.am],
[[lib_LTLIBRARIES = lib1.la
lib1_la_SOURCES = lib1.c
lib1_la_LDFLAGS = -rpath $(libdir)
]])
AT_DATA([lib1/lib1.c],
[[#include <string.h>
#include <stdlib.h>
char *f(const char *s)
{
return strdup (s);
}
]])
cd lib1
LT_AT_BOOTSTRAP([], [-I $abs_top_srcdir/libltdl/m4], [ignore],
[--add-missing], [], [], [all])
AT_CHECK([$MAKE install DESTDIR=$sysroot], [0], [ignore], [ignore])
AT_CHECK([test -f "$sysroot/$prefix/lib/lib1.la"])
AT_CHECK([$GREP -F "$sysroot" "$sysroot/$prefix/lib/lib1.la"], [1])
cd ..
# Build and install package 2.
AT_DATA([lib2/configure.ac],
[[AC_INIT([lib2], [1.0])
AM_INIT_AUTOMAKE([foreign])
AC_PROG_CC
AC_CONFIG_SRCDIR([lib2.c])
LT_INIT
sysroot=$with_sysroot
AC_SUBST([sysroot])
AC_OUTPUT(Makefile)
]])
AT_DATA([lib2/Makefile.am],
[[lib_LTLIBRARIES = lib2.la
lib2_la_SOURCES = lib2.c
lib2_la_LDFLAGS = -rpath $(libdir)
lib2_la_LIBADD = $2]1[$3
]])
AT_DATA([lib2/lib2.c],
[[#include <stdio.h>
#include <string.h>
#include <stdlib.h>
extern char *f(const char *s);
char *g(const char *s)
{
char *q = f(s);
puts (q);
return q;
}
]])
cd lib2
LT_AT_BOOTSTRAP([], [-I $abs_top_srcdir/libltdl/m4], [ignore],
[--add-missing], [], [], [all])
AT_CHECK([$MAKE install DESTDIR=$sysroot], [0], [ignore], [ignore])
AT_CHECK([test -f "$sysroot/$prefix/lib/lib2.la"])
AT_CHECK([$GREP -F "$sysroot" "$sysroot/$prefix/lib/lib2.la"], [1])
cd ..
# Build and install a program.
AT_DATA([prog/configure.ac],
[[AC_INIT([prog], [1.0])
AM_INIT_AUTOMAKE([foreign])
AC_PROG_CC
AC_CONFIG_SRCDIR([prog.c])
LT_INIT
sysroot=$with_sysroot
AC_SUBST([sysroot])
AC_OUTPUT(Makefile)
]])
AT_DATA([prog/Makefile.am],
[[bin_PROGRAMS = prog
prog_SOURCES = prog.c
prog_LDADD = $2]2[$3
]])
AT_DATA([prog/prog.c],
[[#include <stdio.h>
#include <string.h>
#include <stdlib.h>
extern char *g(const char *s);
int main()
{
char *q = g("hello world");
free (q);
return 0;
}
]])
cd prog
LT_AT_BOOTSTRAP([], [-I $abs_top_srcdir/libltdl/m4], [ignore],
[--add-missing], [], [], [all])
AT_CHECK([$MAKE install DESTDIR=$sysroot], [0], [ignore], [ignore])
AT_CHECK([test -f "$sysroot/$prefix/bin/prog$EXEEXT"])
AT_CHECK([$GREP -F "$sysroot" "$sysroot/$prefix/bin/prog$EXEEXT"], [1])
AT_CHECK([$GREP "'.*=" $sysroot/$prefix/lib/lib2.la], [0], [ignore])
AT_CHECK([./libtool --mode=finish $sysroot/$prefix/lib/lib@<:@12@:>@.la], [0], [ignore])
AT_CHECK([$GREP "'.*=" $sysroot/$prefix/lib/lib@<:@12@:>@.la], [1])
# missing tests
# 1) pass absolute .la files
# 2) pass absolute -L
# 2) pass relative .la files
cd ..
AT_CLEANUP
])
AT_BANNER([sysroot tests])
SYSROOT_TEST([-L=.../lib -l], [-L=$(libdir) -l], [])
SYSROOT_TEST([-L SYSROOT/.../lib -l], [-L$(sysroot)$(libdir) -l], [])
SYSROOT_TEST([SYSROOT/.../*.la], [$(sysroot)$(libdir)/lib], [.la])
dnl This one does not make sense.
dnl SYSROOT_TEST([=.../*.la], [=$(libdir)/lib], [.la])