mirror of
https://github.com/mirror/make.git
synced 2025-02-04 08:40:27 +08:00
Use level o_env_override for MAKEFLAGS so it's reset even with -e.
Fixes Savannah bug #2216.
This commit is contained in:
parent
381baeef7a
commit
2627d83221
@ -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
14
main.c
@ -3150,14 +3150,14 @@ define_makeflags (int all, int makefile)
|
||||
if (flagstring[0] == '-' && flagstring[1] != '-')
|
||||
++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. 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. */
|
||||
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
|
||||
definition will still take precedence. */
|
||||
o_file, 1);
|
||||
env_overrides ? o_env_override : o_file, 1);
|
||||
|
||||
if (! all)
|
||||
/* The first time we are called, set MAKEFLAGS to always be exported.
|
||||
|
@ -1,4 +1,4 @@
|
||||
# -*-perl-*-
|
||||
# -*-perl-*-
|
||||
|
||||
$description = "Test proper behavior of MAKEFLAGS";
|
||||
|
||||
@ -14,30 +14,26 @@ 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!
|
||||
# Recursive invocations of make should accumulate MAKEFLAGS values.
|
||||
# Savannah bug #2216
|
||||
run_make_test(q!
|
||||
MSG = Fails
|
||||
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');
|
||||
}
|
||||
'all: MAKEFLAGS=--no-print-directory
|
||||
jump Works: MAKEFLAGS=--no-print-directory -e
|
||||
print Works: MAKEFLAGS=--no-print-directory -e');
|
||||
|
||||
1;
|
||||
|
Loading…
Reference in New Issue
Block a user