On Thu, 20 Feb 2020, Masahiro Yamada wrote: > Hi Nicolas, > > On Thu, Feb 20, 2020 at 1:16 AM Nicolas Pitre <nico@xxxxxxxxxxx> wrote: > > > > On Wed, 19 Feb 2020, Masahiro Yamada wrote: > > > > > As for the combination of FOO=y and BAR=m, the case of BAZ=m is excluded > > > by the 'imply', and BAZ=y is also excluded by 'depends on'. So, only the > > > possible value is BAZ=n. > > > > I don't think this is right. The imply keyword provide influence over > > another symbol but it should not impose any restrictions. If BAR=m then > > BAZ should still be allowed to be m or n. > > > > > @@ -174,6 +174,9 @@ applicable everywhere (see syntax). > > > n y n N/m/y > > > m y m M/y/n > > > y y y Y/n > > > + n m n N/m > > > + m m m M/n > > > + y m n N > > > > Here the last line shoule be y m n N/m. > > > > Generally speaking, the code enabled by FOO may rely on functionalities > > provided by BAZ only when BAZ >= FOO. This is accomplished with > > IS_REACHABLE(): > > > > foo_init() > > { > > if (IS_REACHABLE(CONFIG_BAZ)) > > baz_register(&foo); > > ... > > } > > > > So if FOO=y and BAZ=m then IS_REACHABLE(CONFIG_BAZ) will be false. Maybe > > adding a note to that effect linked to the "y m n N/m" line in the table > > would be a good idea. > > > > I also thought so. > > I agree IS_REACHABLE() is much saner approach. > > So, do you agree to change the current behavior > as follows? > > > index d0111dd26410..47dbfd1ee003 100644 > --- a/Documentation/kbuild/kconfig-language.rst > +++ b/Documentation/kbuild/kconfig-language.rst > @@ -173,7 +173,7 @@ applicable everywhere (see syntax). > === === ============= ============== > n y n N/m/y > m y m M/y/n > - y y y Y/n > + y y y Y/m/n > y n * N > === === ============= ============== > Yes. That should have been the case all along. Nicolas