lkml.org 
[lkml]   [2011]   [Jul]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [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


    \
     
     \ /
      Last update: 2011-07-27 17:19    [W:0.032 / U:30.084 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site