Dear GNU make maintainers,
I've found a use case in which a chain of prerequisite targets appears to
ignore the private modifier on a pattern specific variable definition. This
occurs in gnu make 3.82. Please find a simple example of this use case below.
This seems like a bug, can someone please confirm that this is not the desired
behavior before I send in a bug report?
Thanks,
-Ruben Brown
Makefile:
IMMEDIATE :=
DEFFERED =
STR = IMMEDIATE[$(IMMEDIATE)] DEFFERED[$(DEFFERED)]
debug: all
debug: IMMEDIATE += -debug
debug: DEFFERED += -debug
debug:
@echo debug: $(STR)
all: build
al%: private IMMEDIATE += -implicit
al%: private DEFFERED += -implicit
al%:
@echo $@: $(STR)
build:
@echo build: $(STR)
Output:
$make-3.82 debug
build: IMMEDIATE[-debug -implicit] DEFFERED[-debug -implicit]
all: IMMEDIATE[-debug -implicit] DEFFERED[-debug -implicit]
debug: IMMEDIATE[-debug] DEFFERED[-debug]
$make-3.82 all
build: IMMEDIATE[] DEFFERED[]
all: IMMEDIATE[-implicit] DEFFERED[-implicit]
Expected Behavior:
As I understand it the -implicit string should never occur outside the
evaluation of the all target. E.G. The output of the debug target evaluation
above should be, with the non-private -debug modification taking effect, and
the private -implicit modification not taking effect outside the all target.
$make-3.82 debug
build: IMMEDIATE[-debug] DEFFERED[-debug]
all: IMMEDIATE[-debug -implicit] DEFFERED[-debug -implicit]
debug: IMMEDIATE[-debug] DEFFERED[-debug]
_______________________________________________
Bug-make mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-make