Austin Group Defect Tracker

Aardvark Mark IV


Viewing Issue Simple Details Jump to Notes ] Issue History ] Print ]
ID Category Severity Type Date Submitted Last Update
0001520 [Issue 8 drafts] Shell and Utilities Comment Enhancement Request 2021-09-07 09:44 2021-09-07 10:39
Reporter joerg View Status public  
Assigned To
Priority normal Resolution Open  
Status New   Product Version Draft 2.1
Name Jörg Schilling
Organization
User Reference
Section make
Page Number 2947-2948
Line Number 98896-98920
Final Accepted Text
Summary 0001520: make should support the $^ internal macro
Description The $^ internal macro is supported by major make implementations since many
years but it is not mentioned in the POSIX standard.

SunPro Make, smake and gmake support $^ with the same meaning since at
least 25 years.

BSD make supports the same meaning under a different name ($>).
BSD make therefore would just need to add an alias for an existing
feature which seems to be a minor effort.

A possible reason for the missing $^ in POSIX may be that the SunPro Make
implementation supports that internal macro since a long time but did not
document it for unknown reason, causing the impression this may be a
gmake only extension.

Desired Action On page 2947 after line 98895 add:

The $^ macro shall evaluate to the list of prerequisites for the current
target. It shall be evaluated for both target and inference rules.

If the list of prerequisites of the target contains .WAIT pseudo targets,
the .WAIT pseudo targets shall not be part of the list expanded from $^.

On page 2948 after line 98919 add:

$^ member.s2
Tags No tags attached.
Attached Files

- Relationships

-  Notes
(0005495)
joerg (reporter)
2021-09-07 10:39
edited on: 2021-09-07 11:36

I am sorry, I just see that I was mistaken with the occurence of the
.WAIT pseudo target in the list created by $^. It seems that I did
not remember my previous test results correctly and the SunPro Make
documentation is still incomplete even though I enhance it on a
regular base.

SunPro Make includes .WAIT in that $^ list.

BSD make replaces the first .WAIT by .WAIT_1, the second .WAIT by .WAIT_2, ...
and includes that in the $> list.

It may thus need a discussion whether we make the exclusion of .WAIT
from the $^ list optional.

For the SunPro Make case, it would be sufficient to use this:

  $(^:.WAIT=)

instead of jist $^. For this reason, it would make sense to replace:

If the list of prerequisites of the target contains .WAIT pseudo targets,
the .WAIT pseudo targets shall not be part of the list expanded from $^.

by:

If the list of prerequisites of the target contains .WAIT pseudo targets,
it is unspecified whether .WAIT pseudo targets appear in the list expanded
from $^, it is recommended to use $(^:.WAIT=).

... if BSD make would implement $^ in a way that does not modify the .WAIT
entries.


- Issue History
Date Modified Username Field Change
2021-09-07 09:44 joerg New Issue
2021-09-07 09:44 joerg Name => Jörg Schilling
2021-09-07 09:44 joerg Section => make
2021-09-07 09:44 joerg Page Number => 2947-2948
2021-09-07 09:44 joerg Line Number => 98896-98920
2021-09-07 09:57 geoffclare Description Updated
2021-09-07 10:39 joerg Note Added: 0005495
2021-09-07 11:23 joerg Note Edited: 0005495
2021-09-07 11:36 joerg Note Edited: 0005495
2021-09-07 11:36 joerg Note Edited: 0005495


Mantis 1.1.6[^]
Copyright © 2000 - 2008 Mantis Group
Powered by Mantis Bugtracker