[ http://lists.gnu.org/archive/html/automake-patches/2006-10/msg00068.html ]
* Ralf Wildenhues wrote on Tue, Oct 17, 2006 at 09:02:20PM CEST: > On AIX, --disable-static is the default for libtool (for some reason > not important for the following issue). This exposed a bug in depcomp. [...] So now I fix the first bug I added to Automake. I decided to add a small NEWS entry, factor depcomp7.test better, to also try without any of --disable-{shared,static} -- computing time is cheaper than bug hunter time. Here's what I applied to HEAD; branch-1-10 is similar. Cheers, Ralf 2007-03-29 Ralf Wildenhues <[EMAIL PROTECTED]> * lib/depcomp (aix): Rewrite depmode in the spirit of the tru64 one. Fixes failure to catch dependencies with libtool and xlc in case of enable_static=no (which is the default on AIX without runtimelinking). * tests/depcomp7.test: Run test once with --disable-shared and once with --disable-static, to expose failure systematically. * NEWS: Update. Index: NEWS =================================================================== RCS file: /cvs/automake/automake/NEWS,v retrieving revision 1.323 diff -u -r1.323 NEWS --- NEWS 10 Jan 2007 17:57:24 -0000 1.323 +++ NEWS 28 Mar 2007 23:06:12 -0000 @@ -15,6 +15,11 @@ - install-sh supports -C, which does not update the installed file (and its time stamps) if the contents did not change. +Bugs fixed in 1.10a: + +* Long standing bugs: + + - Fix aix dependency tracking for libtool objects. New in 1.10: @@ -1250,7 +1255,7 @@ ----- Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, -2004, 2005 Free Software Foundation, Inc. +2004, 2005, 2006, 2007 Free Software Foundation, Inc. This file is part of GNU Automake. Index: lib/depcomp =================================================================== RCS file: /cvs/automake/automake/lib/depcomp,v retrieving revision 1.60 diff -u -r1.60 depcomp --- lib/depcomp 15 Oct 2006 17:02:34 -0000 1.60 +++ lib/depcomp 28 Mar 2007 23:04:29 -0000 @@ -1,9 +1,9 @@ #! /bin/sh # depcomp - compile a program generating dependencies as side-effects -scriptversion=2006-10-15.18 +scriptversion=2007-03-29.01 -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software +# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 Free Software # Foundation, Inc. # This program is free software; you can redistribute it and/or modify @@ -215,34 +215,39 @@ # current directory. Also, the AIX compiler puts `$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. - stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` - tmpdepfile="$stripped.u" + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then + tmpdepfile1=$dir$base.u + tmpdepfile2=$base.u + tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else + tmpdepfile1=$dir$base.u + tmpdepfile2=$dir$base.u + tmpdepfile3=$dir$base.u "$@" -M fi stat=$? - if test -f "$tmpdepfile"; then : - else - stripped=`echo "$stripped" | sed 's,^.*/,,'` - tmpdepfile="$stripped.u" - fi - if test $stat -eq 0; then : else - rm -f "$tmpdepfile" + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done if test -f "$tmpdepfile"; then - outname="$stripped.o" # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. - sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" - sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile Index: tests/depcomp7.test =================================================================== RCS file: /cvs/automake/automake/tests/depcomp7.test,v retrieving revision 1.4 diff -u -r1.4 depcomp7.test --- tests/depcomp7.test 10 May 2006 21:16:21 -0000 1.4 +++ tests/depcomp7.test 28 Mar 2007 23:04:29 -0000 @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 2006 Free Software Foundation, Inc. +# Copyright (C) 2006, 2007 Free Software Foundation, Inc. # # This file is part of GNU Automake. # @@ -65,7 +65,7 @@ int bar() { return 0; } END -touch sub2/sub3/ba3.h +echo 'extern int x;' > sub2/sub3/ba3.h cat >sub/bar.h <<'END' #include <stdio.h> @@ -91,15 +91,23 @@ $AUTOCONF $AUTOMAKE -a -./configure --enable-dependency-tracking -$MAKE +for staticshared in --disable-shared "" --disable-static; do + ./configure --enable-dependency-tracking $staticshared + $MAKE + + # check that dependency tracking works + if grep 'depmode=none' Makefile; then : + else + cd sub2 + $sleep + echo 'choke me' > sub3/ba3.h + if $MAKE; then exit 1; fi + cd .. + fi + + $MAKE distclean + test ! -f sub2/sub3/ba3.u + test ! -f sub2/sub3/ba3.d -# check that dependency tracking works -if grep 'depmode=none' Makefile; then : -else - cd sub2 - $sleep - echo 'choke me' > sub3/ba3.h - if $MAKE; then exit 1; fi -fi -: + echo 'extern int x;' > sub2/sub3/ba3.h +done