Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 953742c8 authored by Arnaud Lacombe's avatar Arnaud Lacombe
Browse files

kconfig: fix __enabled_ macros definition for invisible and un-selected 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: default avatarRabin Vincent <rabin@rab.in>
Signed-off-by: default avatarArnaud Lacombe <lacombar@gmail.com>
parent 322a8b03
Loading
Loading
Loading
Loading
+36 −13
Original line number Diff line number Diff line
@@ -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: {
@@ -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
 *
@@ -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);