Skip to contentSkip to conversation

kconfig.h fix extraneous dependencies

RFC PATCH Superseded Peter Foley 3 participants 6 messages Aug 1, 2011 – Sep 9, 2011 Kbuild

lore
Share & tools
lore
#0 lore raw

RFC PATCH 1/1 kconfig.h fix extraneous dependencies

The introduction of kconfig.h caused fixdep to create three extraneous dependencies.
include/config/.h
include/config/h.h
include/config/foo.h

Remove them by eliminating instances of CONFIG_

---

Suggestions for a better replacement for CONFIG_FOO would be appreciated.

include/linux/kconfig.h +8 -8
index 067eda0..66a0659 100644
@@ -1,15 +1,15 @@
-#ifndef __LINUX_KCONFIG_H
-#define __LINUX_KCONFIG_H
+#ifndef __LINUX_KCONFIG
+#define __LINUX_KCONFIG
 
 #include <generated/autoconf.h>
 
 /*
- * Helper macros to use CONFIG_ options in C expressions. Note that
+ * 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',
+ * IS_ENABLED(CONFIG _FOO) evaluates to 1 if CONFIG _FOO is set to 'y' or 'm',
  * 0 otherwise.
  *
  */
@@ -17,16 +17,16 @@
 	(__enabled_ ## option || __enabled_ ## option ## _MODULE)
 
 /*
- * IS_BUILTIN(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'y', 0
+ * 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).
+ * 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
+ * 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 */
+#endif /* __LINUX_KCONFIG */
#1 lore raw

Hi,

Quoted 8 lines · Peter Foley

The introduction of kconfig.h caused fixdep to create three extraneous dependencies.
include/config/.h
include/config/h.h
include/config/foo.h

Remove them by eliminating instances of CONFIG_

this seems ugly to me... I would rather try to fix fixdep, no ?

- Arnaud

Quoted 51 lines

---

Suggestions for a better replacement for CONFIG_FOO would be appreciated.

include/linux/kconfig.h +8 -8
index 067eda0..66a0659 100644
@@ -1,15 +1,15 @@
-#ifndef __LINUX_KCONFIG_H
-#define __LINUX_KCONFIG_H
+#ifndef __LINUX_KCONFIG
+#define __LINUX_KCONFIG
 
  #include <generated/autoconf.h>
 
  /*
- * Helper macros to use CONFIG_ options in C expressions. Note that
+ * 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',
+ * IS_ENABLED(CONFIG _FOO) evaluates to 1 if CONFIG _FOO is set to 'y' or 'm',
  * 0 otherwise.
  *
  */
@@ -17,16 +17,16 @@
        (__enabled_ ## option || __enabled_ ## option ## _MODULE)
 
  /*
- * IS_BUILTIN(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'y', 0
+ * 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).
+ * 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
+ * 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 */
+#endif /* __LINUX_KCONFIG */
#2 lore raw
Quoted 9 lines · Arnaud Lacombe

Hi,

Quoted 6 lines · Peter Foley

The introduction of kconfig.h caused fixdep to create three extraneous dependencies.
include/config/.h
include/config/h.h
include/config/foo.h

Quoted 5 lines
Quoted 2 lines

Remove them by eliminating instances of CONFIG_

this seems ugly to me... I would rather try to fix fixdep, no ?

- Arnaud

I'd be the first to admit that this patch is a ugly hack. However, judging by the comments in fixdep.c this is expected behavior. I'm also afraid that changing fixdep to ignore comments would slow down the whole build for the sake of one file which IMHO dosen't seem to be a worthwhile tradeoff.

Thanks,

Peter

#3 lore raw
Quoted 8 lines · Peter Foley
Quoted 7 lines · Arnaud Lacombe
Quoted 6 lines · Peter Foley

The introduction of kconfig.h caused fixdep to create three extraneous dependencies.
include/config/.h
include/config/h.h
include/config/foo.h

Quoted 8 lines
Quoted 5 lines
Quoted 2 lines

Remove them by eliminating instances of CONFIG_

this seems ugly to me... I would rather try to fix fixdep, no ?

- Arnaud

I'd be the first to admit that this patch is a ugly hack. However, judging by the comments in fixdep.c this is expected behavior.

And it's also harmless, the source contains thousands of false matches:

$ git grep '_CONFIG_' | wc -l
7989
e.g anything that includes include/linux/acpi.h gets a false dependency on include/config/support.h because of
include/linux/acpi.h:#define OSC_EXT_PCI_CONFIG_SUPPORT         1
but it doesn't matter.
Quoted 3 lines

I'm also afraid that changing fixdep to ignore comments would slow down the whole build for the sake of one file which IMHO dosen't seem to be a worthwhile tradeoff.

I would take a patch that makes fixdep ignore include/linux/kconfig.h, like it ignores include/generated/kconfig.h. Anything more advanced isn't worth the effort, IMO.

Michal

#4 lore raw

PATCH v2 1/1 kconfig.h fix extraneous dependencies

The introduction of include/linux/kconfig.h created 3 extraneous dependencies:
include/config/.h
include/config/h.h
include/config/foo.h

Fix this by excluding kconfig.h from fixdep calculations.

---

scripts/basic/fixdep.c +1 -0
index 291228e..4789a6b 100644
@@ -345,6 +345,7 @@ static void parse_dep_file(void *map, size_t len)
 		memcpy(s, m, p-m); s[p-m] = 0;
 		if (strrcmp(s, "include/generated/autoconf.h") &&
 		    strrcmp(s, "arch/um/include/uml-config.h") &&
+                    strrcmp(s, "include/linux/kconfig.h") &&
 		    strrcmp(s, ".ver")) {
 			/*
 			 * Do not list the source file as dependency, so that
#5 lore raw
Quoted 9 lines · Peter Foley

The introduction of include/linux/kconfig.h created 3 extraneous dependencies:
include/config/.h
include/config/h.h
include/config/foo.h

Fix this by excluding kconfig.h from fixdep calculations.

Applied to kbuild-2.6.git#kbuild.

Michal