On Sat, 13 Apr 2002 11:04:35 -0500, 
Michael Elizabeth Chastain <[EMAIL PROTECTED]> wrote:
>Keith Owens writes:
>> IMHO, split-include needs to recognise the first time that a variable
>> is seen (no previous split config file) and the variable is 'n'.  For
>> this case, split-include should not create the file, i.e. treat it as
>> if the variable was still suppressed.
>
>That assumes that all C code behaves the same on CONFIG_DEP=""
>and CONFIG_DEP="n".

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.

The problem is that these cases give different timestamps after
split-include, causing recompiles.  Changing CONFIG_KERNEL_DEBUG from n
to y, split-include forces 280+ recompiles because of the newly visible
dependent variables, even though they are set to n.  Comparing vmlinux
before and after the 280+ recompiles, they are identical except for the
build timestamp.

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.

Any make code that does ifdef CONFIG_xxx is broken, it should be doing
ifeq ($(CONFIG_xxx),y) if the variable is known to be boolean, or the
more general ifneq ($(subst n,,$(CONFIG_xxx)),) which handles both
tristate and boolean.  There are some broken makefiles, but they will
not be affected by a change to split-include because make runs directly
off .config.


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

Reply via email to