aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Engelhardt <jengelh@computergmbh.de>2008-01-03 17:33:44 -0500
committerSam Ravnborg <sam@ravnborg.org>2008-01-28 17:14:37 -0500
commitd84876f9f8042d5536050b83674c4f348ca3c4df (patch)
tree86445ec7cc38d3348405492abf147e38f3630e1c
parent09af091f50409a60a72086c737b9a6224dde5ab8 (diff)
kconfig: allow overriding symbols
Allow config variables in .config to override earlier ones in the same file. In other words, # CONFIG_SECURITY is not defined CONFIG_SECURITY=y will activate it. This makes it a bit easier to do cat original-config myconfig myconfig2 ... >.config; and run *config as expected. Signed-off-by: Jan Engelhardt <jengelh@computergmbh.de> Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Cc: Roman Zippel <zippel@linux-m68k.org> Cc: Randy Dunlap <randy.dunlap@oracle.com>
-rw-r--r--scripts/kconfig/confdata.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
index e0f402f3b75d..2eccefb03a93 100644
--- a/scripts/kconfig/confdata.c
+++ b/scripts/kconfig/confdata.c
@@ -232,8 +232,7 @@ load:
232 sym->type = S_BOOLEAN; 232 sym->type = S_BOOLEAN;
233 } 233 }
234 if (sym->flags & def_flags) { 234 if (sym->flags & def_flags) {
235 conf_warning("trying to reassign symbol %s", sym->name); 235 conf_warning("override: reassigning to symbol %s", sym->name);
236 break;
237 } 236 }
238 switch (sym->type) { 237 switch (sym->type) {
239 case S_BOOLEAN: 238 case S_BOOLEAN:
@@ -272,8 +271,7 @@ load:
272 sym->type = S_OTHER; 271 sym->type = S_OTHER;
273 } 272 }
274 if (sym->flags & def_flags) { 273 if (sym->flags & def_flags) {
275 conf_warning("trying to reassign symbol %s", sym->name); 274 conf_warning("override: reassigning to symbol %s", sym->name);
276 break;
277 } 275 }
278 if (conf_set_sym_val(sym, def, def_flags, p)) 276 if (conf_set_sym_val(sym, def, def_flags, p))
279 continue; 277 continue;
@@ -297,11 +295,9 @@ load:
297 } 295 }
298 break; 296 break;
299 case yes: 297 case yes:
300 if (cs->def[def].tri != no) { 298 if (cs->def[def].tri != no)
301 conf_warning("%s creates inconsistent choice state", sym->name); 299 conf_warning("override: %s changes choice state", sym->name);
302 cs->flags &= ~def_flags; 300 cs->def[def].val = sym;
303 } else
304 cs->def[def].val = sym;
305 break; 301 break;
306 } 302 }
307 cs->def[def].tri = E_OR(cs->def[def].tri, sym->def[def].tri); 303 cs->def[def].tri = E_OR(cs->def[def].tri, sym->def[def].tri);