]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core.git/commitdiff
u-boot: Add specifying make options as part the config looping
authorRyan Eatmon <reatmon@ti.com>
Tue, 7 Oct 2025 16:22:56 +0000 (11:22 -0500)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 9 Oct 2025 09:57:18 +0000 (10:57 +0100)
There is a need to generate alternative versions of the uboot files
using the existing config looping system, but we need to add additional
settings to the make call rather simply specifying a different config.
Specifically we have two use cases:

1) We want to sign the same uboot files with two different keys where
   the key will be passed on the make call.
2) We want to include the alternative defconfigs from a different
   repository and need to add the path to this new location on the make
   command line.

This introduces a fourth value for the UBOOT_CONFIG settings:

  config,images,binary,make_opts

The values are placed into a new generated variable
UBOOT_CONFIG_MAKE_OPTS which is a '?' separated list since space can be
present if you need to specify multiple options.  This is handled by
changing IFS in the shell code when looping over the variable.

Additionally, add in a new variable UBOOT_MAKE_OPTS which is added to
the make calls in the various do_compile functions that do the actual
compiling.

Signed-off-by: Ryan Eatmon <reatmon@ti.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/classes-recipe/uboot-config.bbclass
meta/recipes-bsp/u-boot/u-boot-configure.inc
meta/recipes-bsp/u-boot/u-boot.inc

index bc20913f7320a226571598601a7f99910b7950d3..eb82dd3583b5d1da641ad2dfc4e49a5e8789545d 100644 (file)
@@ -35,6 +35,7 @@ UBOOT_BINARYNAME ?= "${@os.path.splitext(d.getVar("UBOOT_BINARY"))[0]}"
 UBOOT_IMAGE ?= "${UBOOT_BINARYNAME}-${MACHINE}-${UBOOT_VERSION}.${UBOOT_SUFFIX}"
 UBOOT_SYMLINK ?= "${UBOOT_BINARYNAME}-${MACHINE}.${UBOOT_SUFFIX}"
 UBOOT_MAKE_TARGET ?= "all"
+UBOOT_MAKE_OPTS ?= ""
 
 # Output the ELF generated. Some platforms can use the ELF file and directly
 # load it (JTAG booting, QEMU) additionally the ELF can be used for debugging
@@ -103,6 +104,7 @@ python () {
     ubootconfigflags = d.getVarFlags('UBOOT_CONFIG')
     ubootbinary = d.getVar('UBOOT_BINARY')
     ubootbinaries = d.getVar('UBOOT_BINARIES')
+    ubootconfigmakeopts = d.getVar('UBOOT_CONFIG_MAKE_OPTS')
     # The "doc" varflag is special, we don't want to see it here
     ubootconfigflags.pop('doc', None)
     ubootconfig = (d.getVar('UBOOT_CONFIG') or "").split()
@@ -120,6 +122,9 @@ python () {
     if ubootconfigflags and ubootbinaries:
         raise bb.parse.SkipRecipe("You cannot use UBOOT_BINARIES as it is internal to uboot_config.bbclass.")
 
+    if ubootconfigflags and ubootconfigmakeopts:
+        raise bb.parse.SkipRecipe("You cannot use UBOOT_CONFIG_MAKE_OPTS as it is internal to uboot_config.bbclass.")
+
     if len(ubootconfig) > 0:
         for config in ubootconfig:
             found = False
@@ -127,8 +132,8 @@ python () {
                 if config == f: 
                     found = True
                     items = v.split(',')
-                    if items[0] and len(items) > 3:
-                        raise bb.parse.SkipRecipe('Only config,images,binary can be specified!')
+                    if items[0] and len(items) > 4:
+                        raise bb.parse.SkipRecipe('Only config,images,binary,make_opts can be specified!')
                     d.appendVar('UBOOT_MACHINE', ' ' + items[0])
                     # IMAGE_FSTYPES appending
                     if len(items) > 1 and items[1]:
@@ -140,6 +145,12 @@ python () {
                     else:
                         bb.debug(1, "Appending '%s' to UBOOT_BINARIES." % ubootbinary)
                         d.appendVar('UBOOT_BINARIES', ' ' + ubootbinary)
+                    if len(items) > 3 and items[3]:
+                        bb.debug(1, "Appending '%s' to UBOOT_CONFIG_MAKE_OPTS." % items[3])
+                        d.appendVar('UBOOT_CONFIG_MAKE_OPTS', items[3] + " ? ")
+                    else:
+                        bb.debug(1, "Appending '%s' to UBOOT_CONFIG_MAKE_OPTS." % "")
+                        d.appendVar('UBOOT_CONFIG_MAKE_OPTS', " ? ")
                     break
 
             if not found:
index a15511f8b2c9db3d5dc80116687bede0ede694ca..bada506b665d9b897c8552f3e43a3c2463f388b1 100644 (file)
@@ -33,7 +33,19 @@ uboot_configure_config () {
     config=$1
     type=$2
 
-    oe_runmake -C ${S} O=${B}/${config} ${config}
+    unset k
+    IFS="?"
+    uboot_config_make_opts="${UBOOT_CONFIG_MAKE_OPTS}"
+    for config_make_opts in $uboot_config_make_opts; do
+        k=$(expr $k + 1);
+        if [ $k -eq $i ]; then
+            break
+        fi
+    done
+    unset IFS
+    unset k
+
+    oe_runmake -C ${S} O=${B}/${config} ${config_make_opts} ${UBOOT_MAKE_OPTS} ${config}
     if [ -n "${@' '.join(find_cfgs(d))}" ]; then
         merge_config.sh -m -O ${B}/${config} ${B}/${config}/.config ${@" ".join(find_cfgs(d))}
         oe_runmake -C ${S} O=${B}/${config} oldconfig
@@ -42,9 +54,9 @@ uboot_configure_config () {
 
 uboot_configure () {
     if [ -n "${UBOOT_MACHINE}" ]; then
-        oe_runmake -C ${S} O=${B} ${UBOOT_MACHINE}
+        oe_runmake -C ${S} O=${B} ${UBOOT_MAKE_OPTS} ${UBOOT_MACHINE}
     else
-        oe_runmake -C ${S} O=${B} oldconfig
+        oe_runmake -C ${S} O=${B} ${UBOOT_MAKE_OPTS} oldconfig
     fi
     merge_config.sh -m .config ${@" ".join(find_cfgs(d))}
     cml1_do_configure
index b7242de5de9e2e4cdf0a28726c1f2fa88d2e7408..e0a69e740ed5fe74f29c102d3f8d8115a5d375bc 100644 (file)
@@ -75,7 +75,19 @@ uboot_compile_config () {
     config=$2
     type=$3
 
-    oe_runmake -C ${S} O=${B}/${config} ${UBOOT_MAKE_TARGET}
+    unset k
+    IFS="?"
+    uboot_config_make_opts="${UBOOT_CONFIG_MAKE_OPTS}"
+    for config_make_opts in $uboot_config_make_opts; do
+        k=$(expr $k + 1);
+        if [ $k -eq $i ]; then
+            break
+        fi
+    done
+    unset IFS
+    unset k
+
+    oe_runmake -C ${S} O=${B}/${config} ${config_make_opts} ${UBOOT_MAKE_OPTS} ${UBOOT_MAKE_TARGET}
 
     unset k
     for binary in ${UBOOT_BINARIES}; do
@@ -102,7 +114,7 @@ uboot_compile_config_copy_binary () {
 }
 
 uboot_compile () {
-    oe_runmake -C ${S} O=${B} ${UBOOT_MAKE_TARGET}
+    oe_runmake -C ${S} O=${B} ${UBOOT_MAKE_OPTS} ${UBOOT_MAKE_TARGET}
 
     # Generate the uboot-initial-env
     if [ -n "${UBOOT_INITIAL_ENV}" ]; then