summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Smith <psmith@gnu.org>2013-05-13 02:17:29 -0400
committerPaul Smith <psmith@gnu.org>2013-05-13 02:30:14 -0400
commit2627d8322136eac2b499dd12e2769eb01d7c74bc (patch)
tree365fc770ea9b4213519dcc98984d8539a2145fa2
parent381baeef7aa4f2c8758a9910ebb97af46c0dd7eb (diff)
downloadgunmake-2627d8322136eac2b499dd12e2769eb01d7c74bc.tar.gz
Use level o_env_override for MAKEFLAGS so it's reset even with -e.
Fixes Savannah bug #2216.
-rw-r--r--ChangeLog4
-rw-r--r--main.c14
-rw-r--r--tests/scripts/variables/MAKEFLAGS24
3 files changed, 21 insertions, 21 deletions
diff --git a/ChangeLog b/ChangeLog
index 57803f0..d73e22d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
diff --git a/main.c b/main.c
index fe0f54e..f3c4a3d 100644
--- a/main.c
+++ b/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.
diff --git a/tests/scripts/variables/MAKEFLAGS b/tests/scripts/variables/MAKEFLAGS
index 0b567e8..a417388 100644
--- a/tests/scripts/variables/MAKEFLAGS
+++ b/tests/scripts/variables/MAKEFLAGS
@@ -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;