[SV 46013] Allow recursive variable overrides from Makefiles

Ensure that variable overrides are passed to recursive make instances
even if no overrides were provided on the command line.
Fix suggested by Rici Lake <ricilake@gmail.com>

* src/main.c (define_makeflags): Add overrides without respect to the
value of command_variables.
* tests/scripts/features/recursion: Add a test.
This commit is contained in:
Paul Smith
2019-05-19 12:16:14 -04:00
parent da2b275658
commit d7ff21ecd7
2 changed files with 38 additions and 25 deletions

View File

@@ -5,16 +5,17 @@ $details = "DETAILS";
# Test some basic recursion.
run_make_test('
.RECIPEPREFIX := |
all:
$(MAKE) -f #MAKEFILE# foo
| $(MAKE) -f #MAKEFILE# foo
foo:
@echo $(MAKE)
@echo MAKELEVEL = $(MAKELEVEL)
$(MAKE) -f #MAKEFILE# last
| @echo $(MAKE)
| @echo MAKELEVEL = $(MAKELEVEL)
| $(MAKE) -f #MAKEFILE# last
last:
@echo $(MAKE)
@echo MAKELEVEL = $(MAKELEVEL)
@echo THE END
| @echo $(MAKE)
| @echo MAKELEVEL = $(MAKELEVEL)
| @echo THE END
',
('CFLAGS=-O -w' . ($parallel_jobs ? ' -j 2' : '')),
($vos
@@ -52,4 +53,15 @@ all: ; @echo "MAKEOVERRIDES = $(MAKEOVERRIDES)"
MAKEOVERRIDES = a=AA
');
# SV 46013: Ensure that MAKEOVERRIDES is passed even if set in the makefile
run_make_test(q!
ifeq ($(MAKELEVEL),0)
MAKEOVERRIDES += FOO+=bar
endif
.PHONY: M R
M: ; @$(MAKE) --no-print-directory -f #MAKEFILE# R
R: ; @echo '$(FOO)'
!,
'', 'bar');
1;