I've checked this in. 2006-08-04 Ralf Wildenhues <[EMAIL PROTECTED]>
* automake.in (handle_LIBOBJS_or_ALLOCA): With subdir-objects, do not prefix `$(top_builddir)/' aka `./' to nonempty LIBOBJDIR, to help BSD Make find the files also in a VPATH build. Also return the same path, possibly prefixed, for correct depdir computation. * tests/pr401.test: Update to expose wrong depdir computation. Rewrite to not use the same file name for library object and main program. * tests/pr401b.test, tests/pr401c.test: Likewise. Index: automake.in =================================================================== RCS file: /cvs/automake/automake/automake.in,v retrieving revision 1.1623 diff -u -r1.1623 automake.in --- automake.in 24 Jun 2006 05:31:54 -0000 1.1623 +++ automake.in 4 Aug 2006 06:08:09 -0000 @@ -2175,7 +2175,12 @@ { if (option 'subdir-objects') { - define_variable ('LIBOBJDIR', "\$(top_builddir)/$dir", INTERNAL); + # In the top-level Makefile we do not use $(top_builddir), because + # we are already there, and since the targets are built without + # a $(top_builddir), it helps BSD Make to match them with + # dependencies. + $dir = "$topsrcdir/$dir" if $relative_dir ne '.'; + define_variable ('LIBOBJDIR', "$dir", INTERNAL); $clean_files{"\$($var)"} = MOSTLY_CLEAN; # If LTLIBOBJS is used, we must also clear LIBOBJS (which might # be created by libtool as a side-effect of creating LTLIBOBJS). Index: tests/pr401.test =================================================================== RCS file: /cvs/automake/automake/tests/pr401.test,v retrieving revision 1.3 diff -u -r1.3 pr401.test --- tests/pr401.test 6 Jun 2006 20:42:36 -0000 1.3 +++ tests/pr401.test 4 Aug 2006 06:08:09 -0000 @@ -36,7 +36,7 @@ } EOF -cat >src/feep.c <<'EOF' +cat >src/main.c <<'EOF' #include <stdio.h> extern char *feep (); @@ -76,10 +76,10 @@ EOF cat >src/Makefile.am <<'EOF' -check_PROGRAMS = feep -feep_LDADD = ../lib/libfeep.a +check_PROGRAMS = main +main_LDADD = ../lib/libfeep.a -TESTS = feep +TESTS = main EOF $ACLOCAL @@ -107,16 +107,18 @@ libfeep_a_SOURCES = libfeep_a_LIBADD = $(LIBOBJS) -check_PROGRAMS = feep -feep_LDADD = libfeep.a +check_PROGRAMS = main +main_LDADD = libfeep.a -TESTS = feep +TESTS = main EOF $ACLOCAL $AUTOCONF $AUTOMAKE --add-missing ./configure +test ! -d src/lib +test ! -d 'src/$(top_builddir)' $MAKE $MAKE check $MAKE distclean @@ -136,14 +138,16 @@ lib_libfeep_a_SOURCES = lib_libfeep_a_LIBADD = $(LIBOBJS) -check_PROGRAMS = src/feep -src_feep_SOURCES = src/feep.c -src_feep_LDADD = lib/libfeep.a +check_PROGRAMS = src/main +src_main_SOURCES = src/main.c +src_main_LDADD = lib/libfeep.a -TESTS = src/feep +TESTS = src/main check-local: - test -f src/feep.$(OBJEXT) + test -f src/main.$(OBJEXT) + test -f lib/feep.$(OBJEXT) + test ! -f src/$(DEPDIR)/feep.Po EOF $ACLOCAL Index: tests/pr401b.test =================================================================== RCS file: /cvs/automake/automake/tests/pr401b.test,v retrieving revision 1.3 diff -u -r1.3 pr401b.test --- tests/pr401b.test 6 Jun 2006 20:42:36 -0000 1.3 +++ tests/pr401b.test 4 Aug 2006 06:08:09 -0000 @@ -36,7 +36,7 @@ } EOF -cat >src/feep.c <<'EOF' +cat >src/main.c <<'EOF' #include <stdio.h> extern char *feep (); @@ -76,10 +76,10 @@ EOF cat >src/Makefile.am <<'EOF' -check_PROGRAMS = feep -feep_LDADD = ../lib/libfeep.la +check_PROGRAMS = main +main_LDADD = ../lib/libfeep.la -TESTS = feep +TESTS = main EOF libtoolize @@ -108,16 +108,18 @@ libfeep_la_SOURCES = libfeep_la_LIBADD = $(LTLIBOBJS) -check_PROGRAMS = feep -feep_LDADD = libfeep.la +check_PROGRAMS = main +main_LDADD = libfeep.la -TESTS = feep +TESTS = main EOF $ACLOCAL $AUTOCONF $AUTOMAKE --add-missing ./configure +test ! -d src/lib +test ! -d 'src/$(top_builddir)' $MAKE $MAKE check $MAKE distclean @@ -137,14 +139,16 @@ lib_libfeep_la_SOURCES = lib_libfeep_la_LIBADD = $(LTLIBOBJS) -check_PROGRAMS = src/feep -src_feep_SOURCES = src/feep.c -src_feep_LDADD = lib/libfeep.la +check_PROGRAMS = src/main +src_main_SOURCES = src/main.c +src_main_LDADD = lib/libfeep.la -TESTS = src/feep +TESTS = src/main check-local: - test -f src/feep.$(OBJEXT) + test -f src/main.$(OBJEXT) + test -f lib/feep.lo + test ! -f src/$(DEPDIR)/feep.Po EOF $ACLOCAL Index: tests/pr401c.test =================================================================== RCS file: /cvs/automake/automake/tests/pr401c.test,v retrieving revision 1.3 diff -u -r1.3 pr401c.test --- tests/pr401c.test 6 Jun 2006 20:42:36 -0000 1.3 +++ tests/pr401c.test 4 Aug 2006 06:08:09 -0000 @@ -39,7 +39,7 @@ } EOF -cat >src/feep.c <<'EOF' +cat >src/main.c <<'EOF' #include <stdio.h> extern char *feep (); @@ -78,10 +78,10 @@ EOF cat >src/Makefile.am <<'EOF' -check_PROGRAMS = feep -feep_LDADD = ../lib/libfeep.a +check_PROGRAMS = main +main_LDADD = ../lib/libfeep.a -TESTS = feep +TESTS = main EOF $ACLOCAL @@ -109,10 +109,10 @@ libfeep_a_SOURCES = libfeep_a_LIBADD = $(ALLOCA) $(LIBOBJS) # Add LIBOBJS for fun -check_PROGRAMS = feep -feep_LDADD = libfeep.a +check_PROGRAMS = main +main_LDADD = libfeep.a -TESTS = feep +TESTS = main EOF $ACLOCAL @@ -120,6 +120,8 @@ $AUTOMAKE --add-missing ./configure $MAKE +test ! -d src/lib +test ! -d 'src/$(top_builddir)' $MAKE check $MAKE distclean @@ -138,14 +140,16 @@ lib_libfeep_a_SOURCES = lib_libfeep_a_LIBADD = $(ALLOCA) -check_PROGRAMS = src/feep -src_feep_SOURCES = src/feep.c -src_feep_LDADD = lib/libfeep.a +check_PROGRAMS = src/main +src_main_SOURCES = src/main.c +src_main_LDADD = lib/libfeep.a -TESTS = src/feep +TESTS = src/main check-local: - test -f src/feep.$(OBJEXT) + test -f src/main.$(OBJEXT) + test -f lib/alloca.$(OBJEXT) + test ! -f src/$(DEPDIR)/alloca.Po EOF $ACLOCAL -- Alexandre Duret-Lutz Shared books are happy books. http://www.bookcrossing.com/friend/gadl