Commit d0afbdad authored by Thomas Petazzoni's avatar Thomas Petazzoni Committed by Peter Korsgaard
Browse files

doc: more details about expressing dependencies in Config.in



[Peter: Minor tweak]
Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: default avatarPeter Korsgaard <jacmet@sunsite.dk>
parent d031a031
Loading
Loading
Loading
Loading
+45 −0
Original line number Diff line number Diff line
@@ -46,6 +46,51 @@ supposed to contain anything but the 'bare' name of the package.
source "package/libfoo/Config.in"
--------------------------

The +Config.in+ file of your package must also ensure that
dependencies are enabled. Typically, Buildroot uses the following
rules:

* Use a +select+ type of dependency for dependencies on
  libraries. These dependencies are generally not obvious and it
  therefore make sense to have the kconfig system ensure that the
  dependencies are selected. For example, the _libgtk2_ package uses
  +select BR2_PACKAGE_LIBGLIB2+ to make sure this library is also
  enabled.

* Use a +depends on+ type of dependency when the user really needs to
  be aware of the dependency. Typically, Buildroot uses this type of
  dependency for dependencies on toolchain options (large file
  support, RPC support, IPV6 support), or for dependencies on "big"
  things, such as the X.org system. In some cases, especially
  dependency on toolchain options, it is recommended to add a
  +comment+ displayed when the option is not enabled, so that the user
  knows why the package is not available.

An example illustrates both the usage of +select+ and +depends on+.

--------------------------
config BR2_PACKAGE_ACL
        bool "acl"
        select BR2_PACKAGE_ATTR
        depends on BR2_LARGEFILE
        help
          POSIX Access Control Lists, which are used to define more
          fine-grained discretionary access rights for files and
          directories.
          This package also provides libacl.

          http://savannah.nongnu.org/projects/acl

comment "acl requires a toolchain with LARGEFILE support"
        depends on !BR2_LARGEFILE
--------------------------


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
package.

The +.mk+ file
~~~~~~~~~~~~~~