core: allow br2-external trees to provide pre-configured toolchains
authorYann E. MORIN <yann.morin.1998@free.fr>
Mon, 29 Jul 2019 20:20:00 +0000 (22:20 +0200)
committerPeter Korsgaard <peter@korsgaard.com>
Sat, 3 Aug 2019 22:13:37 +0000 (00:13 +0200)
Since we have a choice for the pre-configured pre-built toolchains,
there is no possbility for a br2-external to provide its own. The
only solution so far for defconfigs in br2-external trees is to use
BR2_TOOLCHAIN_EXTERNAL_CUSTOM and define all the bits by itself...

This is not so convemient, so offer a way for br2-external trees to
provide such pre-configured toolchains.

To allow for this, we now scan each br2-external tree and look for a
specific file, provides.toolchains.in. We generate a kconfig file that
sources each such file, and that generated file is sourced from within
the toolchain choice, thus making the toolchains from a br2-external
tree possible and available in the same location as the ones known to
Buildroot:

    Toolchain  --->
        Toolchain type (External toolchain)  --->
        Toolchain  --->
            (X) Arm ARM 2019.03
            ( ) Linaro ARM 2018.05
            ( ) Custom toolchain
                *** Toolchains from my-br2-ext-tree: ***
            ( ) My custom ARM toolchain
                *** Toolchains from another-br2-ext-tree: ***
            ( ) Another custom ARM toolchain
            ( ) A third custom ARM toolchain

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Vadim Kochan <vadim4j@gmail.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
support/scripts/br2-external
toolchain/toolchain-external/Config.in

index da315d5c1dcf1116deddc87cc4d5cc35f93db5c1..b08b77bd3360a3e9c9c0b9e5429a8c7446d5ba8a 100755 (executable)
@@ -157,6 +157,7 @@ do_kconfig() {
     items=(
         paths
         menus
+        toolchains
     )
 
     for br2 in "${items[@]}"; do
@@ -196,6 +197,14 @@ do_kconfig() {
             fi
             printf '\n'
         } >>"${outputdir}/.br2-external.in.menus"
+
+        if [ -f "${br2_ext}/provides/toolchains.in" ]; then
+            printf 'comment "Toolchains from: %s"\n' "${br2_desc}"
+            printf 'source "%s/provides/toolchains.in"\n' "${br2_ext}"
+            printf '\n'
+        else
+            printf '# No toolchain from: %s\n\n' "${br2_desc}"
+        fi >>"${outputdir}/.br2-external.in.toolchains"
     done
 
     printf 'endmenu\n' >>"${outputdir}/.br2-external.in.menus"
index d234c1c55277060ade254c2782319032e1ead37e..128bea257e6a79c8143658c332cf87e3e4d675ac 100644 (file)
@@ -47,9 +47,12 @@ source "toolchain/toolchain-external/toolchain-external-codesourcery-amd64/Confi
 
 # Kept last, so it remains the non-default choice, unless there isn't
 # any available toolchain profile for the currently selected
-# architecture.
+# architecture, but before toolchains from br2-external trees.
 source "toolchain/toolchain-external/toolchain-external-custom/Config.in"
 
+# Toolchains from br2-external trees, if any
+source "$BR2_BASE_DIR/.br2-external.in.toolchains"
+
 endchoice
 
 choice