From 8642463d981c93d188814b11fdc81e17719aab05 Mon Sep 17 00:00:00 2001 From: Yong Wang Date: Fri, 5 Feb 2010 10:07:51 +0800 Subject: [PATCH] kbuild: add a "nonintconfig" option to the Makefile Add a "nonintconfig" option to the Makefile needed for unattended builds. This patch is from Arjan ven de Ven Signed-off-by: Yong Wang --- scripts/kconfig/Makefile | 5 +++++ scripts/kconfig/conf.c | 36 ++++++++++++++++++++++++++++++++---- 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile index 999e8a7..fb3cdee 100644 --- a/scripts/kconfig/Makefile +++ b/scripts/kconfig/Makefile @@ -30,6 +30,11 @@ silentoldconfig: $(obj)/conf $(Q)mkdir -p include/generated $< -s $(Kconfig) +nonint_oldconfig: $(obj)/conf + $< -b $(Kconfig) +loose_nonint_oldconfig: $(obj)/conf + $< -B $(Kconfig) + localmodconfig: $(obj)/streamline_config.pl $(obj)/conf $(Q)perl $< $(srctree) $(Kconfig) > .tmp.config $(Q)if [ -f .config ]; then \ diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c index 9960d1c..bf6a528 100644 --- a/scripts/kconfig/conf.c +++ b/scripts/kconfig/conf.c @@ -23,6 +23,8 @@ enum { ask_all, ask_new, ask_silent, + dont_ask, + dont_ask_dont_tell, set_default, set_yes, set_mod, @@ -38,6 +40,8 @@ static int conf_cnt; static char line[128]; static struct menu *rootEntry; +static int return_value = 0; + static void print_help(struct menu *menu) { struct gstr help = str_new(); @@ -360,7 +364,10 @@ static void conf(struct menu *menu) switch (prop->type) { case P_MENU: - if (input_mode == ask_silent && rootEntry != menu) { + if ((input_mode == ask_silent || + input_mode == dont_ask || + input_mode == dont_ask_dont_tell) && + rootEntry != menu) { check_conf(menu); return; } @@ -418,12 +425,21 @@ static void check_conf(struct menu *menu) if (sym && !sym_has_value(sym)) { if (sym_is_changable(sym) || (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)) { + if (input_mode == dont_ask || + input_mode == dont_ask_dont_tell) { + if (input_mode == dont_ask && + sym->name && !sym_is_choice_value(sym)) { + fprintf(stderr,"CONFIG_%s\n",sym->name); + ++return_value; + } + } else { if (!conf_cnt++) printf(_("*\n* Restart config...\n*\n")); rootEntry = menu_get_parent_menu(menu); conf(rootEntry); } } + } for (child = menu->list; child; child = child->next) check_conf(child); @@ -439,7 +455,7 @@ int main(int ac, char **av) bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); - while ((opt = getopt(ac, av, "osdD:nmyrh")) != -1) { + while ((opt = getopt(ac, av, "osbBdD:nmyrh")) != -1) { switch (opt) { case 'o': input_mode = ask_silent; @@ -448,6 +464,12 @@ int main(int ac, char **av) input_mode = ask_silent; sync_kconfig = 1; break; + case 'b': + input_mode = dont_ask; + break; + case 'B': + input_mode = dont_ask_dont_tell; + break; case 'd': input_mode = set_default; break; @@ -525,6 +547,8 @@ int main(int ac, char **av) case ask_silent: case ask_all: case ask_new: + case dont_ask: + case dont_ask_dont_tell: conf_read(NULL); break; case set_no: @@ -586,12 +610,16 @@ int main(int ac, char **av) conf(&rootmenu); input_mode = ask_silent; /* fall through */ + case dont_ask: + case dont_ask_dont_tell: case ask_silent: /* Update until a loop caused no more changes */ do { conf_cnt = 0; check_conf(&rootmenu); - } while (conf_cnt); + } while (conf_cnt && + (input_mode != dont_ask && + input_mode != dont_ask_dont_tell)); break; } @@ -613,5 +641,5 @@ int main(int ac, char **av) exit(1); } } - return 0; + return return_value; } -- 1.5.5.1