On Wed, Sep 13, 2023 at 01:37:52PM +0200 Arnd Bergmann wrote: > From: Arnd Bergmann <arnd@xxxxxxxx> > > This problem frequently comes up in randconfig testing, with > drivers failing to link because of a dependency on an optional > feature. > > The Kconfig language for this is very confusing, so try to > document it in "Kconfig hints" section. > > Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx> > --- Hi Arnd, thanks for documenting this! Three questions below: > Documentation/kbuild/kconfig-language.rst | 26 +++++++++++++++++++++++ > 1 file changed, 26 insertions(+) > > diff --git a/Documentation/kbuild/kconfig-language.rst b/Documentation/kbuild/kconfig-language.rst > index 858ed5d80defe..89dea587a469a 100644 > --- a/Documentation/kbuild/kconfig-language.rst > +++ b/Documentation/kbuild/kconfig-language.rst > @@ -573,6 +573,32 @@ above, leading to: > bool "Support for foo hardware" > depends on ARCH_FOO_VENDOR || COMPILE_TEST > > +Optional dependencies > +~~~~~~~~~~~~~~~~~~~~~ > + > +Some drivers are able to optionally use a feature from another module > +or build cleanly with that module disabled, but cause a link failure > +when trying to use that loadable module from a built-in driver. > + > +The most common way to express this optional dependency in Kconfig logic > +uses the slighly counterintuitive slighly -> slightly For better RST compliance: could you explicitly start the code block e.g. by appending '::' as in "... counterintuitive::"? > + > + config FOO > + bool "Support for foo hardware" > + depends on BAR || !BAR are you sure that this is enough? While testing, I needed to explicitly use =y|=n: depends on BAR=y || BAR=n to prevent FOO to be selectable iff BAR=m. > + > +This means that there is either a dependency on BAR that disallows > +the combination of FOO=y with BAR=m, or BAR is completely disabled. For me, this sentence is hard to parse (but I am not a native speaker); what about something like this: This means that FOO can only be enabled, iff BAR is either built-in or completely disabled. If BAR is built as a module, FOO cannot be enabled. Kind regards, Nicolas
Attachment:
signature.asc
Description: PGP signature