bugmake - Bugs: bug #12078, Failure to recognise updated file...


bug #12078: Failure to recognise updated file from pattern rule with multiple targets

Submitted by:  None
Submitted on:  Mon 21 Feb 2005 04:56:58 PM UTC  
Severity: 3 - NormalItem Group: Bug
Status: NonePrivacy: Public
Assigned to: NoneOpen/Closed: Open
Component Version: 3.80Operating System: Any
Fixed Release: NoneTriage Status: None

Add a New Comment(Rich Markup)

You are not logged in

Please log in, so followups can be emailed to you.


Fri 24 Sep 2010 06:29:17 PM UTC, comment #2:

Hi folks, thanks for all the hard work.

Any chance of this one being fixed any time soon? After all, pattern rules are the only way of telling make about a program that produces two or more output files. This bug means that it is necessary to run make twice or more when lex (say) is present during a build.

I have a build where many targets are built by a single invocation of a custom tool. I haven't really found a nice work around for this bug.

Tue 01 Mar 2005 05:27:07 PM UTC, comment #1:

Hm. Ouch. The problem is that by the time make notices that b.1st needs to be rebuilt, it's already examined a.2nd and a.1st and determined they DIDN'T need to be rebuilt. So, it never notices that after b.1st, a.2nd is now out of date.

To fix this, make should check ALL of the co-targets for update when it checks the FIRST co-target.

I'm not sure this change will make it into the next release though.

Paul D. Smith <psmith>
Project Administrator
Mon 21 Feb 2005 04:56:58 PM UTC, original submission:

Consider this:

$ cat Makefile
1st := a.1st b.1st c.1st
2nd := ${1st:.1st=.2nd}

.PHONY: all
all: ${2nd}

a.% b.% c.%: # All the *.1st files are created by a single invocation
touch ${1st}

${2nd}: %.2nd: %.1st
cat $< >$@

$ make
touch a.1st b.1st c.1st
cat a.1st >a.2nd
cat b.1st >b.2nd
cat c.1st >c.2nd
$ make
make: Nothing to be done for `all'.

Fine. All files are up to date.

$ rm b.1st
$ make
touch a.1st b.1st c.1st
cat b.1st >b.2nd
cat c.1st >c.2nd

Urk! a.2nd is out of date with respect to a.1st. We need to run make again.

$ make
cat a.1st >a.2nd




(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach File(s):

Attached Files
file #2603:  Makefile added by None (335B - application/octet-stream - After a sucessful make invocation, things are still not up to date)


Depends on the following items: None found

Items that depend on this one: None found


CC list is empty


Do you think this task is very important?
If so, you can click here to add your encouragement to it.
This task has 0 encouragements so far.

Only logged-in users can vote.


Please enter the title of George Orwell's famous dystopian book (it's a date):



Follow 2 latest changes.

Date Changed By Updated Field Previous Value => Replaced By
Mon 21 Feb 2005 05:08:11 PM UTCbobbogoCarbon-Copy-=>Added bobbogo
Mon 21 Feb 2005 04:56:58 PM UTCNoneAttached File-=>Added Makefile, #2225

Back to the top

Powered by Savane 3.1-cleanup1