ANDROID: 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)
committerAmit Pundir <amit.pundir@linaro.org>
Mon, 18 Dec 2017 15:41:22 +0000 (21:11 +0530)
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: Ied5d0bafbd1d01fc1f109c15c4283de7029903c9
Signed-off-by: Colin Cross <ccross@android.com>
arch/arm/Kconfig
arch/arm/Makefile
arch/arm/boot/.gitignore
arch/arm/boot/Makefile
arch/arm/boot/dts/Makefile
scripts/Makefile.lib

index a8fa325fdb17acc0ddef4d3578a89fda6ea622aa..63a36f0a8306057647b6ae73b05e64dd44e861a2 100644 (file)
@@ -1858,16 +1858,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 ab6889a1a62873e59e2b57aecc4608f649428877..bc805d702d824b1286f6d76d2c161d1e87dbf62a 100644 (file)
@@ -304,7 +304,7 @@ boot := arch/arm/boot
 ifeq ($(CONFIG_XIP_KERNEL),y)
 KBUILD_IMAGE := $(boot)/xipImage
 else ifeq ($(CONFIG_BUILD_ARM_APPENDED_DTB_IMAGE),y)
-KBUILD_IMAGE := $(boot)/zImage-dtb.$(CONFIG_BUILD_ARM_APPENDED_DTB_IMAGE_NAME)
+KBUILD_IMAGE := $(boot)/zImage-dtb
 else
 KBUILD_IMAGE := $(boot)/zImage
 endif
@@ -358,6 +358,9 @@ ifeq ($(CONFIG_VDSO),y)
        $(Q)$(MAKE) $(build)=arch/arm/vdso $@
 endif
 
+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 42f3fdfc2a99298f80d94b889f1b69100f57fc42..da75630c440da6528577d1561f2d3d4143506a26 100644 (file)
@@ -30,6 +30,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
@@ -56,6 +64,10 @@ $(obj)/compressed/vmlinux: $(obj)/Image FORCE
 $(obj)/zImage: $(obj)/compressed/vmlinux FORCE
        $(call if_changed,objcopy)
 
+$(obj)/zImage-dtb:     $(obj)/zImage $(DTB_OBJS) FORCE
+       $(call if_changed,cat)
+       @echo '  Kernel: $@ is ready'
+
 endif
 
 ifneq ($(LOADADDR),)
index eff87a3445662c767bf6f4b24a94620148ab11e3..86e591cc25674563f024f60dc644ac08007fdbad 100644 (file)
@@ -1074,5 +1074,15 @@ endif
 dtstree                := $(srctree)/$(src)
 dtb-$(CONFIG_OF_ALL_DTBS) := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts))
 
-always         := $(dtb-y)
+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 dtbs_install
+targets += $(DTB_LIST)
+
+always         := $(DTB_LIST)
 clean-files    := *.dtb
index 04b5633df1cfafa316f9086c4bf98a9ecf9d0939..9ed9464b679fef868dce730c11da535976b3e14b 100644 (file)
@@ -318,6 +318,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
 # ---------------------------------------------------------------------------