[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug #63098] make-4.3.90 regression of unexpected dependencies in patter

From: Paul D. Smith
Subject: [bug #63098] make-4.3.90 regression of unexpected dependencies in pattern rules with multiple targets
Date: Fri, 23 Sep 2022 16:41:23 -0400 (EDT)

Update of bug #63098 (project make):

       Component Version:                    None => SCM                    
        Operating System:                    None => Any                    


Follow-up Comment #2:

This change was made to fix bug #12078

The problem with the old behavior can be seen in examples provided for bug
#62809 (for grouped targets not pattern rules but the result is the same)
where running "make" can cause things to become out of date, that will not
rebuild until you run "make" again.  Which is not good.

I understand the behavior that used to be available, and I'm not sure how to
recover it.  Basically the rule (now) is that if any target in a multi-target
rule doesn't exist (or is out of date), and any target of a multi-target rule
(and this doesn't have to be the SAME target) is needed as part of the build,
then the recipe will be run and all the targets will be considered to have
been updated.

The simplest answer is to ship the .cxx files that are generated as well as
the .h and .rc files.

The second simplest answer is to remove the %.cxx from the pattern rule, if
it's really true that nothing else in the makefiles actually depends on these
files anyway.

A different answer would be to split the make rules; something like this might

%.h %.rc: %.msg
        [ ! -f $(top_srcdir)/msggen.pl ] || $(PERL) -w $(top_srcdir)/msggen.pl

%.cxx : %.rc
        : built by perl from $*.msg

I'm not sure this is completely correct without knowing more about the build
environment.  In this example, if nothing depends on the .cxx file and it's
missing, then it won't force the Perl script to run.


Reply to this item at:


Message sent via Savannah

reply via email to

[Prev in Thread] Current Thread [Next in Thread]