Apart from those mandatory files, there may be additional and optional
content that may be present in a br2-external tree, like the +configs/+
-directory. They are described in the following chapters as well.
+or +provides/+ directories. They are described in the following chapters
+as well.
A complete example br2-external tree layout is also described later.
to override a defconfig bundled in Buildroot or another br2-external
tree.
+===== The +provides/+ directory
+
+For some packages, Buildroot provides a choice between two (or more)
+implementations of API-compatible such packages. For example, there is
+a choice to choose either libjpeg ot jpeg-turbo, and another choice
+between openssl or libressl. Finally, there is a choice to select one
+of the known, pre-configured toolchains.
+
+It is possible for a br2-external to extend those choices, by providing
+a set of files that define those alternatives:
+
+* +provides/toolchains.in+ defines the pre-configured toolchains, which
+ will then be listed in the toolchain selection;
+* +provides/jpeg.in+ defines the alternative libjpeg implementations;
+* +provides/openssl.in+ defines the alternative openssl implementations.
+
===== Free-form content
One can store all the board-specific configuration files there, such
| `----
|
|- Config.in
+ | |source "$BR2_EXTERNAL_BAR_42_PATH/toolchain/toolchain-external-mine/Config.in.options"
| |source "$BR2_EXTERNAL_BAR_42_PATH/package/pkg-1/Config.in"
| |source "$BR2_EXTERNAL_BAR_42_PATH/package/pkg-2/Config.in"
+ | |source "$BR2_EXTERNAL_BAR_42_PATH/package/my-jpeg/Config.in"
| |
| |config BAR_42_FLASH_ADDR
| | hex "my-board flash address"
|- package/pkg-2/pkg-2.hash
|- package/pkg-2/pkg-2.mk
|
+ |- provides/jpeg.in
+ | |config BR2_PACKAGE_MY_JPEG
+ | | bool "my-jpeg"
+ | `----
+ |- package/my-jpeg/Config.in
+ | |config BR2_PACKAGE_PROVIDES_JPEG
+ | | default "my-jpeg" if BR2_PACKAGE_MY_JPEG
+ | `----
+ |- package/my-jpeg/my-jpeg.mk
+ | |# This is a normal package .mk file
+ | |MY_JPEG_VERSION = 1.2.3
+ | |MY_JPEG_SITE = https://example.net/some/place
+ | |MY_JPEG_PROVIDES = jpeg
+ | |$(eval $(autotools-package))
+ | `----
+ |
+ |- provides/toolchains.in
+ | |config BR2_TOOLCHAIN_EXTERNAL_MINE
+ | | bool "my custom toolchain"
+ | | depends on BR2_some_arch
+ | | select BR2_INSTALL_LIBSTDCPP
+ | `----
+ |- toolchain/toolchain-external-mine/Config.in.options
+ | |if BR2_TOOLCHAIN_EXTERNAL_MINE
+ | |config BR2_TOOLCHAIN_EXTERNAL_PREFIX
+ | | default "arch-mine-linux-gnu"
+ | |config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
+ | | default "toolchain-external-mine"
+ | |endif
+ | `----
+ |- toolchain/toolchain-external-mine/toolchain-external-mine.mk
+ | |TOOLCHAIN_EXTERNAL_MINE_SITE = https://example.net/some/place
+ | |TOOLCHAIN_EXTERNAL_MINE_SOURCE = my-toolchain.tar.gz
+ | |$(eval $(toolchain-external-package))
+ | `----
+ |
|- configs/my-board_defconfig
| |BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_BAR_42_PATH)/patches/"
| |BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_BAR_42_PATH)/board/my-board/overlay/"
[ ] foo
[ ] bar
----
+
+Additionally, the jpeg provider will be visible in the jpeg choice:
+
+----
+Target packages --->
+ Libraries --->
+ Graphics --->
+ [*] jpeg support
+ jpeg variant () --->
+ ( ) jpeg
+ ( ) jpeg-turbo
+ *** jpeg from: Example br2-external tree ***
+ (X) my-jpeg
+ *** jpeg from: FOO_27 ***
+ ( ) another-jpeg
+----
+
+And similarly for the toolchains:
+
+----
+Toolchain --->
+ Toolchain () --->
+ ( ) Custom toolchain
+ *** Toolchains from: Example br2-external tree ***
+ (X) my custom toolchain
+----
+
+.Note
+The toolchain options in +toolchain/toolchain-external-mine/Config.in.options+
+will not appear in the `Toolchain` menu. They must be explicitly included
+from within the br2-external's top-level +Config.in+ and will thus appear
+in the `External options` menu.