Skip to content

Commit

Permalink
kconfig: fix __enabled_ macros definition for invisible and un-select…
Browse files Browse the repository at this point in the history
…ed symbols

__enabled_<sym-name> are only generated on visible or selected entries, do not
reflect the purpose of its introduction.

Fix this by always generating these entries for named symbol.

Reported-by: Rabin Vincent <[email protected]>
Signed-off-by: Arnaud Lacombe <[email protected]>
  • Loading branch information
lacombar committed Aug 30, 2011
1 parent 322a8b0 commit 953742c
Showing 1 changed file with 36 additions and 13 deletions.
49 changes: 36 additions & 13 deletions scripts/kconfig/confdata.c
Original file line number Diff line number Diff line change
Expand Up @@ -503,17 +503,6 @@ header_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg)
fprintf(fp, "#define %s%s%s 1\n",
CONFIG_, sym->name, suffix);
}
/*
* Generate the __enabled_CONFIG_* and
* __enabled_CONFIG_*_MODULE macros for use by the
* IS_{ENABLED,BUILTIN,MODULE} macros. The _MODULE variant is
* generated even for booleans so that the IS_ENABLED() macro
* works.
*/
fprintf(fp, "#define __enabled_" CONFIG_ "%s %d\n",
sym->name, (*value == 'y'));
fprintf(fp, "#define __enabled_" CONFIG_ "%s_MODULE %d\n",
sym->name, (*value == 'm'));
break;
}
case S_HEX: {
Expand Down Expand Up @@ -564,6 +553,35 @@ static struct conf_printer header_printer_cb =
.print_comment = header_print_comment,
};

/*
* Generate the __enabled_CONFIG_* and __enabled_CONFIG_*_MODULE macros for
* use by the IS_{ENABLED,BUILTIN,MODULE} macros. The _MODULE variant is
* generated even for booleans so that the IS_ENABLED() macro works.
*/
static void
header_print__enabled_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg)
{

switch (sym->type) {
case S_BOOLEAN:
case S_TRISTATE: {
fprintf(fp, "#define __enabled_" CONFIG_ "%s %d\n",
sym->name, (*value == 'y'));
fprintf(fp, "#define __enabled_" CONFIG_ "%s_MODULE %d\n",
sym->name, (*value == 'm'));
break;
}
default:
break;
}
}

static struct conf_printer header__enabled_printer_cb =
{
.print_symbol = header_print__enabled_symbol,
.print_comment = header_print_comment,
};

/*
* Tristate printer
*
Expand Down Expand Up @@ -945,11 +963,16 @@ int conf_write_autoconf(void)
conf_write_heading(out_h, &header_printer_cb, NULL);

for_all_symbols(i, sym) {
if (!sym->name)
continue;

sym_calc_value(sym);
if (!(sym->flags & SYMBOL_WRITE) || !sym->name)

conf_write_symbol(out_h, sym, &header__enabled_printer_cb, NULL);

if (!(sym->flags & SYMBOL_WRITE))
continue;

/* write symbol to auto.conf, tristate and header files */
conf_write_symbol(out, sym, &kconfig_printer_cb, (void *)1);

conf_write_symbol(tristate, sym, &tristate_printer_cb, (void *)1);
Expand Down

0 comments on commit 953742c

Please sign in to comment.