Subject: Re: bug#27781: LIBOBJS should depend on LIBOBJDIR

From: Mathieu Lirzin <[email-masked]>
Date: Sun, 27 Aug 2017 17:23:59 +0200

Michael Haubenwallner <[email-masked]> writes:

> On 08/24/2017 11:35 AM, Mathieu Lirzin wrote:
> 
>> Instead of this dummy target, I would rather prefer adding the dirstamp
>> dependency for each explicit object file separately.  this should be computed
>> from the '%libsources' variable.  However after a quick look in the code, it
>> seems that this variable is not properly populated by the
>> 'scan_autoconf_traces' subroutine.  It only contains the files that are
>> explicitely defined by scanning the AC_LIBSOURCE macro and not by AC_LIBOBJ or
>> AC_LIBSOURCES in 'configure.ac'.
>> 
>> Michael: Are you interested in looking into this?
>> 
>
> Here's an attempt to use the explicit AC_LIBSOURCE values to depend on the
> LIBOBJDIR dirstamp. IMHO, tracing AC_LIBOBJ would not provide additional
> information over AC_LIBSOURCE, as AC_LIBOBJ by itself uses AC_LIBSOURCE.

I stand corrected.  This is indeed working properly since
'scan_autoconf_traces' doesn't simply scan "configure.ac" but the output
'autoconf --trace=...'.

> But then there is _AC_LIBOBJS_NORMALIZE, adding $U to {,LT}LIBOBJS values
> (seems referring to "Automake's ANSI2KNR"): What is this about?

Those are legacy features of Automake that were removed 6 years ago:

--8<---------------cut here---------------start------------->8---
[...]
commit 0cbcf393dbdaa2ff36b11cf2516675e78eada49f
Author: Stefano Lattarini <[email-masked]>
Date:   Sun Aug 28 15:06:59 2011 +0200

    docs: remove description of de-ANSI-fication support from manual
    
    * doc/automake.texi (Auxiliary Programs): Remove mention of
    `ansi2knr.c' and `ansi2knr.1'.
    (Obsolete Macros): Remove mention of `AM_C_PROTOTYPES'.  Do not
    index it nor variables `ANSI2KNR' and `U' anymore.
    (List of Automake options): Remove mention of `ansi2knr' option,
    and obsolete entries for concept and option indexes.
    (Optional): Remove entry about `AM_C_PROTOTYPES'.
    (@c LocalWords): Remove `ansi' and `knr'.
    (@menu, @detailmenu): Remove entries about de-ANSI-fication
    support.
[...]
--8<---------------cut here---------------end--------------->8---

So I guess you shouldn't worry about those thing.  ;)

>>>From 4465bb9e31c12a8f59c199c61aaef17966e1ffc4 Mon Sep 17 00:00:00 2001
> From: Michael Haubenwallner <[email-masked]>
> 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 source file found.
> ---

This patch can't be applied on the 'minor' branch, which corresponds to
the branch of the next release (I know this is confusing [1]).  Could
resend it after rebasing onto the 'minor' branch?

-- 
Mathieu Lirzin
GPG: F2A3 8D7E EB2B 6640 5761  070D 0ADE E100 9460 4D37

[1] https://debbugs.gnu.org/cgi/bugreport.cgi?msg=199;bug=13578