aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/kconfig
diff options
context:
space:
mode:
authorJosh Triplett <josh@joshtriplett.org>2014-04-07 18:39:09 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2014-04-07 19:36:09 -0400
commit5d2acfc7b974bbd3858b4dd3f2cdc6362dd8843a (patch)
tree56f5180ef6aa210b9ef9d21dc489520f4b81866d /scripts/kconfig
parent527518f1a9ecc1eb17615e99e7b1233cf9322a49 (diff)
kconfig: make allnoconfig disable options behind EMBEDDED and EXPERT
"make allnoconfig" exists to ease testing of minimal configurations. Documentation/SubmitChecklist includes a note to test with allnoconfig. This helps catch missing dependencies on common-but-not-required functionality, which might otherwise go unnoticed. However, allnoconfig still leaves many symbols enabled, because they're hidden behind CONFIG_EMBEDDED or CONFIG_EXPERT. For instance, allnoconfig still has CONFIG_PRINTK and CONFIG_BLOCK enabled, so drivers don't typically get build-tested with those disabled. To address this, introduce a new Kconfig option "allnoconfig_y", used on symbols which only exist to hide other symbols. Set it on CONFIG_EMBEDDED (which then selects CONFIG_EXPERT). allnoconfig will then disable all the symbols hidden behind those. Signed-off-by: Josh Triplett <josh@joshtriplett.org> Tested-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Cc: Michal Marek <mmarek@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'scripts/kconfig')
-rw-r--r--scripts/kconfig/confdata.c5
-rw-r--r--scripts/kconfig/expr.h3
-rw-r--r--scripts/kconfig/lkc.h1
-rw-r--r--scripts/kconfig/menu.c3
-rw-r--r--scripts/kconfig/zconf.gperf1
-rw-r--r--scripts/kconfig/zconf.hash.c_shipped13
6 files changed, 20 insertions, 6 deletions
diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
index 87f723804079..f88d90f20228 100644
--- a/scripts/kconfig/confdata.c
+++ b/scripts/kconfig/confdata.c
@@ -1178,7 +1178,10 @@ bool conf_set_all_new_symbols(enum conf_def_mode mode)
1178 sym->def[S_DEF_USER].tri = mod; 1178 sym->def[S_DEF_USER].tri = mod;
1179 break; 1179 break;
1180 case def_no: 1180 case def_no:
1181 sym->def[S_DEF_USER].tri = no; 1181 if (sym->flags & SYMBOL_ALLNOCONFIG_Y)
1182 sym->def[S_DEF_USER].tri = yes;
1183 else
1184 sym->def[S_DEF_USER].tri = no;
1182 break; 1185 break;
1183 case def_random: 1186 case def_random:
1184 sym->def[S_DEF_USER].tri = no; 1187 sym->def[S_DEF_USER].tri = no;
diff --git a/scripts/kconfig/expr.h b/scripts/kconfig/expr.h
index ba663e1dc7e3..412ea8a2abb8 100644
--- a/scripts/kconfig/expr.h
+++ b/scripts/kconfig/expr.h
@@ -109,6 +109,9 @@ struct symbol {
109/* choice values need to be set before calculating this symbol value */ 109/* choice values need to be set before calculating this symbol value */
110#define SYMBOL_NEED_SET_CHOICE_VALUES 0x100000 110#define SYMBOL_NEED_SET_CHOICE_VALUES 0x100000
111 111
112/* Set symbol to y if allnoconfig; used for symbols that hide others */
113#define SYMBOL_ALLNOCONFIG_Y 0x200000
114
112#define SYMBOL_MAXLENGTH 256 115#define SYMBOL_MAXLENGTH 256
113#define SYMBOL_HASHSIZE 9973 116#define SYMBOL_HASHSIZE 9973
114 117
diff --git a/scripts/kconfig/lkc.h b/scripts/kconfig/lkc.h
index 09f4edfdc911..d5daa7af8b49 100644
--- a/scripts/kconfig/lkc.h
+++ b/scripts/kconfig/lkc.h
@@ -61,6 +61,7 @@ enum conf_def_mode {
61#define T_OPT_MODULES 1 61#define T_OPT_MODULES 1
62#define T_OPT_DEFCONFIG_LIST 2 62#define T_OPT_DEFCONFIG_LIST 2
63#define T_OPT_ENV 3 63#define T_OPT_ENV 3
64#define T_OPT_ALLNOCONFIG_Y 4
64 65
65struct kconf_id { 66struct kconf_id {
66 int name; 67 int name;
diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c
index db1512ae30cc..3ac2c9c6e280 100644
--- a/scripts/kconfig/menu.c
+++ b/scripts/kconfig/menu.c
@@ -217,6 +217,9 @@ void menu_add_option(int token, char *arg)
217 case T_OPT_ENV: 217 case T_OPT_ENV:
218 prop_add_env(arg); 218 prop_add_env(arg);
219 break; 219 break;
220 case T_OPT_ALLNOCONFIG_Y:
221 current_entry->sym->flags |= SYMBOL_ALLNOCONFIG_Y;
222 break;
220 } 223 }
221} 224}
222 225
diff --git a/scripts/kconfig/zconf.gperf b/scripts/kconfig/zconf.gperf
index f14ab41154b6..b6ac02d604f1 100644
--- a/scripts/kconfig/zconf.gperf
+++ b/scripts/kconfig/zconf.gperf
@@ -44,4 +44,5 @@ on, T_ON, TF_PARAM
44modules, T_OPT_MODULES, TF_OPTION 44modules, T_OPT_MODULES, TF_OPTION
45defconfig_list, T_OPT_DEFCONFIG_LIST,TF_OPTION 45defconfig_list, T_OPT_DEFCONFIG_LIST,TF_OPTION
46env, T_OPT_ENV, TF_OPTION 46env, T_OPT_ENV, TF_OPTION
47allnoconfig_y, T_OPT_ALLNOCONFIG_Y,TF_OPTION
47%% 48%%
diff --git a/scripts/kconfig/zconf.hash.c_shipped b/scripts/kconfig/zconf.hash.c_shipped
index 40df0005daa9..c77a8eff1ef2 100644
--- a/scripts/kconfig/zconf.hash.c_shipped
+++ b/scripts/kconfig/zconf.hash.c_shipped
@@ -55,10 +55,10 @@ kconf_id_hash (register const char *str, register unsigned int len)
55 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 55 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
56 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 56 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
57 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 57 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
58 73, 73, 73, 73, 73, 73, 73, 73, 25, 25, 58 73, 73, 73, 73, 73, 73, 73, 5, 25, 25,
59 0, 0, 0, 5, 0, 0, 73, 73, 5, 0, 59 0, 0, 0, 5, 0, 0, 73, 73, 5, 0,
60 10, 5, 45, 73, 20, 20, 0, 15, 15, 73, 60 10, 5, 45, 73, 20, 20, 0, 15, 15, 73,
61 20, 73, 73, 73, 73, 73, 73, 73, 73, 73, 61 20, 5, 73, 73, 73, 73, 73, 73, 73, 73,
62 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 62 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
63 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 63 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
64 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 64 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
@@ -106,6 +106,7 @@ struct kconf_id_strings_t
106 char kconf_id_strings_str23[sizeof("mainmenu")]; 106 char kconf_id_strings_str23[sizeof("mainmenu")];
107 char kconf_id_strings_str25[sizeof("menuconfig")]; 107 char kconf_id_strings_str25[sizeof("menuconfig")];
108 char kconf_id_strings_str27[sizeof("modules")]; 108 char kconf_id_strings_str27[sizeof("modules")];
109 char kconf_id_strings_str28[sizeof("allnoconfig_y")];
109 char kconf_id_strings_str29[sizeof("menu")]; 110 char kconf_id_strings_str29[sizeof("menu")];
110 char kconf_id_strings_str31[sizeof("select")]; 111 char kconf_id_strings_str31[sizeof("select")];
111 char kconf_id_strings_str32[sizeof("comment")]; 112 char kconf_id_strings_str32[sizeof("comment")];
@@ -141,6 +142,7 @@ static const struct kconf_id_strings_t kconf_id_strings_contents =
141 "mainmenu", 142 "mainmenu",
142 "menuconfig", 143 "menuconfig",
143 "modules", 144 "modules",
145 "allnoconfig_y",
144 "menu", 146 "menu",
145 "select", 147 "select",
146 "comment", 148 "comment",
@@ -170,7 +172,7 @@ kconf_id_lookup (register const char *str, register unsigned int len)
170{ 172{
171 enum 173 enum
172 { 174 {
173 TOTAL_KEYWORDS = 32, 175 TOTAL_KEYWORDS = 33,
174 MIN_WORD_LENGTH = 2, 176 MIN_WORD_LENGTH = 2,
175 MAX_WORD_LENGTH = 14, 177 MAX_WORD_LENGTH = 14,
176 MIN_HASH_VALUE = 2, 178 MIN_HASH_VALUE = 2,
@@ -219,7 +221,8 @@ kconf_id_lookup (register const char *str, register unsigned int len)
219 {-1}, 221 {-1},
220#line 44 "scripts/kconfig/zconf.gperf" 222#line 44 "scripts/kconfig/zconf.gperf"
221 {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str27, T_OPT_MODULES, TF_OPTION}, 223 {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str27, T_OPT_MODULES, TF_OPTION},
222 {-1}, 224#line 47 "scripts/kconfig/zconf.gperf"
225 {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str28, T_OPT_ALLNOCONFIG_Y,TF_OPTION},
223#line 16 "scripts/kconfig/zconf.gperf" 226#line 16 "scripts/kconfig/zconf.gperf"
224 {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str29, T_MENU, TF_COMMAND}, 227 {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str29, T_MENU, TF_COMMAND},
225 {-1}, 228 {-1},
@@ -282,5 +285,5 @@ kconf_id_lookup (register const char *str, register unsigned int len)
282 } 285 }
283 return 0; 286 return 0;
284} 287}
285#line 47 "scripts/kconfig/zconf.gperf" 288#line 48 "scripts/kconfig/zconf.gperf"
286 289