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
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make

Reply via email to