Michael Haubenwallner <michael.haubenwall...@ssi-schaefer.com> writes:
> In this case let me come up with attached patch for now > (without deeper knowledge of automake internals though). I have tested this patch, and confirm that it fixes the bug. However I have on question regarding the added code. > From c3d51adb53400fc8bf65c0e003d810b2e7166d0d Mon Sep 17 00:00:00 2001 > From: Michael Haubenwallner <michael.haubenwall...@ssi-schaefer.com> > Date: Wed, 16 Aug 2017 18:16:12 +0200 > Subject: [PATCH] automake: Depend on LIBOBJDIR for LIBOBJS. > > This change fixes automake bug#27781. > > * bin/automake.in: Add Makefile dependency on LIBOBJDIR/dirstamp for > each LIBOBJS/ALLOCA variable used. > --- > bin/automake.in | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/bin/automake.in b/bin/automake.in > index 9c4cb86..b82e8c5 100644 > --- a/bin/automake.in > +++ b/bin/automake.in > @@ -2153,10 +2153,19 @@ sub handle_LIBOBJS_or_ALLOCA > $dir = backname ($relative_dir) . "/$dir" > if $relative_dir ne '.'; > define_variable ('LIBOBJDIR', "$dir", INTERNAL); > + my $dirstamp = ''; > + # Abusing $clean_files{"$(VAR)"} as indicator for whether > + # we have added the "$(VAR): $dirstamp" dependency already. I am not sure to understand what this comment really means. Can you explain it in other words? > + $dirstamp = require_build_directory ($dir) > + if ! defined $clean_files{"\$($var)"}; > $clean_files{"\$($var)"} = MOSTLY_CLEAN; > + $output_rules .= "\$($var): $dirstamp\n" if ($dirstamp); > # If LTLIBOBJS is used, we must also clear LIBOBJS (which might > # be created by libtool as a side-effect of creating LTLIBOBJS). > - $clean_files{"\$($var)"} = MOSTLY_CLEAN if $var =~ s/^LT//; > + if ($var =~ s/^LT//) { > + $clean_files{"\$($var)"} = MOSTLY_CLEAN; > + $output_rules .= "\$($var): $dirstamp\n" if ($dirstamp); > + } > } > > return $dir; Thank you. -- Mathieu Lirzin GPG: F2A3 8D7E EB2B 6640 5761 070D 0ADE E100 9460 4D37