• R
    fixdep: do not ignore kconfig.h · 638e69cf
    Rasmus Villemoes 提交于
    kconfig.h was excluded from consideration by fixdep by
    6a5be57f (fixdep: fix extraneous dependencies) to avoid some false
    positive hits
    
    (1) include/config/.h
    (2) include/config/h.h
    (3) include/config/foo.h
    
    (1) occurred because kconfig.h contains the string CONFIG_ in a
    comment. However, since dee81e98 (fixdep: faster CONFIG_ search), we
    have a check that the part after CONFIG_ is non-empty, so this does not
    happen anymore (and CONFIG_ appears by itself elsewhere, so that check
    is worthwhile).
    
    (2) comes from the include guard, __LINUX_KCONFIG_H. But with the
    previous patch, we no longer match that either.
    
    That leaves (3), which amounts to one [1] false dependency (aka stat() call
    done by make), which I think we can live with:
    
    We've already had one case [2] where the lack of include/linux/kconfig.h in
    the .o.cmd file caused a missing rebuild, and while I originally thought
    we should just put kconfig.h in the dependency list without parsing it
    for the CONFIG_ pattern, we actually do have some real CONFIG_ symbols
    mentioned in it, and one can imagine some translation unit that just
    does '#ifdef __BIG_ENDIAN' but doesn't through some other header
    actually depend on CONFIG_CPU_BIG_ENDIAN - so changing the target
    endianness could end up rebuilding the world, minus that small
    TU. Quoting Linus,
    
      ... when missing dependencies cause a missed re-compile, the resulting
      bugs can be _really_ subtle.
    
    [1] well, two, we now also have CONFIG_BOOGER/booger.h - we could change
    that to FOO if we care
    
    [2] https://lkml.org/lkml/2018/2/22/838
    
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: NRasmus Villemoes <linux@rasmusvillemoes.dk>
    Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
    638e69cf
fixdep.c 9.8 KB