bugmake - Bugs: bug #49262, Update match-anything rule...

 
 

bug #49262: Update match-anything rule documentation

Submitted by:  Luke Allardyce <lukeallardyce>
Submitted on:  Tue Oct 4 03:47:00 2016  
 
Severity: 3 - NormalItem Group: Documentation
Status: NonePrivacy: Public
Assigned to: NoneOpen/Closed: Open
Component Version: 4.2.1Operating System: None
Fixed Release: NoneTriage Status: None

Add a New Comment (Rich MarkupRich Markup):
   

You are not logged in

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

 

Tue Oct 4 04:34:39 2016, comment #4:

I thought it might be useful to mention it in the chaining section as well as it is behavior specific to implicit rule chaining.

Luke Allardyce <lukeallardyce>
Tue Oct 4 04:26:32 2016, comment #3:

...which is some of the text that you're patching. Sorry, should have looked at the patch first.

That said, I don't thinking bringing up a particular case in match-any rule processing is helpful in that earlier page about implicit-rules; match-any rules are the particular case while implicit-rules are the general case, so the detail belongs in the description of the former, as it is now.

Calling out being the prerequisite of a implicit-rule blocks non-terminal match-any processing? Hmm, I was going to say that it's implied by the last paragraph on the page, but that paragraph is too restrictive, implying .SUFFIXES and similar are involved in the creation of the dummy rules. However, even without dummy rules (as seen in the "-p" output), make will refuse to use a non-terminal match-any rule for a prerequisite. Something does need to be reworded there.

Anonymous
Tue Oct 4 04:04:41 2016, comment #2:

That paragraph doesn't apply to something like

Luke Allardyce <lukeallardyce>
Tue Oct 4 03:58:53 2016, comment #1:

I think this is covered in "10.5.5 Match-Anything Pattern Rules"

-----
If you do not mark the match-anything rule as terminal, then it is
non-terminal. A non-terminal match-anything rule cannot apply to a
file name that indicates a specific type of data. A file name
indicates a specific type of data if some non-match-anything implicit
rule target matches it.

For example, the file name `foo.c' matches the target for the pattern
rule `%.c : %.y' (the rule to run Yacc). Regardless of whether this
rule is actually applicable (which happens only if there is a file
`foo.y'), the fact that its target matches is enough to prevent
consideration of any non-terminal match-anything rules for the file
`foo.c'. Thus, `make' will not even consider trying to make `foo.c' as
an executable file from `foo.c.o', `foo.c.c', `foo.c.p', etc.
-----

Anonymous
Tue Oct 4 03:47:00 2016, original submission:

I couldn't find anything in the manual that documents the behavior described by the following comment in implicit.c

/* Rules that can match any filename and are not terminal
are ignored if we're recursing, so that they cannot be
intermediate files. */

Patch is only a suggestion, it'll probably need improvement.

Luke Allardyce <lukeallardyce>

 

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

Attach File(s):
   
   
Comment:
   

Attached Files
file #38659:  make.patch added by lukeallardyce (2kB - application/octet-stream)

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -unavailable- added by lukeallardyce (Submitted the item)
  •  

    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):

     

     

    Follows 1 latest change.

    Date Changed By Updated Field Previous Value => Replaced By
    Tue Oct 4 03:47:00 2016lukeallardyceAttached File-=>Added make.patch, #38659

    Back to the top


    Powered by Savane 3.1-cleanup1