]> git.ipfire.org Git - thirdparty/automake.git/commit
deps: fix corner-case "make distclean" bug
authorStefano Lattarini <stefano.lattarini@gmail.com>
Sat, 3 Jan 2015 00:33:45 +0000 (01:33 +0100)
committerStefano Lattarini <stefano.lattarini@gmail.com>
Tue, 6 Jan 2015 10:26:16 +0000 (11:26 +0100)
commit08849db866b44510f6b8fd49e313c91a43a3dfd3
tree53fc969d2a1ac38e6c738992caa54f88b8c080e6
parent1b4c84b80d6099fd6747b129630bbf00c388e0f9
deps: fix corner-case "make distclean" bug

Assume we have package satisfying the following conditions:
  (1) automatic dependency tracking is enabled;
  (2) the 'subdir-objects' Automake option is enabled;
  (3) the package uses a recursive make setup.

Also assume that:
  (a) a subdir Makefile declares a foo_SOURCES variable containing
      a source file in the parent directory;
  (b) that parent Makefile declare a compiled program itself.

Then BSD and Solaris make used to fail when running "make distclean",
because the 'distclean' target of the subdir Makefile removed the
whole '.deps' directory before the parent Makefile was done with the
included '.Po' makefile fragments in that directory. This issue was
revealed by failures in the 'subobj-vpath-pr13928.sh' test when those
make implementations were used.

We fix the issue by ensuring the 'distclean' target of any Makefile
only removed the '.Po' makefile fragments included by it, rather than
the whole '.deps' directory where such files resides.

This change should be the last step in fixing automake bug#13928
for good.

* bin/automake.in (handle_languages), lib/am/depend.am: Adjust
to implement the new 'distclean' logic.
* t/pr224.sh: Adjust to avoid a spurious failure.
* PLANS/subdir-objects.txt: Update.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
PLANS/subdir-objects.txt
bin/automake.in
lib/am/depend.am
t/pr224.sh