ARM: convert build of appended dtb zImage to list of dtbs
authorColin Cross <ccross@android.com>
Wed, 17 Apr 2013 23:58:36 +0000 (16:58 -0700)
committerArve Hjønnevåg <arve@android.com>
Mon, 1 Jul 2013 21:16:24 +0000 (14:16 -0700)
Allow CONFIG_BUILD_ARM_APPENDED_DTB_IMAGE_NAMES to specify
a space separated list of dtbs to append to the zImage,
and name the resulting file zImage-dtb

Change-Id: I36d9108a2349bdbb373e95076dcb1417d8c7dce6
Signed-off-by: Colin Cross <ccross@android.com>
Conflicts:
arch/arm/boot/Makefile
scripts/Makefile.lib

arch/arm/Kconfig
arch/arm/Makefile
arch/arm/boot/.gitignore
arch/arm/boot/Makefile
arch/arm/boot/dts/Makefile
scripts/Makefile.lib

index 351e48e45cbb54830711caea8f51fd6ad4223fac..99887aaa04bb06c6d8d5774c3ae8d884f57661a0 100644 (file)
@@ -1861,16 +1861,16 @@ config BUILD_ARM_APPENDED_DTB_IMAGE
        bool "Build a concatenated zImage/dtb by default"
        depends on OF
        help
-         Enabling this option will cause a concatenated zImage and DTB to
-         be built by default (instead of a standalone zImage.)  The image
-         will built in arch/arm/boot/zImage-dtb.<dtb name>
+         Enabling this option will cause a concatenated zImage and list of
+         DTBs to be built by default (instead of a standalone zImage.)
+         The image will built in arch/arm/boot/zImage-dtb
 
-config BUILD_ARM_APPENDED_DTB_IMAGE_NAME
-       string "Default dtb name"
+config BUILD_ARM_APPENDED_DTB_IMAGE_NAMES
+       string "Default dtb names"
        depends on BUILD_ARM_APPENDED_DTB_IMAGE
        help
-         name of the dtb to append when building a concatenated
-         zImage/dtb.
+         Space separated list of names of dtbs to append when
+         building a concatenated zImage-dtb.
 
 # Compressed boot loader in ROM.  Yes, we really want to ask about
 # TEXT and BSS so we preserve their values in the config files.
index 883e4bec807fe3614a767de19b21783e93b11cfd..314c7be492a9b919025c359085ea6ac16c6621a7 100644 (file)
@@ -265,7 +265,7 @@ libs-y                              := arch/arm/lib/ $(libs-y)
 ifeq ($(CONFIG_XIP_KERNEL),y)
 KBUILD_IMAGE := xipImage
 else ifeq ($(CONFIG_BUILD_ARM_APPENDED_DTB_IMAGE),y)
-KBUILD_IMAGE := zImage-dtb.$(CONFIG_BUILD_ARM_APPENDED_DTB_IMAGE_NAME)
+KBUILD_IMAGE := zImage-dtb
 else
 KBUILD_IMAGE := zImage
 endif
@@ -297,6 +297,9 @@ zinstall uinstall install: vmlinux
 dtbs: scripts
        $(Q)$(MAKE) $(build)=$(boot)/dts MACHINE=$(MACHINE) dtbs
 
+zImage-dtb: vmlinux scripts dtbs
+       $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/$@
+
 # We use MRPROPER_FILES and CLEAN_FILES now
 archclean:
        $(Q)$(MAKE) $(clean)=$(boot)
index 3c79f85975aaa26c7c2e353fefc54d71d89bc5bf..ad7a0253ea961a405fb13bb284bd1c5942e28675 100644 (file)
@@ -4,3 +4,4 @@ xipImage
 bootpImage
 uImage
 *.dtb
+zImage-dtb
\ No newline at end of file
index 84aa2caf07ed203fb810220258401a1b51f7cab3..3310df3a0569070f99acc2ed7f9f53f347273c32 100644 (file)
@@ -27,6 +27,14 @@ export ZRELADDR INITRD_PHYS PARAMS_PHYS
 
 targets := Image zImage xipImage bootpImage uImage
 
+DTB_NAMES := $(subst $\",,$(CONFIG_BUILD_ARM_APPENDED_DTB_IMAGE_NAMES))
+ifneq ($(DTB_NAMES),)
+DTB_LIST := $(addsuffix .dtb,$(DTB_NAMES))
+else
+DTB_LIST := $(dtb-y)
+endif
+DTB_OBJS := $(addprefix $(obj)/dts/,$(DTB_LIST))
+
 ifeq ($(CONFIG_XIP_KERNEL),y)
 
 $(obj)/xipImage: vmlinux FORCE
@@ -55,6 +63,10 @@ $(obj)/zImage:       $(obj)/compressed/vmlinux FORCE
        $(call if_changed,objcopy)
        @$(kecho) '  Kernel: $@ is ready'
 
+$(obj)/zImage-dtb:     $(obj)/zImage $(DTB_OBJS) FORCE
+       $(call if_changed,cat)
+       @echo '  Kernel: $@ is ready'
+
 endif
 
 ifneq ($(LOADADDR),)
index f0895c581a89be8668a99db10e6873ae94be0cef..b83cc5083a2c618b4aaf6c3c6d35e982450e2586 100644 (file)
@@ -210,13 +210,20 @@ dtb-$(CONFIG_ARCH_VT8500) += vt8500-bv07.dtb \
        wm8850-w70v2.dtb
 dtb-$(CONFIG_ARCH_ZYNQ) += zynq-zc702.dtb
 
+DTB_NAMES := $(subst $\",,$(CONFIG_BUILD_ARM_APPENDED_DTB_IMAGE_NAMES))
+ifneq ($(DTB_NAMES),)
+DTB_LIST := $(addsuffix .dtb,$(DTB_NAMES))
+else
+DTB_LIST := $(dtb-y)
+endif
+
 targets += dtbs
-targets += $(dtb-y)
+targets += $(DTB_LIST)
 endif
 
 # *.dtb used to be generated in the directory above. Clean out the
 # old build results so people don't accidentally use them.
-dtbs: $(addprefix $(obj)/, $(dtb-y))
+dtbs: $(addprefix $(obj)/, $(DTB_LIST))
        $(Q)rm -f $(obj)/../*.dtb
 
 clean-files := *.dtb
index f97869f1f09b1f1d534f5e2b412934a9680f7d98..ef2142a6159319f2bdf5f153bf7f551a937a2168 100644 (file)
@@ -273,6 +273,12 @@ $(obj)/%.dtb: $(src)/%.dts FORCE
 
 dtc-tmp = $(subst $(comma),_,$(dot-target).dts.tmp)
 
+# cat
+# ---------------------------------------------------------------------------
+# Concatentate multiple files together
+quiet_cmd_cat = CAT     $@
+cmd_cat = (cat $(filter-out FORCE,$^) > $@) || (rm -f $@; false)
+
 # Bzip2
 # ---------------------------------------------------------------------------