diff mbox

kconfig: Introduce IS_ENABLED(), IS_BUILTIN() and IS_MODULE()

Message ID 1311947497-4958-1-git-send-email-mmarek@suse.cz (mailing list archive)
State New, archived
Headers show

Commit Message

Michal Marek July 29, 2011, 1:51 p.m. UTC
Replace the config_is_*() macros with a variant that allows for grepping
for usage of CONFIG_* options in the code. Usage:

  if (IS_ENABLED(CONFIG_NUMA))

or

  #if IS_ENABLED(CONFIG_NUMA)

The IS_ENABLED() macro evaluates to 1 if the argument is set (to either 'y'
or 'm'), IS_BUILTIN() tests if the option is 'y' and IS_MODULE() test if
the option is 'm'. Only boolean and tristate options are supported.

Signed-off-by: Michal Marek <mmarek@suse.cz>
---

Everybody happy with the above naming?

Michal

---
 Makefile                   |    2 +-
 include/linux/kconfig.h    |   32 ++++++++++++++++++++
 scripts/kconfig/confdata.c |   71 ++++++++-----------------------------------
 3 files changed, 47 insertions(+), 58 deletions(-)
 create mode 100644 include/linux/kconfig.h

Comments

Arnaud Lacombe July 29, 2011, 5:43 p.m. UTC | #1
Hi,

On Fri, Jul 29, 2011 at 9:51 AM, 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 (IS_ENABLED(CONFIG_NUMA))
>
> or
>
>  #if IS_ENABLED(CONFIG_NUMA)
>
> The IS_ENABLED() macro evaluates to 1 if the argument is set (to either 'y'
> or 'm'), IS_BUILTIN() tests if the option is 'y' and IS_MODULE() test if
> the option is 'm'. Only boolean and tristate options are supported.
>
> Signed-off-by: Michal Marek <mmarek@suse.cz>
> ---
>
> Everybody happy with the above naming?
>
yes for me.

Reviewed-by: Arnaud Lacombe <lacombar@gmail.com>

 - Arnaud

> Michal
>
> ---
>  Makefile                   |    2 +-
>  include/linux/kconfig.h    |   32 ++++++++++++++++++++
>  scripts/kconfig/confdata.c |   71 ++++++++-----------------------------------
>  3 files changed, 47 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..067eda0
> --- /dev/null
> +++ b/include/linux/kconfig.h
> @@ -0,0 +1,32 @@
> +#ifndef __LINUX_KCONFIG_H
> +#define __LINUX_KCONFIG_H
> +
> +#include <generated/autoconf.h>
> +
> +/*
> + * Helper macros to use CONFIG_ options in C expressions. Note that
> + * these only work with boolean and tristate options.
> + */
> +
> +/*
> + * IS_ENABLED(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'y' or 'm',
> + * 0 otherwise.
> + *
> + */
> +#define IS_ENABLED(option) \
> +       (__enabled_ ## option || __enabled_ ## option ## _MODULE)
> +
> +/*
> + * IS_BUILTIN(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'y', 0
> + * otherwise. For boolean options, this is equivalent to
> + * IS_ENABLED(CONFIG_FOO).
> + */
> +#define IS_BUILTIN(option) __enabled_ ## option
> +
> +/*
> + * IS_MODULE(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'm', 0
> + * otherwise.
> + */
> +#define IS_MODULE(option) __enabled_ ## option ## _MODULE
> +
> +#endif /* __LINUX_KCONFIG_H */
> diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
> index df629ec..59b667c 100644
> --- a/scripts/kconfig/confdata.c
> +++ b/scripts/kconfig/confdata.c
> @@ -495,15 +495,25 @@ 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
> +                * IS_{ENABLED,BUILTIN,MODULE} macros. The _MODULE variant is
> +                * generated even for booleans so that the IS_ENABLED() 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: {
> @@ -555,58 +565,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 +955,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
>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Randy Dunlap July 29, 2011, 6:25 p.m. UTC | #2
On Fri, 29 Jul 2011 15:51:37 +0200 Michal Marek wrote:

> Replace the config_is_*() macros with a variant that allows for grepping
> for usage of CONFIG_* options in the code. Usage:
> 
>   if (IS_ENABLED(CONFIG_NUMA))
> 
> or
> 
>   #if IS_ENABLED(CONFIG_NUMA)
> 
> The IS_ENABLED() macro evaluates to 1 if the argument is set (to either 'y'
> or 'm'), IS_BUILTIN() tests if the option is 'y' and IS_MODULE() test if
> the option is 'm'. Only boolean and tristate options are supported.
> 
> Signed-off-by: Michal Marek <mmarek@suse.cz>
> ---
> 
> Everybody happy with the above naming?

Yes here.

Acked-by: Randy Dunlap <rdunlap@xenotime.net>

These strings are being written to the .config file, right?

> +		/*
> +		 * Generate the __enabled_CONFIG_* and
> +		 * __enabled_CONFIG_*_MODULE macros for use by the
> +		 * IS_{ENABLED,BUILTIN,MODULE} macros. The _MODULE variant is
> +		 * generated even for booleans so that the IS_ENABLED() 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;


---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Arnaud Lacombe July 29, 2011, 6:58 p.m. UTC | #3
Hi,

On Fri, Jul 29, 2011 at 2:25 PM, Randy Dunlap <rdunlap@xenotime.net> wrote:
> On Fri, 29 Jul 2011 15:51:37 +0200 Michal Marek wrote:
>
>> Replace the config_is_*() macros with a variant that allows for grepping
>> for usage of CONFIG_* options in the code. Usage:
>>
>>   if (IS_ENABLED(CONFIG_NUMA))
>>
>> or
>>
>>   #if IS_ENABLED(CONFIG_NUMA)
>>
>> The IS_ENABLED() macro evaluates to 1 if the argument is set (to either 'y'
>> or 'm'), IS_BUILTIN() tests if the option is 'y' and IS_MODULE() test if
>> the option is 'm'. Only boolean and tristate options are supported.
>>
>> Signed-off-by: Michal Marek <mmarek@suse.cz>
>> ---
>>
>> Everybody happy with the above naming?
>
> Yes here.
>
> Acked-by: Randy Dunlap <rdunlap@xenotime.net>
>
> These strings are being written to the .config file, right?
>
no, they are written to `include/generated/autoconf.h'

 - Arnaud

>> +             /*
>> +              * Generate the __enabled_CONFIG_* and
>> +              * __enabled_CONFIG_*_MODULE macros for use by the
>> +              * IS_{ENABLED,BUILTIN,MODULE} macros. The _MODULE variant is
>> +              * generated even for booleans so that the IS_ENABLED() 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;
>
>
> ---
> ~Randy
> *** Remember to use Documentation/SubmitChecklist when testing your code ***
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Sam Ravnborg Aug. 2, 2011, 5:33 p.m. UTC | #4
On Fri, Jul 29, 2011 at 03:51:37PM +0200, Michal Marek wrote:
> Replace the config_is_*() macros with a variant that allows for grepping
> for usage of CONFIG_* options in the code. Usage:
> 
>   if (IS_ENABLED(CONFIG_NUMA))
> 
> or
> 
>   #if IS_ENABLED(CONFIG_NUMA)
> 
> The IS_ENABLED() macro evaluates to 1 if the argument is set (to either 'y'
> or 'm'), IS_BUILTIN() tests if the option is 'y' and IS_MODULE() test if
> the option is 'm'. Only boolean and tristate options are supported.
> 
> Signed-off-by: Michal Marek <mmarek@suse.cz>
> ---
> 
> Everybody happy with the above naming?
Naming is good - has my ack.


> 
> ---
>  Makefile                   |    2 +-
>  include/linux/kconfig.h    |   32 ++++++++++++++++++++
>  scripts/kconfig/confdata.c |   71 ++++++++-----------------------------------
>  3 files changed, 47 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

If we do it like this then how about adding this to autoconf.h and avoid the extra file,
and the extra flag to gcc?

	Sam
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Arnaud Lacombe Aug. 2, 2011, 5:50 p.m. UTC | #5
Hi,

On Tue, Aug 2, 2011 at 1:33 PM, Sam Ravnborg <sam@ravnborg.org> wrote:
> On Fri, Jul 29, 2011 at 03:51:37PM +0200, Michal Marek wrote:
>> Replace the config_is_*() macros with a variant that allows for grepping
>> for usage of CONFIG_* options in the code. Usage:
>>
>>   if (IS_ENABLED(CONFIG_NUMA))
>>
>> or
>>
>>   #if IS_ENABLED(CONFIG_NUMA)
>>
>> The IS_ENABLED() macro evaluates to 1 if the argument is set (to either 'y'
>> or 'm'), IS_BUILTIN() tests if the option is 'y' and IS_MODULE() test if
>> the option is 'm'. Only boolean and tristate options are supported.
>>
>> Signed-off-by: Michal Marek <mmarek@suse.cz>
>> ---
>>
>> Everybody happy with the above naming?
> Naming is good - has my ack.
>
>
>>
>> ---
>>  Makefile                   |    2 +-
>>  include/linux/kconfig.h    |   32 ++++++++++++++++++++
>>  scripts/kconfig/confdata.c |   71 ++++++++-----------------------------------
>>  3 files changed, 47 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
>
> If we do it like this then how about adding this to autoconf.h and avoid the extra file,
> and the extra flag to gcc?
>
That would be intrusive for non-Linux users of kconfig. You would have
to hardcode a <linux/kconfig.h> in autoconf.h, which mean other
project would have to either mirror the Linux include tree structure,
or modify kconfig for the desired include path, if the feature is
desired at all. As I see it, Linux, through Kbuild, is a user of
kconfig.

I might send a patch to conditionally generate the __enable_<FOO>
stuff so that other project have the choice to use this feature or not
(and avoid namespace utilization if not), but that's low priority.

 - Arnaud
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Sam Ravnborg Aug. 2, 2011, 7:26 p.m. UTC | #6
> >
> > If we do it like this then how about adding this to autoconf.h and avoid the extra file,
> > and the extra flag to gcc?
> >
> That would be intrusive for non-Linux users of kconfig. You would have
> to hardcode a <linux/kconfig.h> in autoconf.h, which mean other
> project would have to either mirror the Linux include tree structure,
> or modify kconfig for the desired include path, if the feature is
> desired at all. As I see it, Linux, through Kbuild, is a user of
> kconfig.
The idea was to entirely skip kconfig.h - and include the code in
autoconf.h verbatim - so no extra file.

We could add an option to disable this - if the other kconfig
really require this.

	Sam
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Arnaud Lacombe Aug. 2, 2011, 7:33 p.m. UTC | #7
Hi,

On Tue, Aug 2, 2011 at 3:33 PM, Michal Marek <mmarek@suse.cz> wrote:
> Dne 2.8.2011 21:26, Sam Ravnborg napsal(a):
>>>>
>>>> If we do it like this then how about adding this to autoconf.h and avoid the extra file,
>>>> and the extra flag to gcc?
>>>>
>>> That would be intrusive for non-Linux users of kconfig. You would have
>>> to hardcode a <linux/kconfig.h> in autoconf.h, which mean other
>>> project would have to either mirror the Linux include tree structure,
>>> or modify kconfig for the desired include path, if the feature is
>>> desired at all. As I see it, Linux, through Kbuild, is a user of
>>> kconfig.
>> The idea was to entirely skip kconfig.h - and include the code in
>> autoconf.h verbatim - so no extra file.
>
> We could do that. I went for the extra file because it was easier to
> edit a .h file than to edit a .c file that generates a .h file :).
>
seconded :)

 - Arnaud
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Michal Marek Aug. 2, 2011, 7:33 p.m. UTC | #8
Dne 2.8.2011 21:26, Sam Ravnborg napsal(a):
>>>
>>> If we do it like this then how about adding this to autoconf.h and avoid the extra file,
>>> and the extra flag to gcc?
>>>
>> That would be intrusive for non-Linux users of kconfig. You would have
>> to hardcode a <linux/kconfig.h> in autoconf.h, which mean other
>> project would have to either mirror the Linux include tree structure,
>> or modify kconfig for the desired include path, if the feature is
>> desired at all. As I see it, Linux, through Kbuild, is a user of
>> kconfig.
> The idea was to entirely skip kconfig.h - and include the code in
> autoconf.h verbatim - so no extra file.

We could do that. I went for the extra file because it was easier to
edit a .h file than to edit a .c file that generates a .h file :).

Michal
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

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..067eda0
--- /dev/null
+++ b/include/linux/kconfig.h
@@ -0,0 +1,32 @@ 
+#ifndef __LINUX_KCONFIG_H
+#define __LINUX_KCONFIG_H
+
+#include <generated/autoconf.h>
+
+/*
+ * Helper macros to use CONFIG_ options in C expressions. Note that
+ * these only work with boolean and tristate options.
+ */
+
+/*
+ * IS_ENABLED(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'y' or 'm',
+ * 0 otherwise.
+ *
+ */
+#define IS_ENABLED(option) \
+	(__enabled_ ## option || __enabled_ ## option ## _MODULE)
+
+/*
+ * IS_BUILTIN(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'y', 0
+ * otherwise. For boolean options, this is equivalent to
+ * IS_ENABLED(CONFIG_FOO).
+ */
+#define IS_BUILTIN(option) __enabled_ ## option
+
+/*
+ * IS_MODULE(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'm', 0
+ * otherwise.
+ */
+#define IS_MODULE(option) __enabled_ ## option ## _MODULE
+
+#endif /* __LINUX_KCONFIG_H */
diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
index df629ec..59b667c 100644
--- a/scripts/kconfig/confdata.c
+++ b/scripts/kconfig/confdata.c
@@ -495,15 +495,25 @@  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
+		 * IS_{ENABLED,BUILTIN,MODULE} macros. The _MODULE variant is
+		 * generated even for booleans so that the IS_ENABLED() 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: {
@@ -555,58 +565,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 +955,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);