Keith Owens writes:
> There is no difference in autoconf.h between a suppressed variable
> (CONFIG_DEP="", no reference in autoconf) and a variable that is
> visible but set to n (CONFIG_DEP="n", explicitly undefined).  In both
> cases the variable is undefined.  C code cannot distinguish between a
> suppressed variable and one that is set to n.

If there really were no difference, then split-include would not see
a difference in include/linux/autoconf.h.

Check check check ... the difference is that value "n" emits a line:

  #undef  CONFIG_DEP

Whereas value "" causes no line at all.

Since there is no weird -DCONFIG_DEP going on at the command line,
you are right, these cases are equivalent at the C level.

Perhaps the way to fix this is to change config/menuconfig/xconfig
so that they do not emit anything to "autoconf.h" for the "n" case.
They still have to do proper four-state variables for ".config"
because they read back in later.

There is a difference between the two cases for Makefiles, because make
reads .config directly, not autoconf.h.  If a makefile incorrectly does
ifdef CONFIG_FOO then it gets different results on suppressed and
visible variables.

I'm a bit wary about hacking split-include but it's probably safe
to do what you suggest.

Sigh, I feel old and rusty.  I used to be on top of this stuff.  :-/

Michael C

_______________________________________________
kbuild-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/kbuild-devel

Reply via email to