[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFT PATCH v3 8/9] add sysroot test
From: |
Paolo Bonzini |
Subject: |
[RFT PATCH v3 8/9] add sysroot test |
Date: |
Thu, 29 Jul 2010 01:23:21 +0200 |
* Makefile.am (TESTSUITE_AT): Add tests/sysroot.at.
* tests/sysroot.at: New.
Signed-off-by: Paolo Bonzini <address@hidden>
Signed-off-by: Charles Wilson <address@hidden>
---
Makefile.am | 3 +-
tests/sysroot.at | 201 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 203 insertions(+), 1 deletions(-)
create mode 100644 tests/sysroot.at
diff --git a/Makefile.am b/Makefile.am
index ef3c984..c2928a5 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -513,7 +513,8 @@ TESTSUITE_AT = tests/testsuite.at \
tests/cmdline_wrap.at \
tests/pic_flag.at \
tests/darwin.at \
- tests/deplibs-mingw.at
+ tests/deplibs-mingw.at \
+ tests/sysroot.at
EXTRA_DIST += $(srcdir)/$(TESTSUITE) $(TESTSUITE_AT)
$(srcdir)/tests/package.m4
diff --git a/tests/sysroot.at b/tests/sysroot.at
new file mode 100644
index 0000000..be9fa58
--- /dev/null
+++ b/tests/sysroot.at
@@ -0,0 +1,201 @@
+# static.at -- test flags for sysrooting -*- Autotest -*-
+#
+# Copyright (C) 2009 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 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/lib" \! -type d) | \
+while read file; do
+ dir=`local_dirname "$sysroot/$file"`
+ test -d "$dir" || mkdir -p "$dir"
+ ln -sf "$gcc_sysroot/$file" "$sysroot/$file"
+done])
+
+LDFLAGS="$LDFLAGS --sysroot=$sysroot -no-undefined"
+configure_options="$configure_options --with-sysroot=$sysroot --prefix=$prefix"
+
+#???
+if test "$shlibpath_var" = PATH; 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>
+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>
+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])
+
+# 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])
--
1.7.1
- [RFT PATCH v3 1/9] fix bug in postdeps computation, (continued)
- [RFT PATCH v3 1/9] fix bug in postdeps computation, Paolo Bonzini, 2010/07/28
- [RFT PATCH v3 2/9] handle sysroot flags, Paolo Bonzini, 2010/07/28
- [RFT PATCH v3 3/9] add --with-sysroot, Paolo Bonzini, 2010/07/28
- [RFT PATCH v3 4/9] teach libtool -L= and -R=, Paolo Bonzini, 2010/07/28
- [RFT PATCH v3 6/9] process postdeps to include sysrooted paths, Paolo Bonzini, 2010/07/28
- [RFT PATCH v3 7/9] emit sysrooted paths when installing .la files, Paolo Bonzini, 2010/07/28
- [RFT PATCH v3 9/9] initial version of the NEWS entry, Paolo Bonzini, 2010/07/28
- [RFT PATCH v3 8/9] add sysroot test,
Paolo Bonzini <=
- [RFT PATCH v3 5/9] handle sysrooted paths when reading dependencies to la files, Paolo Bonzini, 2010/07/28
- Re: [RFT PATCH v3 0/9] Sysroot patches, Charles Wilson, 2010/07/29
- Re: [RFT PATCH v3 0/9] Sysroot patches, Paolo Bonzini, 2010/07/29
- Re: [RFT PATCH v3 0/9] Sysroot patches, Charles Wilson, 2010/07/30
- Re: [RFT PATCH v3 0/9] Sysroot patches, Paolo Bonzini, 2010/07/30
- Re: [RFT PATCH v3 0/9] Sysroot patches, Paolo Bonzini, 2010/07/31
- Re: [RFT PATCH v3 0/9] Sysroot patches, Charles Wilson, 2010/07/31
- Re: [RFT PATCH v3 0/9] Sysroot patches, Charles Wilson, 2010/07/31