diff options
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 28 |
1 files changed, 24 insertions, 4 deletions
@@ -1767,13 +1767,33 @@ main (int argc, char **argv, char **envp) } #endif /* __MSDOS__ || __EMX__ */ - /* Decode switches again, in case the variables were set by the makefile. */ - decode_env_switches (STRING_SIZE_TUPLE ("GNUMAKEFLAGS")); - decode_env_switches (STRING_SIZE_TUPLE ("MAKEFLAGS")); + { + int old_builtin_rules_flag = no_builtin_rules_flag; + int old_builtin_variables_flag = no_builtin_variables_flag; + + /* Decode switches again, for variables set by the makefile. */ + decode_env_switches (STRING_SIZE_TUPLE ("GNUMAKEFLAGS")); + decode_env_switches (STRING_SIZE_TUPLE ("MAKEFLAGS")); #if 0 - decode_env_switches (STRING_SIZE_TUPLE ("MFLAGS")); + decode_env_switches (STRING_SIZE_TUPLE ("MFLAGS")); #endif + /* If we've disabled builtin rules, get rid of them. */ + if (no_builtin_rules_flag && ! old_builtin_rules_flag) + { + if (suffix_file->builtin) + { + free_dep_chain (suffix_file->deps); + suffix_file->deps = 0; + } + define_variable_cname ("SUFFIXES", "", o_default, 0); + } + + /* If we've disabled builtin variables, get rid of them. */ + if (no_builtin_variables_flag && ! old_builtin_variables_flag) + undefine_default_variables (); + } + #if defined (__MSDOS__) || defined (__EMX__) if (job_slots != 1 # ifdef __EMX__ |