diff options
author | Josh Triplett <josh@joshtriplett.org> | 2014-04-07 18:39:09 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-04-07 19:36:09 -0400 |
commit | 5d2acfc7b974bbd3858b4dd3f2cdc6362dd8843a (patch) | |
tree | 56f5180ef6aa210b9ef9d21dc489520f4b81866d /scripts/kconfig | |
parent | 527518f1a9ecc1eb17615e99e7b1233cf9322a49 (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.c | 5 | ||||
-rw-r--r-- | scripts/kconfig/expr.h | 3 | ||||
-rw-r--r-- | scripts/kconfig/lkc.h | 1 | ||||
-rw-r--r-- | scripts/kconfig/menu.c | 3 | ||||
-rw-r--r-- | scripts/kconfig/zconf.gperf | 1 | ||||
-rw-r--r-- | scripts/kconfig/zconf.hash.c_shipped | 13 |
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 | ||
65 | struct kconf_id { | 66 | struct 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 | |||
44 | modules, T_OPT_MODULES, TF_OPTION | 44 | modules, T_OPT_MODULES, TF_OPTION |
45 | defconfig_list, T_OPT_DEFCONFIG_LIST,TF_OPTION | 45 | defconfig_list, T_OPT_DEFCONFIG_LIST,TF_OPTION |
46 | env, T_OPT_ENV, TF_OPTION | 46 | env, T_OPT_ENV, TF_OPTION |
47 | allnoconfig_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 | ||