• Masahiro Yamada's avatar
    kconfig: make 'imply' obey the direct dependency · 3a9dd3ec
    Masahiro Yamada authored
    The 'imply' statement may create unmet direct dependency when the
    implied symbol depends on m.
    
    [Test Code]
    
      config FOO
              tristate "foo"
              imply BAZ
    
      config BAZ
              tristate "baz"
              depends on BAR
    
      config BAR
              def_tristate m
    
      config MODULES
              def_bool y
              option modules
    
    If you set FOO=y, BAZ is also promoted to y, which results in the
    following .config file:
    
      CONFIG_FOO=y
      CONFIG_BAZ=y
      CONFIG_BAR=m
      CONFIG_MODULES=y
    
    This does not meet the dependency 'BAZ depends on BAR'.
    
    Unlike 'select', what is worse, Kconfig never shows the
    'WARNING: unmet direct dependencies detected for ...' for this case.
    
    Because 'imply' is considered to be weaker than 'depends on', Kconfig
    should take the direct dependency into account.
    
    For clarification, describe this case in kconfig-language.rst too.
    Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
    Acked-by: default avatarNicolas Pitre <nico@fluxnic.net>
    Tested-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
    3a9dd3ec
symbol.c 28.6 KB