[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CACqU3MX7Lip=2wCVs0o0PWkGFVHry4fte_eoadR4SzN00NB-pw@mail.gmail.com>
Date: Wed, 27 Jul 2011 11:18:54 -0400
From: Arnaud Lacombe <lacombar@...il.com>
To: Michal Marek <mmarek@...e.cz>
Cc: linux-kbuild@...r.kernel.org, sam@...nborg.org,
linux-kernel@...r.kernel.org, plagnioj@...osoft.com
Subject: Re: [RFC][PATCH 1/2] kconfig: Introduce KCONFIG(), KCONFIG_BUILTIN()
and KCONFIG_MODULE()
Hi,
On Wed, Jul 27, 2011 at 11:16 AM, Michal Marek <mmarek@...e.cz> wrote:
> On 27.7.2011 17:09, Arnaud Lacombe wrote:
>>
>> Hi,
>>
>> On Mon, Jul 25, 2011 at 6:58 PM, Michal Marek<mmarek@...e.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@...e.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
>
@#$... morning... I was looking at the wrong place, sorry.
- Arnaud
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists