Commit 6372f4e6 authored by Samuel MARTIN's avatar Samuel MARTIN Committed by Peter Korsgaard
Browse files

manual: update Config.in dependency explainations



[Peter: adjusted according to Arnout's suggestions]
Signed-off-by: default avatarSamuel MARTIN <s.martin49@gmail.com>
Acked-by: default avatarArnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: default avatarPeter Korsgaard <jacmet@sunsite.dk>
parent 22937a37
Loading
Loading
Loading
Loading
+53 −0
Original line number Diff line number Diff line
@@ -87,6 +87,59 @@ comment "acl requires a toolchain with LARGEFILE support"
--------------------------


Note that these two dependency types are only transitive with the
dependencies of the same kind.

This means, in the following example:

--------------------------
config BR2_PACKAGE_A
        bool "Package A"

config BR2_PACKAGE_B
        bool "Package B"
        depends on BR2_PACKAGE_A

config BR2_PACKAGE_C
        bool "Package C"
        depends on BR2_PACKAGE_B

config BR2_PACKAGE_D
        bool "Package D"
        select BR2_PACKAGE_B

config BR2_PACKAGE_E
        bool "Package E"
        select BR2_PACKAGE_D
--------------------------

* Selecting +Package C+ will be visible if +Package B+ has been
  selected, which in turn is only visible if +Package A+ has been
  selected.

* Selecting +Package E+ will select +Package D+, which will select
  +Package B+, it will not check for the dependencies of +Package B+,
  so it will not select +Package A+.

* Since +Package B+ is selected but +Package A+ is not, this violates
  the dependency of +Package B+ on +Package A+.  Therefore, in such a
  situation, the transitive dependency has to be added explicitly:

--------------------------
config BR2_PACKAGE_D
	bool "Package D"
	select BR2_PACKAGE_B
	depends on BR2_PACKAGE_A

config BR2_PACKAGE_E
	bool "Package E"
	select BR2_PACKAGE_D
	depends on BR2_PACKAGE_A
--------------------------

Overall, for package library dependencies, +select+ should be
preferred.

Note that such dependencies will make sure that the dependency option
is also enabled, but not necessarily built before your package. To do
so, the dependency also needs to be expressed in the +.mk+ file of the