bugmake - Bugs: bug #13881, Double colon static pattern rules...


bug #13881: Double colon static pattern rules not working properly in 3.81beta3

Submitter:  Reid Madsen <srmadsen>
Submitted:  Thu 21 Jul 2005 07:46:19 PM UTC
Severity:  3 - Normal Item Group:  Bug
Status:  Fixed Privacy:  Public
Assigned to:  bosk Open/Closed:  Closed
Component Version:  4.0 Operating System:  Any
Fixed Release:  3.81 Triage Status:  None
* Mandatory Fields

Add a New Comment Rich Markup

Wed 10 Aug 2005 10:23:10 AM UTC, comment #3: 

Fixed in CVS HEAD. Thanks for reporting it.

Boris Kolpackov <bosk>
Group Member
Thu 04 Aug 2005 07:53:07 AM UTC, comment #2: 

Paul, I will take a look at it in a day or two. Thanks for letting me know.

Boris Kolpackov <bosk>
Group Member
Wed 03 Aug 2005 08:27:09 PM UTC, comment #1: 

Hi Boris; this one is in your stuff.  I investigated and the problem is that with the new secondary expansion the dependencies in the static pattern are converted so that the percent is turned into a $* reference.  But, in the case of double-colon static pattern rules, there is no file->stem value defined.  It looks like the code in read.c:record_files() which handles double-colon targets is not setting that value: only the single-colon handling branch does.  Look around read.c:2116 in the latest CVS and see how that is only in the single-colon section of the code.

If I get a chance I'll look at it more closely.

Paul D. Smith <psmith>
Group administrator
Thu 21 Jul 2005 07:46:19 PM UTC, original submission:  

The following was supported by V3.80 (and earlier):

TARGETS += all
TARGETS += depend

$(TARGETS):: ; @true
$(TARGETS):: % : %.serial %.parallel
$(addsuffix .serial, $(TARGETS))::
$(addsuffix .parallel, $(TARGETS)):

But starting with V3.81, the above results in:

make-3.81-beta3: * No rule to make target `.serial', needed by `nothing'.  Stop.

In the above example, if change the '::' to ':', the bug goes away.  However, doing so, breaks all our existing Makefiles where 'all' and 'depend' are '::' targets with multiple commands.

The pattern rules should work with both ':' and '::' targets.
I've included a simple Makefile for your use.

Reid Madsen

Reid Madsen <srmadsen>


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

Attach Files:

Attached Files
file #3260:  Makefile added by srmadsen (430B - application/octet-stream - Sample Makefile that works fine with V3.80, and earlier.)


Depends on the following items: None found

Items that depend on this one: None found


CC list is empty


There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

Only logged-in users can vote.


Follow 8 latest changes.

Date Changed by Updated Field Previous Value => Replaced by
2006-04-01 psmith Fixed Release4.0 3.81
2005-08-10 bosk StatusNone Fixed
    Open/ClosedOpen Closed
    Fixed ReleaseNone 4.0
2005-08-03 psmith Assigned toNone bosk
    Component Version3.80 4.0
    SummaryRegression in pattern rule functionality between V3.80 and V3.81beta3 Double colon static pattern rules not working properly in 3.81beta3
2005-07-21 srmadsen Attached File- Added Makefile, #2731

Back to the top

Powered by Savane 3.12