diff mbox series

ref-manual: Document updated UBOOT_CONFIG flow

Message ID 20260120192159.2226262-1-reatmon@ti.com
State New
Headers show
Series ref-manual: Document updated UBOOT_CONFIG flow | expand

Commit Message

Ryan Eatmon Jan. 20, 2026, 7:21 p.m. UTC
The UBOOT_CONFIG flow was updated in oe-core [1].  Document all of the
new variables and preferred method of specifying the various controls
for each config.

[1] xxx

Signed-off-by: Ryan Eatmon <reatmon@ti.com>
---
 documentation/ref-manual/classes.rst   |  96 +++++++++++++++++++----
 documentation/ref-manual/variables.rst | 101 +++++++++++++++++++++++--
 2 files changed, 176 insertions(+), 21 deletions(-)
diff mbox series

Patch

diff --git a/documentation/ref-manual/classes.rst b/documentation/ref-manual/classes.rst
index 2e219a59c..4eb811387 100644
--- a/documentation/ref-manual/classes.rst
+++ b/documentation/ref-manual/classes.rst
@@ -3269,13 +3269,89 @@  variable using the "type" varflag. Here is an example::
 The :ref:`ref-classes-uboot-config` class provides support for configuring one
 or more U-Boot build configurations.
 
-There are two ways to configure the recipe for your machine:
+There are three ways to configure the recipe for your machine:
 
--  Using :term:`UBOOT_CONFIG` variable. For example::
+-  Using the :term:`UBOOT_MACHINE` variable (and its companion variable
+   :term:`UBOOT_BINARY`). For example::
+
+      UBOOT_MACHINE = "config"
+      UBOOT_BINARY = "u-boot.bin"
+
+-  Using :term:`UBOOT_CONFIG` variables. For example::
+
+      UBOOT_CONFIG ??= "foo bar"
+      UBOOT_CONFIG[foo] = "config"
+      UBOOT_CONFIG[bar] = "config2"
+
+      UBOOT_CONFIG_IMAGE_FSTYPES[bar] = "fstype"
+
+      UBOOT_CONFIG_BINARY[foo] = "binary"
+
+      UBOOT_CONFIG_MAKE_OPTS[foo] = "FOO=1"
+      UBOOT_CONFIG_MAKE_OPTS[bar] = "BAR=1"
+
+      UBOOT_CONFIG_FRAGMENTS[foo] = "foo.fragment"
+
+   In this example, all possible configurations are selected (``foo`` and
+   ``bar``), but it is also possible to build only ``foo`` or ``bar`` by
+   changing the value of :term:`UBOOT_CONFIG` to include either one or the
+   other.
+
+   Each build configuration is associated to a variable flag definition of
+   :term:`UBOOT_CONFIG`, and associated changes for each config as defined
+   in the various UBOOT_CONFIG_* variables.
+
+   -  UBOOT_CONFIG[config]: defconfig file selected for this build configuration.
+      These files are found in the source tree's ``configs`` folder of U-Boot.
+
+      *This option is mandatory.*
+
+   -  :term:`UBOOT_CONFIG_IMAGE_FSTYPES` [config]: image types to append to the
+      :term:`IMAGE_FSTYPES` variable for image generation for this build
+      configuration.
+
+      This can allow building an extra image format that uses the binary
+      generated by this build configuration.
+
+      This option is not mandatory and can be left unspecified if not needed.
+
+   -  :term:`UBOOT_CONFIG_BINARY` [config]: binary to select as the one to deploy in
+      :term:`DEPLOY_DIR_IMAGE`. The output of a U-Boot build may be more than
+      one binary, for example::
+
+         u-boot.bin
+         u-boot-with-spl.bin
+
+      Setting the ``binary`` value to ``u-boot-with-spl.bin`` will make this
+      binary the one deployed in :term:`DEPLOY_DIR_IMAGE`. It is renamed to
+      include the build configuration name in the process (``foo`` or ``bar`` in
+      the above example).
+
+      This option defaults to :term:`UBOOT_BINARY` if not specified.
+
+   -  :term:`UBOOT_CONFIG_MAKE_OPTS` [config]: additional options passed to
+      ``make`` when configuring and compiling U-Boot for this configuration
+      entry. The options in this entry are added before the options in
+      :term:`UBOOT_MAKE_OPTS`.
+
+      This option is not mandatory and adds nothing if not specified.  If
+      you do not have a make option for a given config, you can simply not
+      set the flag for that config.
+
+   -  :term:`UBOOT_CONFIG_FRAGMENTS` [config]: additional config fragment(s)
+      from the source tree that is used during ``do_configure()`` to setup the
+      build.  The options in this entry are added before the fragments in
+      :term:`UBOOT_FRAGMENTS`.
+
+      This option is not mandatory and adds nothing if not specified.  If
+      you do not have a fragment a given config, you can simply not set the
+      flag for that config.
+
+-  Or, a legacy method using the :term:`UBOOT_CONFIG` variable by itself. For example::
 
       UBOOT_CONFIG ??= "foo bar"
-      UBOOT_CONFIG[foo] = "config,images,binary,makeopts"
-      UBOOT_CONFIG[bar] = "config2,images2,binary2,makeopts2"
+      UBOOT_CONFIG[foo] = "config,images,binary"
+      UBOOT_CONFIG[bar] = "config2,images2,binary2"
 
    In this example, all possible configurations are selected (``foo`` and
    ``bar``), but it is also possible to build only ``foo`` or ``bar`` by
@@ -3313,15 +3389,9 @@  There are two ways to configure the recipe for your machine:
 
       This option defaults to :term:`UBOOT_BINARY` if unset.
 
-   -  ``makeopts``: the additional options passed to ``make`` when configuring
-      and compiling U-Boot for this configuration entry. The options in this
-      entry are added before the options in :term:`UBOOT_MAKE_OPTS`.
-
--  Or, using the :term:`UBOOT_MACHINE` variable (and its companion variable
-   :term:`UBOOT_BINARY`). For example::
-
-      UBOOT_MACHINE = "config"
-      UBOOT_BINARY = "u-boot.bin"
+.. note::
+   It is recommended to not use this legacy flow as any future extensions
+   to the control knobs will be not added to this methodology.
 
 Using :term:`UBOOT_MACHINE` and :term:`UBOOT_CONFIG` at the same time is not
 possible.
diff --git a/documentation/ref-manual/variables.rst b/documentation/ref-manual/variables.rst
index 4d8a35473..dec260a3f 100644
--- a/documentation/ref-manual/variables.rst
+++ b/documentation/ref-manual/variables.rst
@@ -10669,29 +10669,108 @@  system and gives an overview of their function and contents.
 
    :term:`UBOOT_CONFIG`
       Configures one or more U-Boot configurations to build. Each
-      configuration can define the :term:`UBOOT_MACHINE` and optionally the
-      :term:`IMAGE_FSTYPES` and the :term:`UBOOT_BINARY`.
+      configuration must define the :term:`UBOOT_MACHINE`.  Additional control
+      variables can found at: :term:`UBOOT_CONFIG_BINARY`,
+      :term:`UBOOT_CONFIG_FRAGMENTS`, :term:`UBOOT_CONFIG_IMAGE_FSTYPES`, and
+      :term:`UBOOT_CONFIG_MAKE_OPTS`. 
 
-      Here is an example from the ``meta-freescale`` layer. ::
+      Here is an updated example from the ``meta-freescale`` layer. ::
 
          UBOOT_CONFIG ??= "sdcard-ifc-secure-boot sdcard-ifc sdcard-qspi lpuart qspi secure-boot nor"
+
          UBOOT_CONFIG[nor] = "ls1021atwr_nor_defconfig"
-         UBOOT_CONFIG[sdcard-ifc] = "ls1021atwr_sdcard_ifc_defconfig,,u-boot-with-spl-pbl.bin"
-         UBOOT_CONFIG[sdcard-qspi] = "ls1021atwr_sdcard_qspi_defconfig,,u-boot-with-spl-pbl.bin"
+         UBOOT_CONFIG[sdcard-ifc] = "ls1021atwr_sdcard_ifc_defconfig"
+         UBOOT_CONFIG[sdcard-qspi] = "ls1021atwr_sdcard_qspi_defconfig"
          UBOOT_CONFIG[lpuart] = "ls1021atwr_nor_lpuart_defconfig"
          UBOOT_CONFIG[qspi] = "ls1021atwr_qspi_defconfig"
          UBOOT_CONFIG[secure-boot] = "ls1021atwr_nor_SECURE_BOOT_defconfig"
-         UBOOT_CONFIG[sdcard-ifc-secure-boot] = "ls1021atwr_sdcard_ifc_SECURE_BOOT_defconfig,,u-boot-with-spl-pbl.bin"
+         UBOOT_CONFIG[sdcard-ifc-secure-boot] = "ls1021atwr_sdcard_ifc_SECURE_BOOT_defconfig"
+
+         UBOOT_CONFIG_BINARY[sdcard-ifc] = "u-boot-with-spl-pbl.bin"
+         UBOOT_CONFIG_BINARY[sdcard-qspi] = "u-boot-with-spl-pbl.bin"
+         UBOOT_CONFIG_BINARY[sdcard-ifc-secure-boot] = "u-boot-with-spl-pbl.bin"
 
       In this example, all possible seven configurations are selected. Each
       configuration specifies "..._defconfig" as :term:`UBOOT_MACHINE`, and
       the "sd..." configurations define an individual name for
-      :term:`UBOOT_BINARY`. No configuration defines a second parameter for
-      :term:`IMAGE_FSTYPES` to use for the U-Boot image.
+      :term:`UBOOT_CONFIG_BINARY`.
 
       For more information on how the :term:`UBOOT_CONFIG` is handled, see the
       :ref:`ref-classes-uboot-config` class.
 
+   :term:`UBOOT_CONFIG_BINARY`
+      This variable cannot be set to a value in a config, it is a placeholder
+      for configuring the :term:`UBOOT_CONFIG` flow via flags::
+
+         UBOOT_CONFIG_BINARY[foo] = "binary1"
+         UBOOT_CONFIG_BINARY[bar] = "binary2"
+
+      Specify the binary to select as the one to deploy in :term:`DEPLOY_DIR_IMAGE`.
+      The output of a U-Boot build may be more than one binary, for example::
+
+         u-boot.bin
+         u-boot-with-spl.bin
+
+      Setting the ``binary`` value to ``u-boot-with-spl.bin`` will make this
+      binary the one deployed in :term:`DEPLOY_DIR_IMAGE`. It is renamed to
+      include the build configuration name in the process (``foo`` or ``bar`` in
+      the above example).
+
+      This option defaults to :term:`UBOOT_BINARY` if not specified.
+
+      For more information on how the :term:`UBOOT_CONFIG_BINARY` is handled, see the
+      :ref:`ref-classes-uboot-config` class.
+
+   :term:`UBOOT_CONFIG_FRAGMENTS`
+      This variable cannot be set to a value in a config, it is a placeholder
+      for configuring the :term:`UBOOT_CONFIG` flow via flags::
+
+         UBOOT_CONFIG_FRAGMENTS[foo] = "frag1 frag2"
+         UBOOT_CONFIG_FRAGMENTS[bar] = "frag3"
+
+      Specify a list of fragments from the source tree that should be combined
+      with the defconfig from :term:`UBOOT_CONFIG` that are used during ``do_configure()``
+      to configure the build.
+
+      This option is not required and you only need to specify flag settings for
+      configs that need them.
+
+      For more information on how the :term:`UBOOT_CONFIG_FRAGMENTS` is handled, see the
+      :ref:`ref-classes-uboot-config` class.
+
+   :term:`UBOOT_CONFIG_IMAGE_FSTYPES`
+      This variable cannot be set to a value in a config, it is a placeholder
+      for configuring the :term:`UBOOT_CONFIG` flow via flags::
+
+         UBOOT_CONFIG_IMAGE_FSTYPES[foo] = "fstype1"
+         UBOOT_CONFIG_IMAGE_FSTYPES[bar] = "fstype2"
+
+      Append additional image types to the :term:`IMAGE_FSTYPES` variable for
+      image generation for this build configuration.  This can allow building an
+      extra image format that uses the binary generated by this build configuration.
+
+      This option is not required and you only need to specify flag settings for
+      configs that need them.
+
+      For more information on how the :term:`UBOOT_CONFIG_IMAGE_FSTYPES` is handled, see the
+      :ref:`ref-classes-uboot-config` class.
+
+   :term:`UBOOT_CONFIG_MAKE_OPTS`
+      This variable cannot be set to a value in a config, it is a placeholder
+      for configuring the :term:`UBOOT_CONFIG` flow via flags::
+
+         UBOOT_CONFIG_MAKE_OPTS[foo] = "OPT1=foo OPT2=2"
+         UBOOT_CONFIG_MAKE_OPTS[bar] = "OPT1=bar"
+
+      Specify a list of make command line options that are passed to the ``make`` command
+      during ``do_compile()``.
+
+      This option is not required and you only need to specify flag settings for
+      configs that need them.
+
+      For more information on how the :term:`UBOOT_CONFIG_MAKE_OPTS` is handled, see the
+      :ref:`ref-classes-uboot-config` class.
+
    :term:`UBOOT_DTB_LOADADDRESS`
       Specifies the load address for the dtb image used by U-Boot. During FIT
       image creation, the :term:`UBOOT_DTB_LOADADDRESS` variable is used in
@@ -10980,6 +11059,12 @@  system and gives an overview of their function and contents.
 
       See the :ref:`ref-classes-uboot-sign` class for details.
 
+   :term:`UBOOT_FRAGMENTS`
+      The :term:`UBOOT_FRAGMENTS` variable can be used to pass extra config
+      fragments from the source tree to ``make`` when U-Boot is configured.
+
+      See the :ref:`ref-classes-uboot-config` class for more information.
+
    :term:`UBOOT_INITIAL_ENV_BINARY`
       This variable enables the generation of the U-Boot initial environment in
       binary format.