| 1 |
|
| 2 |
|
| 3 |
|
| 4 |
|
| 5 |
|
| 6 |
|
| 7 |
|
| 8 |
|
| 9 |
|
| 10 |
|
| 11 |
|
| 12 |
|
| 13 | OBJCOPYFLAGS :=-O binary -R .comment -S
|
| 14 |
|
| 15 |
|
| 16 | ifdef CONFIG_PHYS_OFFSET
|
| 17 | add_hex = $(shell printf 0x%x $$(( $(1) + $(2) )) )
|
| 18 | ZRELADDR := $(call add_hex, $(CONFIG_PHYS_OFFSET), $(TEXT_OFFSET))
|
| 19 | endif
|
| 20 |
|
| 21 | PHYS_OFFSET := $(CONFIG_PHYS_OFFSET)
|
| 22 | export ZRELADDR PARAMS_PHYS PHYS_OFFSET
|
| 23 |
|
| 24 | targets := Image zImage xipImage bootpImage uImage
|
| 25 |
|
| 26 | ifeq ($(CONFIG_XIP_KERNEL),y)
|
| 27 |
|
| 28 | cmd_deflate_xip_data = $(CONFIG_SHELL) -c '$(src)/deflate_xip_data.sh $< $@'
|
| 29 |
|
| 30 | ifeq ($(CONFIG_XIP_DEFLATED_DATA),y)
|
| 31 | quiet_cmd_mkxip = XIPZ $@
|
| 32 | cmd_mkxip = $(cmd_objcopy) && $(cmd_deflate_xip_data)
|
| 33 | else
|
| 34 | quiet_cmd_mkxip = $(quiet_cmd_objcopy)
|
| 35 | cmd_mkxip = $(cmd_objcopy)
|
| 36 | endif
|
| 37 |
|
| 38 | $(obj)/xipImage: vmlinux FORCE
|
| 39 | $(call if_changed,mkxip)
|
| 40 | @$(kecho) ' Physical Address of xipImage: $(CONFIG_XIP_PHYS_ADDR)'
|
| 41 |
|
| 42 | $(obj)/Image $(obj)/zImage: FORCE
|
| 43 | @echo 'Kernel configured for XIP (CONFIG_XIP_KERNEL=y)'
|
| 44 | @echo 'Only the xipImage target is available in this case'
|
| 45 | @false
|
| 46 |
|
| 47 | else
|
| 48 |
|
| 49 | $(obj)/xipImage: FORCE
|
| 50 | @echo 'Kernel not configured for XIP (CONFIG_XIP_KERNEL!=y)'
|
| 51 | @false
|
| 52 |
|
| 53 | $(obj)/Image: vmlinux FORCE
|
| 54 | $(call if_changed,objcopy)
|
| 55 |
|
| 56 | $(obj)/compressed/vmlinux: $(obj)/Image FORCE
|
| 57 | $(Q)$(MAKE) $(build)=$(obj)/compressed $@
|
| 58 |
|
| 59 | $(obj)/zImage: $(obj)/compressed/vmlinux FORCE
|
| 60 | $(call if_changed,objcopy)
|
| 61 |
|
| 62 | endif
|
| 63 |
|
| 64 | ifneq ($(LOADADDR),)
|
| 65 | UIMAGE_LOADADDR=$(LOADADDR)
|
| 66 | else
|
| 67 | ifeq ($(CONFIG_ZBOOT_ROM),y)
|
| 68 | UIMAGE_LOADADDR=$(CONFIG_ZBOOT_ROM_TEXT)
|
| 69 | else
|
| 70 | UIMAGE_LOADADDR=$(ZRELADDR)
|
| 71 | endif
|
| 72 | endif
|
| 73 |
|
| 74 | check_for_multiple_loadaddr = \
|
| 75 | if [ $(words $(UIMAGE_LOADADDR)) -ne 1 ]; then \
|
| 76 | echo 'multiple (or no) load addresses: $(UIMAGE_LOADADDR)'; \
|
| 77 | echo 'This is incompatible with uImages'; \
|
| 78 | echo 'Specify LOADADDR on the commandline to build an uImage'; \
|
| 79 | false; \
|
| 80 | fi
|
| 81 |
|
| 82 | $(obj)/uImage: $(obj)/zImage FORCE
|
| 83 | @$(check_for_multiple_loadaddr)
|
| 84 | $(call if_changed,uimage)
|
| 85 |
|
| 86 | $(obj)/bootp/bootp: $(obj)/zImage FORCE
|
| 87 | $(Q)$(MAKE) $(build)=$(obj)/bootp $@
|
| 88 |
|
| 89 | $(obj)/bootpImage: $(obj)/bootp/bootp FORCE
|
| 90 | $(call if_changed,objcopy)
|
| 91 |
|
| 92 | subdir- := bootp compressed dts
|