// -*- mode:doc; -*-
// vim: set syntax=asciidoc:

[[customize-packages]]
=== Adding project-specific packages

In general, any new package should be added directly in the +package+
directory and submitted to the Buildroot upstream project. How to add
packages to Buildroot in general is explained in full detail in
xref:adding-packages[] and will not be repeated here. However, your
project may need some proprietary packages that cannot be upstreamed.
This section will explain how you can keep such project-specific
packages in a project-specific directory.

As shown in xref:customize-dir-structure[], the recommended location for
project-specific packages is +package/<company>/+. If you are using the
+BR2_EXTERNAL+ feature (see xref:outside-br-custom[]) the recommended
location is +$(BR2_EXTERNAL)/package/+.

However, Buildroot will not be aware of the packages in this location,
unless we perform some additional steps. As explained in
xref:adding-packages[], a package in Buildroot basically consists of two
files: a +.mk+ file (describing how to build the package) and a
+Config.in+ file (describing the configuration options for this
package).

Buildroot will automatically include the +.mk+ files in first-level
subdirectories of the +package+ directory (using the pattern
+package/\*/*.mk+). If we want Buildroot to include +.mk+ files from
deeper subdirectories (like +package/<company>/package1/+) then we
simply have to add a +.mk+ file in a first-level subdirectory that
includes these additional +.mk+ files. Therefore, create a file
+package/<company>/<company>.mk+ with following contents (assuming you
have only one extra directory level below +package/<company>/+):

-----
include $(sort $(wildcard package/<company>/*/*.mk))
-----

If you are using +BR2_EXTERNAL+, create a file
+$(BR2_EXTERNAL)/external.mk+ with following contents (again assuming only
one extra level):

-----
include $(sort $(wildcard $(BR2_EXTERNAL)/package/*/*.mk))
-----

For the +Config.in+ files, create a file +package/<company>/Config.in+
that includes the +Config.in+ files of all your packages. An exhaustive
list has to be provided since wildcards are not supported in the source command of kconfig.
For example:

-----
source "package/<company>/package1/Config.in"
source "package/<company>/package2/Config.in"
-----

Include this new file +package/<company>/Config.in+ from
+package/Config.in+, preferably in a company-specific menu to make
merges with future Buildroot versions easier.

If you are using +BR2_EXTERNAL+, create a file
+$(BR2_EXTERNAL)/Config.in+ with similar contents:

-----
source "$BR2_EXTERNAL/package/package1/Config.in"
source "$BR2_EXTERNAL/package/package2/Config.in"
-----

You do not have to add an include for this +$(BR2_EXTERNAL)/Config.in+
file as it is included automatically.
