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>
This commit is contained in:
parent
527518f1a9
commit
5d2acfc7b9
Documentation/kbuild
init
scripts/kconfig
@ -157,6 +157,10 @@ applicable everywhere (see syntax).
|
|||||||
to the build environment (if this is desired, it can be done via
|
to the build environment (if this is desired, it can be done via
|
||||||
another symbol).
|
another symbol).
|
||||||
|
|
||||||
|
- "allnoconfig_y"
|
||||||
|
This declares the symbol as one that should have the value y when
|
||||||
|
using "allnoconfig". Used for symbols that hide other symbols.
|
||||||
|
|
||||||
Menu dependencies
|
Menu dependencies
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
@ -1483,6 +1483,7 @@ config PCI_QUIRKS
|
|||||||
|
|
||||||
config EMBEDDED
|
config EMBEDDED
|
||||||
bool "Embedded system"
|
bool "Embedded system"
|
||||||
|
option allnoconfig_y
|
||||||
select EXPERT
|
select EXPERT
|
||||||
help
|
help
|
||||||
This option should be enabled if compiling the kernel for
|
This option should be enabled if compiling the kernel for
|
||||||
|
@ -1178,7 +1178,10 @@ bool conf_set_all_new_symbols(enum conf_def_mode mode)
|
|||||||
sym->def[S_DEF_USER].tri = mod;
|
sym->def[S_DEF_USER].tri = mod;
|
||||||
break;
|
break;
|
||||||
case def_no:
|
case def_no:
|
||||||
sym->def[S_DEF_USER].tri = no;
|
if (sym->flags & SYMBOL_ALLNOCONFIG_Y)
|
||||||
|
sym->def[S_DEF_USER].tri = yes;
|
||||||
|
else
|
||||||
|
sym->def[S_DEF_USER].tri = no;
|
||||||
break;
|
break;
|
||||||
case def_random:
|
case def_random:
|
||||||
sym->def[S_DEF_USER].tri = no;
|
sym->def[S_DEF_USER].tri = no;
|
||||||
|
@ -109,6 +109,9 @@ struct symbol {
|
|||||||
/* choice values need to be set before calculating this symbol value */
|
/* choice values need to be set before calculating this symbol value */
|
||||||
#define SYMBOL_NEED_SET_CHOICE_VALUES 0x100000
|
#define SYMBOL_NEED_SET_CHOICE_VALUES 0x100000
|
||||||
|
|
||||||
|
/* Set symbol to y if allnoconfig; used for symbols that hide others */
|
||||||
|
#define SYMBOL_ALLNOCONFIG_Y 0x200000
|
||||||
|
|
||||||
#define SYMBOL_MAXLENGTH 256
|
#define SYMBOL_MAXLENGTH 256
|
||||||
#define SYMBOL_HASHSIZE 9973
|
#define SYMBOL_HASHSIZE 9973
|
||||||
|
|
||||||
|
@ -61,6 +61,7 @@ enum conf_def_mode {
|
|||||||
#define T_OPT_MODULES 1
|
#define T_OPT_MODULES 1
|
||||||
#define T_OPT_DEFCONFIG_LIST 2
|
#define T_OPT_DEFCONFIG_LIST 2
|
||||||
#define T_OPT_ENV 3
|
#define T_OPT_ENV 3
|
||||||
|
#define T_OPT_ALLNOCONFIG_Y 4
|
||||||
|
|
||||||
struct kconf_id {
|
struct kconf_id {
|
||||||
int name;
|
int name;
|
||||||
|
@ -217,6 +217,9 @@ void menu_add_option(int token, char *arg)
|
|||||||
case T_OPT_ENV:
|
case T_OPT_ENV:
|
||||||
prop_add_env(arg);
|
prop_add_env(arg);
|
||||||
break;
|
break;
|
||||||
|
case T_OPT_ALLNOCONFIG_Y:
|
||||||
|
current_entry->sym->flags |= SYMBOL_ALLNOCONFIG_Y;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,4 +44,5 @@ on, T_ON, TF_PARAM
|
|||||||
modules, T_OPT_MODULES, TF_OPTION
|
modules, T_OPT_MODULES, TF_OPTION
|
||||||
defconfig_list, T_OPT_DEFCONFIG_LIST,TF_OPTION
|
defconfig_list, T_OPT_DEFCONFIG_LIST,TF_OPTION
|
||||||
env, T_OPT_ENV, TF_OPTION
|
env, T_OPT_ENV, TF_OPTION
|
||||||
|
allnoconfig_y, T_OPT_ALLNOCONFIG_Y,TF_OPTION
|
||||||
%%
|
%%
|
||||||
|
@ -55,10 +55,10 @@ kconf_id_hash (register const char *str, register unsigned int len)
|
|||||||
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
||||||
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
||||||
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
||||||
73, 73, 73, 73, 73, 73, 73, 73, 25, 25,
|
73, 73, 73, 73, 73, 73, 73, 5, 25, 25,
|
||||||
0, 0, 0, 5, 0, 0, 73, 73, 5, 0,
|
0, 0, 0, 5, 0, 0, 73, 73, 5, 0,
|
||||||
10, 5, 45, 73, 20, 20, 0, 15, 15, 73,
|
10, 5, 45, 73, 20, 20, 0, 15, 15, 73,
|
||||||
20, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
20, 5, 73, 73, 73, 73, 73, 73, 73, 73,
|
||||||
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
||||||
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
||||||
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
||||||
@ -106,6 +106,7 @@ struct kconf_id_strings_t
|
|||||||
char kconf_id_strings_str23[sizeof("mainmenu")];
|
char kconf_id_strings_str23[sizeof("mainmenu")];
|
||||||
char kconf_id_strings_str25[sizeof("menuconfig")];
|
char kconf_id_strings_str25[sizeof("menuconfig")];
|
||||||
char kconf_id_strings_str27[sizeof("modules")];
|
char kconf_id_strings_str27[sizeof("modules")];
|
||||||
|
char kconf_id_strings_str28[sizeof("allnoconfig_y")];
|
||||||
char kconf_id_strings_str29[sizeof("menu")];
|
char kconf_id_strings_str29[sizeof("menu")];
|
||||||
char kconf_id_strings_str31[sizeof("select")];
|
char kconf_id_strings_str31[sizeof("select")];
|
||||||
char kconf_id_strings_str32[sizeof("comment")];
|
char kconf_id_strings_str32[sizeof("comment")];
|
||||||
@ -141,6 +142,7 @@ static const struct kconf_id_strings_t kconf_id_strings_contents =
|
|||||||
"mainmenu",
|
"mainmenu",
|
||||||
"menuconfig",
|
"menuconfig",
|
||||||
"modules",
|
"modules",
|
||||||
|
"allnoconfig_y",
|
||||||
"menu",
|
"menu",
|
||||||
"select",
|
"select",
|
||||||
"comment",
|
"comment",
|
||||||
@ -170,7 +172,7 @@ kconf_id_lookup (register const char *str, register unsigned int len)
|
|||||||
{
|
{
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
TOTAL_KEYWORDS = 32,
|
TOTAL_KEYWORDS = 33,
|
||||||
MIN_WORD_LENGTH = 2,
|
MIN_WORD_LENGTH = 2,
|
||||||
MAX_WORD_LENGTH = 14,
|
MAX_WORD_LENGTH = 14,
|
||||||
MIN_HASH_VALUE = 2,
|
MIN_HASH_VALUE = 2,
|
||||||
@ -219,7 +221,8 @@ kconf_id_lookup (register const char *str, register unsigned int len)
|
|||||||
{-1},
|
{-1},
|
||||||
#line 44 "scripts/kconfig/zconf.gperf"
|
#line 44 "scripts/kconfig/zconf.gperf"
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str27, T_OPT_MODULES, TF_OPTION},
|
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str27, T_OPT_MODULES, TF_OPTION},
|
||||||
{-1},
|
#line 47 "scripts/kconfig/zconf.gperf"
|
||||||
|
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str28, T_OPT_ALLNOCONFIG_Y,TF_OPTION},
|
||||||
#line 16 "scripts/kconfig/zconf.gperf"
|
#line 16 "scripts/kconfig/zconf.gperf"
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str29, T_MENU, TF_COMMAND},
|
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str29, T_MENU, TF_COMMAND},
|
||||||
{-1},
|
{-1},
|
||||||
@ -282,5 +285,5 @@ kconf_id_lookup (register const char *str, register unsigned int len)
|
|||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#line 47 "scripts/kconfig/zconf.gperf"
|
#line 48 "scripts/kconfig/zconf.gperf"
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user