rjw | 1f88458 | 2022-01-06 17:20:42 +0800 | [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 |
| 14 | e2eflag := -a |
| 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 | # |
| 21 | drop-sections := .reginfo .mdebug .comment .note .pdr .options .MIPS.options |
| 22 | strip-flags := $(addprefix --remove-section=,$(drop-sections)) |
| 23 | |
| 24 | hostprogs-y := elf2ecoff |
| 25 | |
| 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 | |
| 32 | targets := vmlinux.ecoff |
| 33 | quiet_cmd_ecoff = ECOFF $@ |
| 34 | cmd_ecoff = $(obj)/elf2ecoff $(VMLINUX) $@ $(e2eflag) |
| 35 | $(obj)/vmlinux.ecoff: $(obj)/elf2ecoff $(VMLINUX) FORCE |
| 36 | $(call if_changed,ecoff) |
| 37 | |
| 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) |
| 43 | |
| 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) |
| 49 | |
| 50 | UIMAGE_LOADADDR = $(VMLINUX_LOAD_ADDRESS) |
| 51 | UIMAGE_ENTRYADDR = $(VMLINUX_ENTRY_ADDRESS) |
| 52 | |
| 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 | |
| 65 | $(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin FORCE |
| 66 | $(call if_changed,gzip) |
| 67 | |
| 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 |
| 81 | targets += uImage.gz |
| 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 | |
| 91 | $(obj)/uImage.gz: $(obj)/vmlinux.bin.gz FORCE |
| 92 | $(call if_changed,uimage,gzip) |
| 93 | |
| 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) |
| 101 | @ln -sf $(notdir $<) $@ |
| 102 | @echo ' Image $@ is ready' |
| 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 | |
| 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 | |
| 121 | targets += vmlinux.its.S |
| 122 | |
| 123 | quiet_cmd_its_cat = CAT $@ |
| 124 | cmd_its_cat = cat $(filter-out $(PHONY), $^) >$@ |
| 125 | |
| 126 | $(obj)/vmlinux.its.S: $(addprefix $(srctree)/arch/mips/$(PLATFORM)/,$(ITS_INPUTS)) FORCE |
| 127 | $(call if_changed,its_cat) |
| 128 | |
| 129 | quiet_cmd_cpp_its_S = ITS $@ |
| 130 | cmd_cpp_its_S = $(CPP) $(cpp_flags) -P -C -o $@ $< \ |
| 131 | -D__ASSEMBLY__ \ |
| 132 | -DKERNEL_NAME="\"Linux $(KERNELRELEASE)\"" \ |
| 133 | -DVMLINUX_BINARY="\"$(3)\"" \ |
| 134 | -DVMLINUX_COMPRESSION="\"$(2)\"" \ |
| 135 | -DVMLINUX_LOAD_ADDRESS=$(VMLINUX_LOAD_ADDRESS) \ |
| 136 | -DVMLINUX_ENTRY_ADDRESS=$(VMLINUX_ENTRY_ADDRESS) \ |
| 137 | -DADDR_BITS=$(ADDR_BITS) \ |
| 138 | -DADDR_CELLS=$(itb_addr_cells) |
| 139 | |
| 140 | $(obj)/vmlinux.its: $(obj)/vmlinux.its.S $(VMLINUX) FORCE |
| 141 | $(call if_changed_dep,cpp_its_S,none,vmlinux.bin) |
| 142 | |
| 143 | $(obj)/vmlinux.gz.its: $(obj)/vmlinux.its.S $(VMLINUX) FORCE |
| 144 | $(call if_changed_dep,cpp_its_S,gzip,vmlinux.bin.gz) |
| 145 | |
| 146 | $(obj)/vmlinux.bz2.its: $(obj)/vmlinux.its.S $(VMLINUX) FORCE |
| 147 | $(call if_changed_dep,cpp_its_S,bzip2,vmlinux.bin.bz2) |
| 148 | |
| 149 | $(obj)/vmlinux.lzma.its: $(obj)/vmlinux.its.S $(VMLINUX) FORCE |
| 150 | $(call if_changed_dep,cpp_its_S,lzma,vmlinux.bin.lzma) |
| 151 | |
| 152 | $(obj)/vmlinux.lzo.its: $(obj)/vmlinux.its.S $(VMLINUX) FORCE |
| 153 | $(call if_changed_dep,cpp_its_S,lzo,vmlinux.bin.lzo) |
| 154 | |
| 155 | quiet_cmd_itb-image = ITB $@ |
| 156 | cmd_itb-image = \ |
| 157 | env PATH="$(objtree)/scripts/dtc:$(PATH)" \ |
| 158 | $(CONFIG_SHELL) $(MKIMAGE) \ |
| 159 | -D "-I dts -O dtb -p 500 \ |
| 160 | --include $(objtree)/arch/mips \ |
| 161 | --warning no-unit_address_vs_reg" \ |
| 162 | -f $(2) $@ |
| 163 | |
| 164 | $(obj)/vmlinux.itb: $(obj)/vmlinux.its $(obj)/vmlinux.bin FORCE |
| 165 | $(call if_changed,itb-image,$<) |
| 166 | |
| 167 | $(obj)/vmlinux.gz.itb: $(obj)/vmlinux.gz.its $(obj)/vmlinux.bin.gz FORCE |
| 168 | $(call if_changed,itb-image,$<) |
| 169 | |
| 170 | $(obj)/vmlinux.bz2.itb: $(obj)/vmlinux.bz2.its $(obj)/vmlinux.bin.bz2 FORCE |
| 171 | $(call if_changed,itb-image,$<) |
| 172 | |
| 173 | $(obj)/vmlinux.lzma.itb: $(obj)/vmlinux.lzma.its $(obj)/vmlinux.bin.lzma FORCE |
| 174 | $(call if_changed,itb-image,$<) |
| 175 | |
| 176 | $(obj)/vmlinux.lzo.itb: $(obj)/vmlinux.lzo.its $(obj)/vmlinux.bin.lzo FORCE |
| 177 | $(call if_changed,itb-image,$<) |