Messages in this thread | | | Date | Wed, 27 Jul 2011 17:16:20 +0200 | From | Michal Marek <> | Subject | Re: [RFC][PATCH 1/2] kconfig: Introduce KCONFIG(), KCONFIG_BUILTIN() and KCONFIG_MODULE() |
| |
On 27.7.2011 17:09, Arnaud Lacombe wrote: > Hi, > > On Mon, Jul 25, 2011 at 6:58 PM, Michal Marek<mmarek@suse.cz> 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@suse.cz> >> --- >> 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
Michal
| |