| # early-libtool.at -- early libtool script generation -*- Autotest -*- |
| |
| # Copyright (C) 2005, 2006, 2007, 2008 Free Software Foundation, Inc. |
| # Written by Gary V. Vaughan, 2005 |
| # |
| # 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. |
| #### |
| |
| AT_BANNER([libtool script generation.]) |
| |
| |
| ## --------------------------------------------- ## |
| ## Building libtool normally from config.status. ## |
| ## --------------------------------------------- ## |
| |
| AT_SETUP([config.status]) |
| |
| AT_DATA([configure.ac], |
| [[AC_INIT([libtool-demo], ]]AT_PACKAGE_VERSION[[, ]]AT_PACKAGE_BUGREPORT[[) |
| AC_CONFIG_MACRO_DIR([m4]) |
| LT_INIT |
| AC_CONFIG_FILES([Makefile]) |
| AC_OUTPUT |
| ]]) |
| |
| AT_DATA([Makefile.in], |
| [[prefix = @prefix@ |
| libdir = @libdir@ |
| top_builddir = . |
| SHELL = @SHELL@ |
| DEFAULT_INCLUDES = -I. -I@srcdir@ |
| EXEEXT = @EXEEXT@ |
| LIBTOOL = @LIBTOOL@ |
| OBJEXT = @OBJEXT@ |
| |
| CPPFLAGS = @CPPFLAGS@ |
| CFLAGS = @CFLAGS@ |
| LDFLAGS = @LDFLAGS@ |
| |
| COMPILE = $(CC) $(CPPFLAGS) $(CFLAGS) $(DEFAULT_INCLUDES) |
| LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(CPPFLAGS) $(CFLAGS) $(DEFAULT_INCLUDES) |
| LINK = $(LIBTOOL) --mode=link --tag=CC $(CC) $(CFLAGS) $(LDFLAGS) -o $@ |
| |
| all: hell$(EXEEXT) |
| |
| libhello.la: hello.lo |
| $(LINK) -rpath $(libdir) hello.lo |
| hell$(EXEEXT): main.$(OBJEXT) libhello.la |
| $(LINK) main.$(OBJEXT) libhello.la |
| |
| .SUFFIXES: |
| .SUFFIXES: .c .$(OBJEXT) .lo |
| |
| .c.$(OBJEXT): |
| $(COMPILE) -c $< |
| .c.lo: |
| $(LTCOMPILE) -c -o $@ $< |
| ]]) |
| |
| AT_DATA([hello.c], |
| [[#include <stdio.h> |
| |
| void |
| hello (void) |
| { |
| printf ("** This is not GNU Hello. There is no built-in mail reader. **\n"); |
| } |
| ]]) |
| |
| AT_DATA([main.c], |
| [[#include <stdio.h> |
| |
| extern void hello (void); |
| |
| int |
| main (void) |
| { |
| printf ("Welcome to GNU Hell!\n"); |
| |
| hello (); |
| |
| return 0; |
| } |
| ]]) |
| |
| cat > missing <<_EOF |
| #! /bin/sh |
| exit 0 |
| _EOF |
| chmod a+x missing |
| |
| LT_AT_LIBTOOLIZE([--copy --verbose --install]) |
| LT_AT_ACLOCAL([-I m4]) |
| LT_AT_AUTOCONF([--force]) |
| LT_AT_CONFIGURE |
| LT_AT_MAKE |
| |
| LT_AT_EXEC_CHECK([./hell], [0], [stdout]) |
| AT_CHECK([grep 'Welcome to GNU Hell' stdout], [], [ignore]) |
| AT_CHECK([grep 'This is not GNU Hello.' stdout], |
| [], [ignore]) |
| |
| AT_CLEANUP |
| |
| |
| ## ------------------------------------------ ## |
| ## Building and using libtool from config.lt. ## |
| ## ------------------------------------------ ## |
| |
| AT_SETUP([config.lt]) |
| |
| AT_DATA([configure.ac], |
| [[AC_INIT([libtool-demo], ]]AT_PACKAGE_VERSION[[, ]]AT_PACKAGE_BUGREPORT[[) |
| AC_CONFIG_MACRO_DIR([m4]) |
| LT_INIT |
| LT_OUTPUT |
| |
| cat >hello.c <<\_EOF |
| #include <stdio.h> |
| |
| void |
| hello (void) |
| { |
| printf ("** This is not GNU Hello. There is no built-in mail reader. **\n"); |
| } |
| _EOF |
| |
| # Prove that we can run libtool from inside configure: |
| $SHELL ./libtool --mode=compile --tag=CC $CC $CPPFLAGS $CFLAGS \ |
| -I. -I$srcdir -c -o hello.lo hello.c || exit 1 |
| $SHELL ./libtool --mode=link --tag=CC $CC $CFLAGS $LDFLAGS \ |
| -o libhello.la -rpath /notexist hello.lo || exit 1 |
| |
| AC_CONFIG_FILES([Makefile]) |
| AC_OUTPUT |
| ]]) |
| |
| AT_DATA([Makefile.in], |
| [[prefix = @prefix@ |
| libdir = @libdir@ |
| top_builddir = . |
| SHELL = @SHELL@ |
| DEFAULT_INCLUDES = -I. -I@srcdir@ |
| EXEEXT = @EXEEXT@ |
| LIBTOOL = @LIBTOOL@ |
| OBJEXT = @OBJEXT@ |
| |
| CPPFLAGS = @CPPFLAGS@ |
| CFLAGS = @CFLAGS@ |
| LDFLAGS = @LDFLAGS@ |
| |
| COMPILE = $(CC) $(CPPFLAGS) $(CFLAGS) $(DEFAULT_INCLUDES) |
| LINK = $(LIBTOOL) --mode=link --tag=CC $(CC) $(CFLAGS) $(LDFLAGS) -o $@ |
| |
| all: hell$(EXEEXT) |
| |
| hell$(EXEEXT): main.$(OBJEXT) libhello.la |
| $(LINK) main.$(OBJEXT) libhello.la |
| |
| .SUFFIXES: |
| .SUFFIXES: .c .$(OBJEXT) |
| |
| .c.$(OBJEXT): |
| $(COMPILE) -c $< |
| ]]) |
| |
| AT_DATA([hello.c], |
| [[#include <stdio.h> |
| |
| void |
| hello (void) |
| { |
| printf ("** This is not GNU Hello. There is no built-in mail reader. **\n"); |
| } |
| ]]) |
| |
| AT_DATA([main.c], |
| [[#include <stdio.h> |
| |
| extern void hello (void); |
| |
| int |
| main (int argc, char *argv[]) |
| { |
| printf ("Welcome to GNU Hell!\n"); |
| |
| hello (); |
| |
| return 0; |
| } |
| ]]) |
| |
| cat > missing <<_EOF |
| #! /bin/sh |
| exit 0 |
| _EOF |
| chmod a+x missing |
| |
| LT_AT_LIBTOOLIZE([--copy --verbose --install]) |
| LT_AT_ACLOCAL([-I m4]) |
| LT_AT_AUTOCONF([--force]) |
| LT_AT_CONFIGURE |
| LT_AT_MAKE |
| |
| LT_AT_EXEC_CHECK([./hell], [0], [stdout]) |
| AT_CHECK([grep 'Welcome to GNU Hell' stdout], [], [ignore]) |
| AT_CHECK([grep 'This is not GNU Hello.' stdout], [], [ignore]) |
| |
| AT_CLEANUP |