diff options
Diffstat (limited to 't/ltconv.sh')
-rwxr-xr-x | t/ltconv.sh | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/t/ltconv.sh b/t/ltconv.sh new file mode 100755 index 000000000..19ed8b34b --- /dev/null +++ b/t/ltconv.sh @@ -0,0 +1,156 @@ +#!/bin/sh +# Copyright (C) 2003-2012 Free Software Foundation, Inc. +# +# 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, 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, see <http://www.gnu.org/licenses/>. + +# Test for libtool convenience libraries. +# This example is taken from the manual. + +required='cc native libtoolize' +. ./defs || Exit 1 + +cat >>configure.ac <<'END' +AC_PROG_CC +AM_PROG_AR +AC_PROG_LIBTOOL +AC_CONFIG_FILES([sub1/Makefile + sub2/Makefile + sub2/sub21/Makefile + sub2/sub22/Makefile]) +AC_OUTPUT +END + +mkdir sub1 +mkdir sub2 +mkdir sub2/sub21 +mkdir sub2/sub22 +mkdir empty + +cat >Makefile.am <<'END' +SUBDIRS = sub1 sub2 +lib_LTLIBRARIES = libtop.la +libtop_la_SOURCES = +libtop_la_LIBADD = \ + sub1/libsub1.la \ + sub2/libsub2.la + +bin_PROGRAMS = ltconvtest +ltconvtest_SOURCES = test.c +ltconvtest_LDADD = libtop.la + +check-local: + ./ltconvtest$(EXEEXT) + : > check-ok +installcheck-local: + $(bindir)/ltconvtest$(EXEEXT) + : > installcheck-ok +END + +cat >sub1/Makefile.am <<'END' +noinst_LTLIBRARIES = libsub1.la +libsub1_la_SOURCES = sub1.c +END + +echo 'int sub1 () { return 1; }' > sub1/sub1.c + +cat >sub2/Makefile.am <<'END' +SUBDIRS = sub21 sub22 +noinst_LTLIBRARIES = libsub2.la +libsub2_la_SOURCES = sub2.c +libsub2_la_LIBADD = \ + sub21/libsub21.la \ + sub22/libsub22.la +END + +echo 'int sub2 () { return 2; }' > sub2/sub2.c + +cat >sub2/sub21/Makefile.am <<'END' +noinst_LTLIBRARIES = libsub21.la +libsub21_la_SOURCES = sub21.c +END + +echo 'int sub21 () { return 21; }' > sub2/sub21/sub21.c + +cat >sub2/sub22/Makefile.am <<'END' +noinst_LTLIBRARIES = libsub22.la +libsub22_la_SOURCES = sub22.c +END + +echo 'int sub22 () { return 22; }' > sub2/sub22/sub22.c + +cat >test.c <<'EOF' +#include <stdio.h> +int main () +{ + if (1 != sub1 ()) + return 1; + if (2 != sub2 ()) + return 2; + if (21 != sub21 ()) + return 3; + if (22 != sub22 ()) + return 4; + return 0; +} +EOF + +libtoolize +$ACLOCAL +$AUTOCONF +$AUTOMAKE --add-missing + +# Install libraries in lib/, programs in bin/, and the rest in empty/. +# (in fact there is no "rest", so as the name imply empty/ is +# expected to remain empty). +./configure "--prefix=`pwd`/empty" "--libdir=`pwd`/lib" "--bindir=`pwd`/bin" + +$MAKE +test -f libtop.la +test -f sub1/libsub1.la +test -f sub2/libsub2.la +test -f sub2/sub21/libsub21.la +test -f sub2/sub22/libsub22.la +$MAKE check +test -f check-ok +rm -f check-ok + +$MAKE install +test -f lib/libtop.la +$MAKE installcheck +test -f installcheck-ok +rm -f installcheck-ok + +find empty -type f -print > empty.lst +cat empty.lst +test 0 = `wc -l < empty.lst` + +$MAKE clean +test ! -f libtop.la +test ! -f sub1/libsub1.la +test ! -f sub2/libsub2.la +test ! -f sub2/sub21/libsub21.la +test ! -f sub2/sub22/libsub22.la +test ! -f ltconvtest + +$MAKE installcheck +test -f installcheck-ok +rm -f installcheck-ok + +$MAKE uninstall +find lib -type f -print > lib.lst +test 0 = `wc -l < lib.lst` +find bin -type f -print > bin.lst +test 0 = `wc -l < bin.lst` + +: |