diff options
-rw-r--r-- | src/main.c | 2 | ||||
-rw-r--r-- | src/variable.c | 5 | ||||
-rw-r--r-- | tests/scripts/options/dash-e | 15 |
3 files changed, 16 insertions, 6 deletions
@@ -1920,7 +1920,7 @@ main (int argc, char **argv, char **envp) allow the user's setting of MAKEOVERRIDES to affect MAKEFLAGS, so a reference to this hidden variable is written instead. */ define_variable_cname ("MAKEOVERRIDES", "${-*-command-variables-*-}", - o_env, 1); + o_default, 1); #ifdef VMS vms_export_dcl_symbol ("MAKEOVERRIDES", "${-*-command-variables-*-}"); #endif diff --git a/src/variable.c b/src/variable.c index 009ee540..7b625aee 100644 --- a/src/variable.c +++ b/src/variable.c @@ -1114,8 +1114,9 @@ target_environment (struct file *file, int recursive) /* If V is recursively expanded and didn't come from the environment, expand its value. If it came from the environment, it should - go back into the environment unchanged. */ - if (v->recursive && v->origin != o_env && v->origin != o_env_override) + go back into the environment unchanged... except MAKEFLAGS. */ + if (v->recursive && ((v->origin != o_env && v->origin != o_env_override) + || streq (v->name, MAKEFLAGS_NAME))) value = cp = recursively_expand_for_file (v, file); /* If this is the SHELL variable remember we already added it. */ diff --git a/tests/scripts/options/dash-e b/tests/scripts/options/dash-e index 944c39df..e4659fb2 100644 --- a/tests/scripts/options/dash-e +++ b/tests/scripts/options/dash-e @@ -1,8 +1,6 @@ # -*-perl-*- -$description = "The following test creates a makefile to ..."; - -$details = ""; +$description = "Test the -e (environment overrides) option"; $ENV{GOOGLE} = 'boggle'; @@ -12,4 +10,15 @@ all:; @echo "$(GOOGLE)" !, '-e', "boggle\n"); +# Ensure variables set on the command line have the origin correct +# See SV 61218 + +run_make_test(q! +$(info FOO [$(origin FOO)]: $(value FOO)) +all: ; +recurse: ; @$(MAKE) -f #MAKEFILE# +!, + '-e --no-print-directory FOO=1 recurse', + "FOO [command line]: 1\nFOO [command line]: 1\n#MAKE#[1]: 'all' is up to date."); + 1; |