1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- // -*- 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 tree feature (see xref:outside-br-custom[]) the recommended
- location is to put them in a sub-directory named +package/+ in your
- br2-external tree.
- 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))
- -----
- 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 using a br2-external tree, refer to xref:outside-br-custom[] for how
- to fill in those files.
|