doc: more details about expressing dependencies in Config.in
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Sun, 13 Nov 2011 08:54:45 +0000 (09:54 +0100)
committerPeter Korsgaard <jacmet@sunsite.dk>
Sun, 13 Nov 2011 20:28:50 +0000 (21:28 +0100)
[Peter: Minor tweak]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
docs/manual/adding-packages-directory.txt

index 2e8786a20cb98d2781b8c99193c6eaa3148c755d..58f0262612020f440063f00459b1981e1b9a5e4b 100644 (file)
@@ -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
 ~~~~~~~~~~~~~~