boot/uboot: allow to build multiple U-Boot images
authorPetr Kulhavy <brain@jikos.cz>
Fri, 2 Sep 2016 12:26:26 +0000 (14:26 +0200)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Sat, 17 Sep 2016 17:24:12 +0000 (19:24 +0200)
Sometimes it is desired to build multiple U-boot images. E.g. one to
save into flash memory and one for serial load. So far this was not
possible.

This change allows to select any combination of the target formats. They
are all copied to the image folder.

Signed-off-by: Petr Kulhavy <brain@jikos.cz>
[Thomas:
 - Handle the BR2_TARGET_UBOOT_FORMAT_BIN, which wasn't handled, and
   therefore u-boot.bin was not copied when
   BR2_TARGET_UBOOT_FORMAT_BIN=y.
 - Rename UBOOT_BIN to UBOOT_BINS, since it can now contain multiple
   values.]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
boot/uboot/Config.in
boot/uboot/uboot.mk

index 45d0586109bf5f8edc00f4b5f146b5001295dc96..f6d30d9fc48852a3864409397ddc6b6174670ae3 100644 (file)
@@ -137,9 +137,7 @@ config BR2_TARGET_UBOOT_NEEDS_DTC
          Select this option if your U-Boot board configuration
          requires the Device Tree compiler to be available.
 
-choice
-       prompt "U-Boot binary format"
-       default BR2_TARGET_UBOOT_FORMAT_BIN
+menu "U-Boot binary format"
 
 config BR2_TARGET_UBOOT_FORMAT_AIS
        bool "u-boot.ais"
@@ -150,6 +148,7 @@ config BR2_TARGET_UBOOT_FORMAT_AIS
 
 config BR2_TARGET_UBOOT_FORMAT_BIN
        bool "u-boot.bin"
+       default y
 
 config BR2_TARGET_UBOOT_FORMAT_DTB_IMG
        bool "u-boot-dtb.img"
@@ -252,19 +251,21 @@ config BR2_TARGET_UBOOT_FORMAT_CUSTOM
        help
          On some platforms, the standard U-Boot binary is not called
          u-boot.bin, but u-boot<something>.bin. If this is your case,
-         you should select this option and specify the correct name
+         you should select this option and specify the correct name(s)
          in BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME.
 
-endchoice
-
 config BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME
-       string "U-Boot binary format: custom name"
+       string "U-Boot binary format: custom names"
        depends on BR2_TARGET_UBOOT_FORMAT_CUSTOM
        help
-         Specify the correct name of the output binary created by
-         U-Boot, if it is not one of the default names. For example:
+         In case the U-Boot binary for the target platform is not among
+         the default names, one or more custom names can be listed here.
+         Use space to separate multiple names.
+         Example:
          u-boot_magic.bin
 
+endmenu
+
 config BR2_TARGET_UBOOT_OMAP_IFT
        depends on BR2_TARGET_UBOOT_FORMAT_BIN
        depends on BR2_arm || BR2_armeb
index 7c3512ad415f1132cc5d18ea5c37827fbdef6b09..7379a4d139689a4971b0239b489bd551db7ab139 100644 (file)
@@ -36,48 +36,78 @@ BR_NO_CHECK_HASH_FOR += $(UBOOT_SOURCE)
 endif
 endif
 
+ifeq ($(BR2_TARGET_UBOOT_FORMAT_BIN),y)
+UBOOT_BINS += u-boot.bin
+endif
+
 ifeq ($(BR2_TARGET_UBOOT_FORMAT_ELF),y)
-UBOOT_BIN = u-boot
+UBOOT_BINS += u-boot
 # To make elf usable for debuging on ARC use special target
 ifeq ($(BR2_arc),y)
-UBOOT_MAKE_TARGET = mdbtrick
+UBOOT_MAKE_TARGET += mdbtrick
+endif
+endif
+
+ifeq ($(BR2_TARGET_UBOOT_FORMAT_KWB),y)
+UBOOT_BINS += u-boot.kwb
+UBOOT_MAKE_TARGET += u-boot.kwb
+endif
+
+ifeq ($(BR2_TARGET_UBOOT_FORMAT_AIS),y)
+UBOOT_BINS += u-boot.ais
+UBOOT_MAKE_TARGET += u-boot.ais
+endif
+
+ifeq ($(BR2_TARGET_UBOOT_FORMAT_LDR),y)
+UBOOT_BINS += u-boot.ldr
+endif
+
+ifeq ($(BR2_TARGET_UBOOT_FORMAT_NAND_BIN),y)
+UBOOT_BINS += u-boot-nand.bin
+endif
+
+ifeq ($(BR2_TARGET_UBOOT_FORMAT_DTB_IMG),y)
+UBOOT_BINS += u-boot-dtb.img
+UBOOT_MAKE_TARGET += all u-boot-dtb.img
+endif
+
+ifeq ($(BR2_TARGET_UBOOT_FORMAT_IMG),y)
+UBOOT_BINS += u-boot.img
+UBOOT_MAKE_TARGET += u-boot.img
 endif
-else ifeq ($(BR2_TARGET_UBOOT_FORMAT_KWB),y)
-UBOOT_BIN = u-boot.kwb
-UBOOT_MAKE_TARGET = $(UBOOT_BIN)
-else ifeq ($(BR2_TARGET_UBOOT_FORMAT_AIS),y)
-UBOOT_BIN = u-boot.ais
-UBOOT_MAKE_TARGET = $(UBOOT_BIN)
-else ifeq ($(BR2_TARGET_UBOOT_FORMAT_LDR),y)
-UBOOT_BIN = u-boot.ldr
-else ifeq ($(BR2_TARGET_UBOOT_FORMAT_NAND_BIN),y)
-UBOOT_BIN = u-boot-nand.bin
-else ifeq ($(BR2_TARGET_UBOOT_FORMAT_DTB_IMG),y)
-UBOOT_BIN = u-boot-dtb.img
-UBOOT_MAKE_TARGET = all $(UBOOT_BIN)
-else ifeq ($(BR2_TARGET_UBOOT_FORMAT_IMG),y)
-UBOOT_BIN = u-boot.img
-else ifeq ($(BR2_TARGET_UBOOT_FORMAT_IMX),y)
-UBOOT_BIN = u-boot.imx
-else ifeq ($(BR2_TARGET_UBOOT_FORMAT_SB),y)
-UBOOT_BIN = u-boot.sb
-UBOOT_MAKE_TARGET = $(UBOOT_BIN)
+
+ifeq ($(BR2_TARGET_UBOOT_FORMAT_IMX),y)
+UBOOT_BINS += u-boot.imx
+UBOOT_MAKE_TARGET += u-boot.imx
+endif
+
+ifeq ($(BR2_TARGET_UBOOT_FORMAT_SB),y)
+UBOOT_BINS += u-boot.sb
+UBOOT_MAKE_TARGET += u-boot.sb
 # mxsimage needs OpenSSL
 UBOOT_DEPENDENCIES += host-elftosb host-openssl
-else ifeq ($(BR2_TARGET_UBOOT_FORMAT_SD),y)
+endif
+
+ifeq ($(BR2_TARGET_UBOOT_FORMAT_SD),y)
 # BootStream (.sb) is generated by U-Boot, we convert it to SD format
-UBOOT_BIN = u-boot.sd
-UBOOT_MAKE_TARGET = u-boot.sb
+UBOOT_BINS += u-boot.sd
+UBOOT_MAKE_TARGET += u-boot.sb
 UBOOT_DEPENDENCIES += host-elftosb host-openssl
-else ifeq ($(BR2_TARGET_UBOOT_FORMAT_NAND),y)
-UBOOT_BIN = u-boot.nand
-UBOOT_MAKE_TARGET = u-boot.sb
+endif
+
+ifeq ($(BR2_TARGET_UBOOT_FORMAT_NAND),y)
+UBOOT_BINS += u-boot.nand
+UBOOT_MAKE_TARGET += u-boot.sb
 UBOOT_DEPENDENCIES += host-elftosb host-openssl
-else ifeq ($(BR2_TARGET_UBOOT_FORMAT_CUSTOM),y)
-UBOOT_BIN = $(call qstrip,$(BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME))
-else
-UBOOT_BIN = u-boot.bin
-UBOOT_BIN_IFT = $(UBOOT_BIN).ift
+endif
+
+ifeq ($(BR2_TARGET_UBOOT_FORMAT_CUSTOM),y)
+UBOOT_BINS += $(call qstrip,$(BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME))
+endif
+
+ifeq ($(BR2_TARGET_UBOOT_OMAP_IFT),y)
+UBOOT_BINS += u-boot.bin
+UBOOT_BIN_IFT = u-boot.bin.ift
 endif
 
 # The kernel calls AArch64 'arm64', but U-Boot calls it just 'arm', so
@@ -166,9 +196,11 @@ define UBOOT_BUILD_OMAP_IFT
 endef
 
 define UBOOT_INSTALL_IMAGES_CMDS
-       cp -dpf $(@D)/$(UBOOT_BIN) $(BINARIES_DIR)/
+       $(foreach f,$(UBOOT_BINS), \
+                       cp -dpf $(@D)/$(f) $(BINARIES_DIR)/
+       )
        $(if $(BR2_TARGET_UBOOT_FORMAT_NAND),
-               cp -dpf $(@D)/$(UBOOT_MAKE_TARGET) $(BINARIES_DIR))
+               cp -dpf $(@D)/u-boot.sb $(BINARIES_DIR))
        $(if $(BR2_TARGET_UBOOT_SPL),
                $(foreach f,$(call qstrip,$(BR2_TARGET_UBOOT_SPL_NAME)), \
                        cp -dpf $(@D)/$(f) $(BINARIES_DIR)/