Kbuild: Use dtc's -d (dependency) option
[linux-2.6.git] / arch / microblaze / boot / Makefile
index 844edf4..0c796cf 100644 (file)
@@ -2,16 +2,57 @@
 # arch/microblaze/boot/Makefile
 #
 
-targets := linux.bin linux.bin.gz
+MKIMAGE := $(srctree)/scripts/mkuboot.sh
 
-OBJCOPYFLAGS_linux.bin  := -O binary
+obj-y += linked_dtb.o
+
+targets := linux.bin linux.bin.gz simpleImage.%
+
+OBJCOPYFLAGS := -O binary
+
+# Ensure system.dtb exists
+$(obj)/linked_dtb.o: $(obj)/system.dtb
+
+# Generate system.dtb from $(DTB).dtb
+ifneq ($(DTB),system)
+$(obj)/system.dtb: $(obj)/$(DTB).dtb
+       $(call if_changed,cp)
+endif
 
 $(obj)/linux.bin: vmlinux FORCE
        $(call if_changed,objcopy)
+       $(call if_changed,uimage)
        @echo 'Kernel: $@ is ready' ' (#'`cat .version`')'
 
 $(obj)/linux.bin.gz: $(obj)/linux.bin FORCE
        $(call if_changed,gzip)
        @echo 'Kernel: $@ is ready' ' (#'`cat .version`')'
 
-clean-kernel += linux.bin linux.bin.gz
+quiet_cmd_cp = CP      $< $@$2
+       cmd_cp = cat $< >$@$2 || (rm -f $@ && echo false)
+
+quiet_cmd_strip = STRIP   $@
+       cmd_strip = $(STRIP) -K microblaze_start -K _end -K __log_buf \
+                               -K _fdt_start vmlinux -o $@
+
+quiet_cmd_uimage = UIMAGE  $@.ub
+       cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A microblaze -O linux -T kernel \
+               -C none -n 'Linux-$(KERNELRELEASE)' \
+               -a $(CONFIG_KERNEL_BASE_ADDR) -e $(CONFIG_KERNEL_BASE_ADDR) \
+               -d $@ $@.ub
+
+$(obj)/simpleImage.%: vmlinux FORCE
+       $(call if_changed,cp,.unstrip)
+       $(call if_changed,objcopy)
+       $(call if_changed,uimage)
+       $(call if_changed,strip)
+       @echo 'Kernel: $@ is ready' ' (#'`cat .version`')'
+
+
+# Rule to build device tree blobs
+DTC_FLAGS := -p 1024
+
+$(obj)/%.dtb: $(src)/dts/%.dts FORCE
+       $(call if_changed_dep,dtc)
+
+clean-files += *.dtb simpleImage.*.unstrip linux.bin.ub