Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | # |
| 2 | # This file is subject to the terms and conditions of the GNU General Public |
| 3 | # License. See the file "COPYING" in the main directory of this archive |
| 4 | # for more details. |
| 5 | # |
| 6 | # Copyright (C) 1995, 1998, 2001, 2002 by Ralf Baechle |
| 7 | # Copyright (C) 2004 Maciej W. Rozycki |
| 8 | # |
| 9 | |
| 10 | # |
| 11 | # Some DECstations need all possible sections of an ECOFF executable |
| 12 | # |
| 13 | ifdef CONFIG_MACH_DECSTATION |
Sam Ravnborg | 961e196 | 2010-05-30 16:27:33 +0200 | [diff] [blame] | 14 | e2eflag := -a |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 15 | endif |
| 16 | |
| 17 | # |
| 18 | # Drop some uninteresting sections in the kernel. |
| 19 | # This is only relevant for ELF kernels but doesn't hurt a.out |
| 20 | # |
Sam Ravnborg | 961e196 | 2010-05-30 16:27:33 +0200 | [diff] [blame] | 21 | drop-sections := .reginfo .mdebug .comment .note .pdr .options .MIPS.options |
| 22 | strip-flags := $(addprefix --remove-section=,$(drop-sections)) |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 23 | |
Sam Ravnborg | 961e196 | 2010-05-30 16:27:33 +0200 | [diff] [blame] | 24 | hostprogs-y := elf2ecoff |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 25 | |
Markos Chandras | 9d6b80f | 2015-02-16 15:13:11 +0000 | [diff] [blame] | 26 | suffix-y := bin |
| 27 | suffix-$(CONFIG_KERNEL_BZIP2) := bz2 |
| 28 | suffix-$(CONFIG_KERNEL_GZIP) := gz |
| 29 | suffix-$(CONFIG_KERNEL_LZMA) := lzma |
| 30 | suffix-$(CONFIG_KERNEL_LZO) := lzo |
| 31 | |
Sam Ravnborg | 961e196 | 2010-05-30 16:27:33 +0200 | [diff] [blame] | 32 | targets := vmlinux.ecoff |
Ralf Baechle | 7034228 | 2013-01-22 12:59:30 +0100 | [diff] [blame] | 33 | quiet_cmd_ecoff = ECOFF $@ |
Sam Ravnborg | 961e196 | 2010-05-30 16:27:33 +0200 | [diff] [blame] | 34 | cmd_ecoff = $(obj)/elf2ecoff $(VMLINUX) $@ $(e2eflag) |
| 35 | $(obj)/vmlinux.ecoff: $(obj)/elf2ecoff $(VMLINUX) FORCE |
| 36 | $(call if_changed,ecoff) |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 37 | |
Sam Ravnborg | 961e196 | 2010-05-30 16:27:33 +0200 | [diff] [blame] | 38 | targets += vmlinux.bin |
| 39 | quiet_cmd_bin = OBJCOPY $@ |
| 40 | cmd_bin = $(OBJCOPY) -O binary $(strip-flags) $(VMLINUX) $@ |
| 41 | $(obj)/vmlinux.bin: $(VMLINUX) FORCE |
| 42 | $(call if_changed,bin) |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 43 | |
Sam Ravnborg | 961e196 | 2010-05-30 16:27:33 +0200 | [diff] [blame] | 44 | targets += vmlinux.srec |
| 45 | quiet_cmd_srec = OBJCOPY $@ |
| 46 | cmd_srec = $(OBJCOPY) -S -O srec $(strip-flags) $(VMLINUX) $@ |
| 47 | $(obj)/vmlinux.srec: $(VMLINUX) FORCE |
| 48 | $(call if_changed,srec) |
James Hogan | 4defe45 | 2013-08-30 16:42:42 +0100 | [diff] [blame] | 49 | |
| 50 | UIMAGE_LOADADDR = $(VMLINUX_LOAD_ADDRESS) |
| 51 | UIMAGE_ENTRYADDR = $(VMLINUX_ENTRY_ADDRESS) |
| 52 | |
Markos Chandras | 9d6b80f | 2015-02-16 15:13:11 +0000 | [diff] [blame] | 53 | # |
| 54 | # Compressed vmlinux images |
| 55 | # |
| 56 | |
| 57 | extra-y += vmlinux.bin.bz2 |
| 58 | extra-y += vmlinux.bin.gz |
| 59 | extra-y += vmlinux.bin.lzma |
| 60 | extra-y += vmlinux.bin.lzo |
| 61 | |
| 62 | $(obj)/vmlinux.bin.bz2: $(obj)/vmlinux.bin FORCE |
| 63 | $(call if_changed,bzip2) |
| 64 | |
James Hogan | 4defe45 | 2013-08-30 16:42:42 +0100 | [diff] [blame] | 65 | $(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin FORCE |
| 66 | $(call if_changed,gzip) |
| 67 | |
Markos Chandras | 9d6b80f | 2015-02-16 15:13:11 +0000 | [diff] [blame] | 68 | $(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin FORCE |
| 69 | $(call if_changed,lzma) |
| 70 | |
| 71 | $(obj)/vmlinux.bin.lzo: $(obj)/vmlinux.bin FORCE |
| 72 | $(call if_changed,lzo) |
| 73 | |
| 74 | # |
| 75 | # Compressed u-boot images |
| 76 | # |
| 77 | |
| 78 | targets += uImage |
| 79 | targets += uImage.bin |
| 80 | targets += uImage.bz2 |
James Hogan | 4defe45 | 2013-08-30 16:42:42 +0100 | [diff] [blame] | 81 | targets += uImage.gz |
Markos Chandras | 9d6b80f | 2015-02-16 15:13:11 +0000 | [diff] [blame] | 82 | targets += uImage.lzma |
| 83 | targets += uImage.lzo |
| 84 | |
| 85 | $(obj)/uImage.bin: $(obj)/vmlinux.bin FORCE |
| 86 | $(call if_changed,uimage,none) |
| 87 | |
| 88 | $(obj)/uImage.bz2: $(obj)/vmlinux.bin.bz2 FORCE |
| 89 | $(call if_changed,uimage,bzip2) |
| 90 | |
James Hogan | 4defe45 | 2013-08-30 16:42:42 +0100 | [diff] [blame] | 91 | $(obj)/uImage.gz: $(obj)/vmlinux.bin.gz FORCE |
| 92 | $(call if_changed,uimage,gzip) |
| 93 | |
Markos Chandras | 9d6b80f | 2015-02-16 15:13:11 +0000 | [diff] [blame] | 94 | $(obj)/uImage.lzma: $(obj)/vmlinux.bin.lzma FORCE |
| 95 | $(call if_changed,uimage,lzma) |
| 96 | |
| 97 | $(obj)/uImage.lzo: $(obj)/vmlinux.bin.lzo FORCE |
| 98 | $(call if_changed,uimage,lzo) |
| 99 | |
| 100 | $(obj)/uImage: $(obj)/uImage.$(suffix-y) |
James Hogan | 4defe45 | 2013-08-30 16:42:42 +0100 | [diff] [blame] | 101 | @ln -sf $(notdir $<) $@ |
| 102 | @echo ' Image $@ is ready' |
Paul Burton | cf2a5e0 | 2016-10-05 18:18:19 +0100 | [diff] [blame] | 103 | |
| 104 | # |
| 105 | # Flattened Image Tree (.itb) images |
| 106 | # |
| 107 | |
| 108 | targets += vmlinux.itb |
| 109 | targets += vmlinux.gz.itb |
| 110 | targets += vmlinux.bz2.itb |
| 111 | targets += vmlinux.lzma.itb |
| 112 | targets += vmlinux.lzo.itb |
| 113 | |
Paul Burton | eed0eab | 2016-10-05 18:18:20 +0100 | [diff] [blame] | 114 | ifeq ($(ADDR_BITS),32) |
| 115 | itb_addr_cells = 1 |
| 116 | endif |
| 117 | ifeq ($(ADDR_BITS),64) |
| 118 | itb_addr_cells = 2 |
| 119 | endif |
| 120 | |
Paul Burton | cf2a5e0 | 2016-10-05 18:18:19 +0100 | [diff] [blame] | 121 | quiet_cmd_cpp_its_S = ITS $@ |
| 122 | cmd_cpp_its_S = $(CPP) $(cpp_flags) -P -C -o $@ $< \ |
| 123 | -DKERNEL_NAME="\"Linux $(KERNELRELEASE)\"" \ |
| 124 | -DVMLINUX_BINARY="\"$(3)\"" \ |
| 125 | -DVMLINUX_COMPRESSION="\"$(2)\"" \ |
| 126 | -DVMLINUX_LOAD_ADDRESS=$(VMLINUX_LOAD_ADDRESS) \ |
Paul Burton | eed0eab | 2016-10-05 18:18:20 +0100 | [diff] [blame] | 127 | -DVMLINUX_ENTRY_ADDRESS=$(VMLINUX_ENTRY_ADDRESS) \ |
| 128 | -DADDR_BITS=$(ADDR_BITS) \ |
| 129 | -DADDR_CELLS=$(itb_addr_cells) |
Paul Burton | cf2a5e0 | 2016-10-05 18:18:19 +0100 | [diff] [blame] | 130 | |
Paul Burton | bcd7c45 | 2017-06-02 12:02:08 -0700 | [diff] [blame] | 131 | $(obj)/vmlinux.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S $(VMLINUX) FORCE |
Paul Burton | cf2a5e0 | 2016-10-05 18:18:19 +0100 | [diff] [blame] | 132 | $(call if_changed_dep,cpp_its_S,none,vmlinux.bin) |
| 133 | |
Paul Burton | bcd7c45 | 2017-06-02 12:02:08 -0700 | [diff] [blame] | 134 | $(obj)/vmlinux.gz.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S $(VMLINUX) FORCE |
Paul Burton | cf2a5e0 | 2016-10-05 18:18:19 +0100 | [diff] [blame] | 135 | $(call if_changed_dep,cpp_its_S,gzip,vmlinux.bin.gz) |
| 136 | |
Paul Burton | bcd7c45 | 2017-06-02 12:02:08 -0700 | [diff] [blame] | 137 | $(obj)/vmlinux.bz2.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S $(VMLINUX) FORCE |
Paul Burton | cf2a5e0 | 2016-10-05 18:18:19 +0100 | [diff] [blame] | 138 | $(call if_changed_dep,cpp_its_S,bzip2,vmlinux.bin.bz2) |
| 139 | |
Paul Burton | bcd7c45 | 2017-06-02 12:02:08 -0700 | [diff] [blame] | 140 | $(obj)/vmlinux.lzma.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S $(VMLINUX) FORCE |
Paul Burton | cf2a5e0 | 2016-10-05 18:18:19 +0100 | [diff] [blame] | 141 | $(call if_changed_dep,cpp_its_S,lzma,vmlinux.bin.lzma) |
| 142 | |
Paul Burton | bcd7c45 | 2017-06-02 12:02:08 -0700 | [diff] [blame] | 143 | $(obj)/vmlinux.lzo.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S $(VMLINUX) FORCE |
Paul Burton | cf2a5e0 | 2016-10-05 18:18:19 +0100 | [diff] [blame] | 144 | $(call if_changed_dep,cpp_its_S,lzo,vmlinux.bin.lzo) |
| 145 | |
| 146 | quiet_cmd_itb-image = ITB $@ |
| 147 | cmd_itb-image = \ |
| 148 | env PATH="$(objtree)/scripts/dtc:$(PATH)" \ |
| 149 | $(CONFIG_SHELL) $(MKIMAGE) \ |
| 150 | -D "-I dts -O dtb -p 500 \ |
| 151 | --include $(objtree)/arch/mips \ |
| 152 | --warning no-unit_address_vs_reg" \ |
| 153 | -f $(2) $@ |
| 154 | |
| 155 | $(obj)/vmlinux.itb: $(obj)/vmlinux.its $(obj)/vmlinux.bin FORCE |
| 156 | $(call if_changed,itb-image,$<) |
| 157 | |
| 158 | $(obj)/vmlinux.gz.itb: $(obj)/vmlinux.gz.its $(obj)/vmlinux.bin.gz FORCE |
| 159 | $(call if_changed,itb-image,$<) |
| 160 | |
| 161 | $(obj)/vmlinux.bz2.itb: $(obj)/vmlinux.bz2.its $(obj)/vmlinux.bin.bz2 FORCE |
| 162 | $(call if_changed,itb-image,$<) |
| 163 | |
| 164 | $(obj)/vmlinux.lzma.itb: $(obj)/vmlinux.lzma.its $(obj)/vmlinux.bin.lzma FORCE |
| 165 | $(call if_changed,itb-image,$<) |
| 166 | |
| 167 | $(obj)/vmlinux.lzo.itb: $(obj)/vmlinux.lzo.its $(obj)/vmlinux.bin.lzo FORCE |
| 168 | $(call if_changed,itb-image,$<) |