Use level o_env_override for MAKEFLAGS so it's reset even with -e.

Fixes Savannah bug #2216.
This commit is contained in:
Paul Smith 2013-05-13 02:17:29 -04:00
parent 381baeef7a
commit 2627d83221
3 changed files with 21 additions and 21 deletions

View File

@ -1,5 +1,9 @@
2013-05-13 Paul Smith <psmith@gnu.org>
* main.c (define_makeflags): Assign o_env_override level to
MAKEFLAGS to ensure it's set even in the presence of -e.
Fixes Savannah bug #2216.
* makeint.h (TRACE_NONE, TRACE_RULE, TRACE_DIRECTORY): Define
constants for the trace mode.
* main.c: Add new --trace mode parsing.

14
main.c
View File

@ -3150,14 +3150,14 @@ define_makeflags (int all, int makefile)
if (flagstring[0] == '-' && flagstring[1] != '-')
++flagstring;
v = define_variable_cname ("MAKEFLAGS", flagstring,
/* This used to use o_env, but that lost when a
makefile defined MAKEFLAGS. Makefiles set
MAKEFLAGS to add switches, but we still want
to redefine its value with the full set of
switches. Of course, an override or command
/* This used to use o_env, but that lost when a makefile defined MAKEFLAGS.
Makefiles set MAKEFLAGS to add switches, but we still want to redefine
its value with the full set of switches. Then we used o_file, but that
lost when users added -e, causing a previous MAKEFLAGS env. var. to take
precedence over the new one. Of course, an override or command
definition will still take precedence. */
o_file, 1);
v = define_variable_cname ("MAKEFLAGS", flagstring,
env_overrides ? o_env_override : o_file, 1);
if (! all)
/* The first time we are called, set MAKEFLAGS to always be exported.

View File

@ -14,10 +14,9 @@ all: ; @echo $(MAKEFLAGS)
run_make_test(q!
all: ; @echo $(MAKEFLAGS)
!,
'--no-print-directory -e -r -R', '--no-print-directory -Rre');
'--no-print-directory -e -r -R --trace=none --trace=dir', '--no-print-directory --trace=none --trace=dir -Rre');
if ($all_tests) {
# Recursive invocations of make should accumulate MAKEFLAGS values.
# Savannah bug #2216
run_make_test(q!
@ -26,18 +25,15 @@ all:
@echo '$@: MAKEFLAGS=$(MAKEFLAGS)'
@MSG=Works $(MAKE) -e -f #MAKEFILE# jump
jump:
@echo '$@: MAKEFLAGS=$(MAKEFLAGS)'
@echo '$@ $(MSG): MAKEFLAGS=$(MAKEFLAGS)'
@$(MAKE) -f #MAKEFILE# print
print:
@echo '$@: MAKEFLAGS=$(MAKEFLAGS)'
@echo $(MSG)
@echo '$@ $(MSG): MAKEFLAGS=$(MAKEFLAGS)'
.PHONY: all jump print
!,
'--no-print-directory',
'all: MAKEFLAGS=--no-print-directory
jump: MAKEFLAGS= --no-print-directory -e
print: MAKEFLAGS= --no-print-directory -e
Works');
}
jump Works: MAKEFLAGS=--no-print-directory -e
print Works: MAKEFLAGS=--no-print-directory -e');
1;