What are the differences in dependencies between select
and depends on
in the kernels Kconfig files?
config FB_CIRRUS
tristate "Cirrus Logic support"
depends on FB && (ZORRO || PCI)
select FB_CFB_FILLRECT
select FB_CFB_COPYAREA
select FB_CFB_IMAGEBLIT
---help---
This enables support for Cirrus Logic GD542x/543x based boards on
Amiga: SD64, Piccolo, Picasso II/II+, Picasso IV, or EGS Spectrum.
In the example above, how is FB_CIRRUS
diffrently related to FB && (ZORRO || PCI)
than it is to FB_CFB_FILLRECT
, FB_CFB_COPYAREA
and FB_CFB_IMAGEBLIT
?
Update
I've noticed that depend on
doesn't really do much in terms of compilation order.
For example. A successful build of AppB depends on a statically linked LibB to be built first. Setting depends on LibB
in Kconfig for AppB will not force the LibB to be built first. Setting select LibB
will.
Best Answer
depends on
indicates the symbol(s) must already be positively selected (=y
) in order for this option to be configured. For example,depends on FB && (ZORRO || PCI)
meansFB
must have been selected, and (&&) eitherZORRO
or (||)PCI
. For things likemake menuconfig
, this determines whether or not an option will be presented.select
positively sets a symbol. For example,select FB_CFB_FILLRECT
will meanFB_CFB_FILLRECT=y
. This fulfills a potential dependency of some other config option(s). Note that the kernel docs discourage the use of this for "visible" symbols (which can be selected/deselected by the user) or for symbols that themselves have dependencies, since those will not be checked.Reference: https://www.kernel.org/doc/Documentation/kbuild/kconfig-language.txt