#! /bin/sh # Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc. # # This file is part of GNU Automake. # # GNU Automake 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 3, or (at your option) # any later version. # # GNU Automake 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 Automake; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, # Boston, MA 02110-1301, USA. # Check support for AC_CONFIG_LIBOBJ_DIR vs LTLIBOBJS. # (pr401.test and pr401c.test do the same for LIBOBJS and ALLOCA) required='gcc libtoolize' . ./defs || exit 1 set -e mkdir lib src cat >lib/feep.c <<'EOF' char * feep () { return "feep"; } EOF cat >src/main.c <<'EOF' #include extern char *feep (); int main (int argc, char **argv) { puts (feep ()); return 0; } EOF cat >>configure.in << 'EOF' ## These lines are activated for later tests #: AC_CONFIG_LIBOBJ_DIR([lib]) AC_PROG_CC #x AM_PROG_CC_C_O AC_LIBOBJ([feep]) AC_LIBSOURCE([feep.c]) AC_PROG_LIBTOOL AC_CONFIG_FILES([lib/Makefile src/Makefile]) AC_OUTPUT EOF ## -------------------------------------------- ## ## First a test of traditional LTLIBOBJS usage. ## ## -------------------------------------------- ## cat >Makefile.am <<'EOF' SUBDIRS = lib src EOF cat >lib/Makefile.am <<'EOF' noinst_LTLIBRARIES = libfeep.la libfeep_la_SOURCES = libfeep_la_LIBADD = $(LTLIBOBJS) EOF cat >src/Makefile.am <<'EOF' check_PROGRAMS = main main_LDADD = ../lib/libfeep.la TESTS = main EOF libtoolize $ACLOCAL $AUTOCONF $AUTOMAKE -a ./configure $MAKE distcheck ## ------------------------------------------ ## ## Traditional LIBOBJS with LIBOBJDIR set. ## ## ------------------------------------------ ## # Invocation of AC_CONFIG_LIBOBJ_DIR may be necessary for reasons # unrelated to Automake or Makefile.am layout. sed 's/#: //' configure.in >configure.int mv -f configure.int configure.in $ACLOCAL $AUTOCONF $AUTOMAKE -a ./configure test ! -d lib/lib $MAKE distcheck ## -------------------------------------------- ## ## Error message with usage in wrong directory. ## ## -------------------------------------------- ## mv -f src/Makefile.am src/t sed 's/LDADD = .*/LDADD = @LTLIBOBJS@/' src/t > src/Makefile.am AUTOMAKE_fails grep 'cannot be used outside.*lib' stderr mv -f src/t src/Makefile.am ## ---------------------------------------------- ## ## Test using LTLIBOBJS from a sibling directory. ## ## ---------------------------------------------- ## sed 's/#x //; s/lib\/Makefile //' configure.in >configure.int mv -f configure.int configure.in cat >Makefile.am <<'EOF' SUBDIRS = src EOF cat > src/Makefile.am <<'EOF' AUTOMAKE_OPTIONS = subdir-objects noinst_LTLIBRARIES = libfeep.la libfeep_la_SOURCES = libfeep_la_LIBADD = $(LTLIBOBJS) check_PROGRAMS = main main_LDADD = libfeep.la TESTS = main EOF $ACLOCAL $AUTOCONF $AUTOMAKE --add-missing ./configure test ! -d src/lib test ! -d 'src/$(top_builddir)' $MAKE $MAKE check $MAKE distclean ## ------------------------------------------- ## ## Test using LTLIBOBJS from parent directory. ## ## ------------------------------------------- ## sed 's/^.*src\/Makefile.*$//' configure.in >configure.int mv -f configure.int configure.in cat >Makefile.am <<'EOF' AUTOMAKE_OPTIONS = subdir-objects noinst_LTLIBRARIES = lib/libfeep.la lib_libfeep_la_SOURCES = lib_libfeep_la_LIBADD = $(LTLIBOBJS) check_PROGRAMS = src/main src_main_SOURCES = src/main.c src_main_LDADD = lib/libfeep.la TESTS = src/main check-local: test -f src/main.$(OBJEXT) test -f lib/feep.lo test ! -f src/$(DEPDIR)/feep.Po EOF $ACLOCAL $AUTOCONF $AUTOMAKE ./configure $MAKE distcheck