All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaud Lacombe <lacombar@gmail.com>
To: Michal Marek <mmarek@suse.cz>
Cc: linux-kbuild@vger.kernel.org, sam@ravnborg.org,
	linux-kernel@vger.kernel.org, plagnioj@jcrosoft.com
Subject: Re: [RFC][PATCH 1/2] kconfig: Introduce KCONFIG(), KCONFIG_BUILTIN() and KCONFIG_MODULE()
Date: Wed, 27 Jul 2011 11:09:15 -0400	[thread overview]
Message-ID: <CACqU3MX3=edNJSNXYLVP=nYFx+bDnBs-zi3A3uYCPLNUrJiMyA@mail.gmail.com> (raw)
In-Reply-To: <1311634718-32588-1-git-send-email-mmarek@suse.cz>

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.

 - Arnaud

> @@ -555,58 +564,6 @@ static struct conf_printer header_printer_cb =
>  };
>
>  /*
> - * Function-style header printer
> - *
> - * This printer is used to generate the config_is_xxx() function-style macros
> - * in `include/generated/autoconf.h'
> - */
> -static void
> -header_function_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg)
> -{
> -       int val = 0;
> -       char c;
> -       char *tmp, *d;
> -
> -       switch (sym->type) {
> -       case S_BOOLEAN:
> -       case S_TRISTATE:
> -               break;
> -       default:
> -               return;
> -       }
> -       if (*value == 'm')
> -               val = 2;
> -       else if (*value == 'y')
> -               val = 1;
> -
> -       d = strdup(CONFIG_);
> -       tmp = d;
> -       while ((c = *d)) {
> -               *d = tolower(c);
> -               d++;
> -       }
> -
> -       fprintf(fp, "#define %sis_", tmp);
> -       free(tmp);
> -
> -       d = strdup(sym->name);
> -       tmp = d;
> -       while ((c = *d)) {
> -               *d = tolower(c);
> -               d++;
> -       }
> -       fprintf(fp, "%s%s() %d\n", tmp, (val > 1) ? "_module" : "",
> -                     val ? 1 : 0);
> -       free(tmp);
> -}
> -
> -static struct conf_printer header_function_printer_cb =
> -{
> -       .print_symbol = header_function_print_symbol,
> -};
> -
> -
> -/*
>  * Tristate printer
>  *
>  * This printer is used when generating the `include/config/tristate.conf' file.
> @@ -997,7 +954,6 @@ int conf_write_autoconf(void)
>                conf_write_symbol(tristate, sym, &tristate_printer_cb, (void *)1);
>
>                conf_write_symbol(out_h, sym, &header_printer_cb, NULL);
> -               conf_write_symbol(out_h, sym, &header_function_printer_cb, NULL);
>        }
>        fclose(out);
>        fclose(tristate);
> --
> 1.7.6
>
>

  parent reply	other threads:[~2011-07-27 15:09 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-17 15:35 [PATCH] kconfig: Only generate config_is_xxx for bool and tristate options Michal Marek
2011-05-17 18:05 ` Jean-Christophe PLAGNIOL-VILLARD
2011-05-17 19:44   ` Michal Marek
2011-05-17 19:53 ` Sam Ravnborg
2011-05-18  5:16   ` Jean-Christophe PLAGNIOL-VILLARD
2011-05-18  6:19     ` Sam Ravnborg
2011-05-18  6:27       ` Arnaud Lacombe
2011-05-18  6:23   ` Arnaud Lacombe
2011-07-13 13:22     ` Michal Marek
2011-07-13 15:20       ` Arnaud Lacombe
2011-07-13 20:08       ` Sam Ravnborg
2011-07-19 13:45         ` Michal Marek
2011-07-25 22:58       ` [RFC][PATCH 1/2] kconfig: Introduce KCONFIG(), KCONFIG_BUILTIN() and KCONFIG_MODULE() Michal Marek
2011-07-25 22:58         ` [RFC][PATCH 2/2] mm: Switch NUMA_BUILD and COMPACTION_BUILD to new KCONFIG() syntax Michal Marek
2011-07-25 22:58           ` Michal Marek
2011-07-26 15:19           ` Michal Hocko
2011-07-26 15:19             ` Michal Hocko
2011-07-26 18:34             ` Michal Marek
2011-07-26 18:34               ` Michal Marek
2011-07-26 18:52               ` Michal Hocko
2011-07-26 18:52                 ` Michal Hocko
2011-07-26 13:01         ` [RFC][PATCH 1/2] kconfig: Introduce KCONFIG(), KCONFIG_BUILTIN() and KCONFIG_MODULE() Américo Wang
2011-07-26 13:21           ` Michal Marek
2011-07-26 15:04             ` Randy Dunlap
2011-07-26 18:28               ` Michal Marek
2011-07-26 18:28                 ` Randy Dunlap
2011-07-26 18:48                   ` Arnaud Lacombe
2011-07-27  0:42                     ` Arnaud Lacombe
2011-07-27  4:35                       ` Randy Dunlap
2011-07-27  8:36                         ` Michal Marek
2011-07-27 13:31                           ` Arnaud Lacombe
2011-07-27 13:38                             ` Michal Marek
2011-07-27 15:11                               ` Arnaud Lacombe
2011-07-27 15:18                                 ` Michal Marek
2011-07-27 16:36                           ` Américo Wang
2011-07-27 15:09         ` Arnaud Lacombe [this message]
2011-07-27 15:16           ` Michal Marek
2011-07-27 15:18             ` Arnaud Lacombe
2011-07-29 13:51         ` [PATCH] kconfig: Introduce IS_ENABLED(), IS_BUILTIN() and IS_MODULE() Michal Marek
2011-07-29 17:43           ` Arnaud Lacombe
2011-07-29 18:25           ` Randy Dunlap
2011-07-29 18:58             ` Arnaud Lacombe
2011-08-02 17:33           ` Sam Ravnborg
2011-08-02 17:50             ` Arnaud Lacombe
2011-08-02 19:26               ` Sam Ravnborg
2011-08-02 19:33                 ` Michal Marek
2011-08-02 19:33                   ` Arnaud Lacombe
2011-05-25 13:35 ` [PATCH] kconfig: Only generate config_is_xxx for bool and tristate options Michal Marek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CACqU3MX3=edNJSNXYLVP=nYFx+bDnBs-zi3A3uYCPLNUrJiMyA@mail.gmail.com' \
    --to=lacombar@gmail.com \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mmarek@suse.cz \
    --cc=plagnioj@jcrosoft.com \
    --cc=sam@ravnborg.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.