From 2627d8322136eac2b499dd12e2769eb01d7c74bc Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Mon, 13 May 2013 02:17:29 -0400 Subject: Use level o_env_override for MAKEFLAGS so it's reset even with -e. Fixes Savannah bug #2216. --- ChangeLog | 4 ++++ main.c | 14 +++++++------- tests/scripts/variables/MAKEFLAGS | 24 ++++++++++-------------- 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 + * 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; -- cgit v1.2.3