Hi, On Wed, Jul 27, 2011 at 11:16 AM, Michal Marek <mmarek@xxxxxxx> wrote: > On 27.7.2011 17:09, Arnaud Lacombe wrote: >> >> Hi, >> >> On Mon, Jul 25, 2011 at 6:58 PM, Michal Marek<mmarek@xxxxxxx> wrote: >>> >>> Replace the config_is_*() macros with a variant that allows for grepping >>> for usage of CONFIG_* options in the code. Usage: >>> >>> if (KCONFIG(CONFIG_NUMA)) >>> >>> or >>> >>> #if KCONFIG(CONFIG_NUMA) >>> >>> The KCONFIG() macro evaluates to 1 if the argument is set (to either 'y' >>> or 'm'), KCONFIG_BUILTIN() and KCONFIG_MODULE() test if the respective >>> option is 'y' and 'm', respectively. >>> >>> Signed-off-by: Michal Marek<mmarek@xxxxxxx> >>> --- >>> Makefile | 2 +- >>> include/linux/kconfig.h | 24 +++++++++++++++ >>> scripts/kconfig/confdata.c | 70 >>> ++++++++----------------------------------- >>> 3 files changed, 38 insertions(+), 58 deletions(-) >>> create mode 100644 include/linux/kconfig.h >>> >>> diff --git a/Makefile b/Makefile >>> index afb8e0d..bd7629b 100644 >>> --- a/Makefile >>> +++ b/Makefile >>> @@ -360,7 +360,7 @@ CFLAGS_GCOV = -fprofile-arcs -ftest-coverage >>> LINUXINCLUDE := -I$(srctree)/arch/$(hdr-arch)/include \ >>> -Iarch/$(hdr-arch)/include/generated -Iinclude \ >>> $(if $(KBUILD_SRC), -I$(srctree)/include) \ >>> - -include include/generated/autoconf.h >>> + -include $(srctree)/include/linux/kconfig.h >>> >>> KBUILD_CPPFLAGS := -D__KERNEL__ >>> >>> diff --git a/include/linux/kconfig.h b/include/linux/kconfig.h >>> new file mode 100644 >>> index 0000000..fe80348 >>> --- /dev/null >>> +++ b/include/linux/kconfig.h >>> @@ -0,0 +1,24 @@ >>> +#ifndef __LINUX_KCONFIG_H >>> +#define __LINUX_KCONFIG_H >>> + >>> +#include<generated/autoconf.h> >>> + >>> +/* >>> + * Evaluates to 1 if CONFIG_option is set to 'y', 0 otherwise >>> + */ >>> +#define KCONFIG_BUILTIN(option) __enabled_ ## option >>> + >>> +/* >>> + * Evaluates to 1 if CONFIG_option is set to 'm', 0 otherwise >>> + */ >>> +#define KCONFIG_MODULE(option) __enabled_ ## option ## _MODULE >>> + >>> +/* >>> + * Evaluates to 1 if CONFIG_option is set to 'y' or 'm', 0 otherwise >>> + * >>> + */ >>> +#define KCONFIG(option) \ >>> + (__enabled_ ## option || __enabled_ ## option ## _MODULE) >>> + >>> + >>> +#endif /* __LINUX_KCONFIG_H */ >>> diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c >>> index df629ec..3bab40a 100644 >>> --- a/scripts/kconfig/confdata.c >>> +++ b/scripts/kconfig/confdata.c >>> @@ -495,15 +495,24 @@ header_print_symbol(FILE *fp, struct symbol *sym, >>> const char *value, void *arg) >>> >>> switch (*value) { >>> case 'n': >>> - return; >>> + break; >>> case 'm': >>> suffix = "_MODULE"; >>> /* fall through */ >>> default: >>> - value = "1"; >>> + fprintf(fp, "#define %s%s%s 1\n", >>> + CONFIG_, sym->name, suffix); >>> } >>> - fprintf(fp, "#define %s%s%s %s\n", >>> - CONFIG_, sym->name, suffix, value); >>> + /* >>> + * Generate the __enabled_CONFIG_* and >>> + * __enabled_CONFIG_*_MODULE macros for use by the >>> KCONFIG*() >>> + * macros. The _MODULE variant is generated even for >>> booleans >>> + * so that the KCONFIG() 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: { >> >> Just to comment on the patch itself, it will certainly not apply >> against kbuild/kconfig as I changed header_print_symbol() to fix the >> S_HEX prefix issue. > > If course it applies, the "case S_HEX: {" context line you are quoting was > added by your commit: > http://git.kernel.org/?p=linux/kernel/git/mmarek/kbuild-2.6.git;a=commitdiff;h=eb4cf5a642f6430cffff7ba5d8d9bd46ea409281 > @#$... morning... I was looking at the wrong place, sorry. - Arnaud -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html