162306a36Sopenharmony_ci# 262306a36Sopenharmony_ci# This file is subject to the terms and conditions of the GNU General Public 362306a36Sopenharmony_ci# License. See the file "COPYING" in the main directory of this archive 462306a36Sopenharmony_ci# for more details. 562306a36Sopenharmony_ci# 662306a36Sopenharmony_ci# Copyright (C) 1995, 1998, 2001, 2002 by Ralf Baechle 762306a36Sopenharmony_ci# Copyright (C) 2004 Maciej W. Rozycki 862306a36Sopenharmony_ci# 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci# 1162306a36Sopenharmony_ci# Some DECstations need all possible sections of an ECOFF executable 1262306a36Sopenharmony_ci# 1362306a36Sopenharmony_ciifdef CONFIG_MACH_DECSTATION 1462306a36Sopenharmony_ci e2eflag := -a 1562306a36Sopenharmony_ciendif 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci# 1862306a36Sopenharmony_ci# Drop some uninteresting sections in the kernel. 1962306a36Sopenharmony_ci# This is only relevant for ELF kernels but doesn't hurt a.out 2062306a36Sopenharmony_ci# 2162306a36Sopenharmony_cidrop-sections := .reginfo .mdebug .comment .note .pdr .options .MIPS.options 2262306a36Sopenharmony_cistrip-flags := $(addprefix --remove-section=,$(drop-sections)) 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_cihostprogs := elf2ecoff 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_cisuffix-y := bin 2762306a36Sopenharmony_cisuffix-$(CONFIG_KERNEL_BZIP2) := bz2 2862306a36Sopenharmony_cisuffix-$(CONFIG_KERNEL_GZIP) := gz 2962306a36Sopenharmony_cisuffix-$(CONFIG_KERNEL_LZMA) := lzma 3062306a36Sopenharmony_cisuffix-$(CONFIG_KERNEL_LZO) := lzo 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_citargets := vmlinux.ecoff 3362306a36Sopenharmony_ciquiet_cmd_ecoff = ECOFF $@ 3462306a36Sopenharmony_ci cmd_ecoff = $(obj)/elf2ecoff $(VMLINUX) $@ $(e2eflag) 3562306a36Sopenharmony_ci$(obj)/vmlinux.ecoff: $(obj)/elf2ecoff $(VMLINUX) FORCE 3662306a36Sopenharmony_ci $(call if_changed,ecoff) 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_citargets += vmlinux.bin 3962306a36Sopenharmony_ciquiet_cmd_bin = OBJCOPY $@ 4062306a36Sopenharmony_ci cmd_bin = $(OBJCOPY) -O binary $(strip-flags) $(VMLINUX) $@ 4162306a36Sopenharmony_ci$(obj)/vmlinux.bin: $(VMLINUX) FORCE 4262306a36Sopenharmony_ci $(call if_changed,bin) 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_citargets += vmlinux.srec 4562306a36Sopenharmony_ciquiet_cmd_srec = OBJCOPY $@ 4662306a36Sopenharmony_ci cmd_srec = $(OBJCOPY) -S -O srec $(strip-flags) $(VMLINUX) $@ 4762306a36Sopenharmony_ci$(obj)/vmlinux.srec: $(VMLINUX) FORCE 4862306a36Sopenharmony_ci $(call if_changed,srec) 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ciUIMAGE_LOADADDR = $(VMLINUX_LOAD_ADDRESS) 5162306a36Sopenharmony_ciUIMAGE_ENTRYADDR = $(VMLINUX_ENTRY_ADDRESS) 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_ci# 5462306a36Sopenharmony_ci# Compressed vmlinux images 5562306a36Sopenharmony_ci# 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ciextra-y += vmlinux.bin.bz2 5862306a36Sopenharmony_ciextra-y += vmlinux.bin.gz 5962306a36Sopenharmony_ciextra-y += vmlinux.bin.lzma 6062306a36Sopenharmony_ciextra-y += vmlinux.bin.lzo 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ci$(obj)/vmlinux.bin.bz2: $(obj)/vmlinux.bin FORCE 6362306a36Sopenharmony_ci $(call if_changed,bzip2) 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ci$(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin FORCE 6662306a36Sopenharmony_ci $(call if_changed,gzip) 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_ci$(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin FORCE 6962306a36Sopenharmony_ci $(call if_changed,lzma) 7062306a36Sopenharmony_ci 7162306a36Sopenharmony_ci$(obj)/vmlinux.bin.lzo: $(obj)/vmlinux.bin FORCE 7262306a36Sopenharmony_ci $(call if_changed,lzo) 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_ci# 7562306a36Sopenharmony_ci# Compressed u-boot images 7662306a36Sopenharmony_ci# 7762306a36Sopenharmony_ci 7862306a36Sopenharmony_citargets += uImage 7962306a36Sopenharmony_citargets += uImage.bin 8062306a36Sopenharmony_citargets += uImage.bz2 8162306a36Sopenharmony_citargets += uImage.gz 8262306a36Sopenharmony_citargets += uImage.lzma 8362306a36Sopenharmony_citargets += uImage.lzo 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_ci$(obj)/uImage.bin: $(obj)/vmlinux.bin FORCE 8662306a36Sopenharmony_ci $(call if_changed,uimage,none) 8762306a36Sopenharmony_ci 8862306a36Sopenharmony_ci$(obj)/uImage.bz2: $(obj)/vmlinux.bin.bz2 FORCE 8962306a36Sopenharmony_ci $(call if_changed,uimage,bzip2) 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ci$(obj)/uImage.gz: $(obj)/vmlinux.bin.gz FORCE 9262306a36Sopenharmony_ci $(call if_changed,uimage,gzip) 9362306a36Sopenharmony_ci 9462306a36Sopenharmony_ci$(obj)/uImage.lzma: $(obj)/vmlinux.bin.lzma FORCE 9562306a36Sopenharmony_ci $(call if_changed,uimage,lzma) 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_ci$(obj)/uImage.lzo: $(obj)/vmlinux.bin.lzo FORCE 9862306a36Sopenharmony_ci $(call if_changed,uimage,lzo) 9962306a36Sopenharmony_ci 10062306a36Sopenharmony_ci$(obj)/uImage: $(obj)/uImage.$(suffix-y) 10162306a36Sopenharmony_ci @ln -sf $(notdir $<) $@ 10262306a36Sopenharmony_ci @echo ' Image $@ is ready' 10362306a36Sopenharmony_ci 10462306a36Sopenharmony_ci# 10562306a36Sopenharmony_ci# Flattened Image Tree (.itb) images 10662306a36Sopenharmony_ci# 10762306a36Sopenharmony_ci 10862306a36Sopenharmony_ciifeq ($(ADDR_BITS),32) 10962306a36Sopenharmony_ciitb_addr_cells = 1 11062306a36Sopenharmony_ciendif 11162306a36Sopenharmony_ciifeq ($(ADDR_BITS),64) 11262306a36Sopenharmony_ciitb_addr_cells = 2 11362306a36Sopenharmony_ciendif 11462306a36Sopenharmony_ci 11562306a36Sopenharmony_citargets += vmlinux.its.S 11662306a36Sopenharmony_ci 11762306a36Sopenharmony_ciquiet_cmd_its_cat = CAT $@ 11862306a36Sopenharmony_ci cmd_its_cat = cat $(real-prereqs) >$@ 11962306a36Sopenharmony_ci 12062306a36Sopenharmony_ci$(obj)/vmlinux.its.S: $(addprefix $(srctree)/arch/mips/$(PLATFORM)/,$(ITS_INPUTS)) FORCE 12162306a36Sopenharmony_ci $(call if_changed,its_cat) 12262306a36Sopenharmony_ci 12362306a36Sopenharmony_citargets += vmlinux.its 12462306a36Sopenharmony_citargets += vmlinux.gz.its 12562306a36Sopenharmony_citargets += vmlinux.bz2.its 12662306a36Sopenharmony_citargets += vmlinux.lzma.its 12762306a36Sopenharmony_citargets += vmlinux.lzo.its 12862306a36Sopenharmony_ci 12962306a36Sopenharmony_ciquiet_cmd_cpp_its_S = ITS $@ 13062306a36Sopenharmony_ci cmd_cpp_its_S = $(CPP) -P -C -o $@ $< \ 13162306a36Sopenharmony_ci -DKERNEL_NAME="\"Linux $(KERNELRELEASE)\"" \ 13262306a36Sopenharmony_ci -DVMLINUX_BINARY="\"$(3)\"" \ 13362306a36Sopenharmony_ci -DVMLINUX_COMPRESSION="\"$(2)\"" \ 13462306a36Sopenharmony_ci -DVMLINUX_LOAD_ADDRESS=$(VMLINUX_LOAD_ADDRESS) \ 13562306a36Sopenharmony_ci -DVMLINUX_ENTRY_ADDRESS=$(VMLINUX_ENTRY_ADDRESS) \ 13662306a36Sopenharmony_ci -DADDR_BITS=$(ADDR_BITS) \ 13762306a36Sopenharmony_ci -DADDR_CELLS=$(itb_addr_cells) 13862306a36Sopenharmony_ci 13962306a36Sopenharmony_ci$(obj)/vmlinux.its: $(obj)/vmlinux.its.S $(VMLINUX) FORCE 14062306a36Sopenharmony_ci $(call if_changed,cpp_its_S,none,vmlinux.bin) 14162306a36Sopenharmony_ci 14262306a36Sopenharmony_ci$(obj)/vmlinux.gz.its: $(obj)/vmlinux.its.S $(VMLINUX) FORCE 14362306a36Sopenharmony_ci $(call if_changed,cpp_its_S,gzip,vmlinux.bin.gz) 14462306a36Sopenharmony_ci 14562306a36Sopenharmony_ci$(obj)/vmlinux.bz2.its: $(obj)/vmlinux.its.S $(VMLINUX) FORCE 14662306a36Sopenharmony_ci $(call if_changed,cpp_its_S,bzip2,vmlinux.bin.bz2) 14762306a36Sopenharmony_ci 14862306a36Sopenharmony_ci$(obj)/vmlinux.lzma.its: $(obj)/vmlinux.its.S $(VMLINUX) FORCE 14962306a36Sopenharmony_ci $(call if_changed,cpp_its_S,lzma,vmlinux.bin.lzma) 15062306a36Sopenharmony_ci 15162306a36Sopenharmony_ci$(obj)/vmlinux.lzo.its: $(obj)/vmlinux.its.S $(VMLINUX) FORCE 15262306a36Sopenharmony_ci $(call if_changed,cpp_its_S,lzo,vmlinux.bin.lzo) 15362306a36Sopenharmony_ci 15462306a36Sopenharmony_citargets += vmlinux.itb 15562306a36Sopenharmony_citargets += vmlinux.gz.itb 15662306a36Sopenharmony_citargets += vmlinux.bz2.itb 15762306a36Sopenharmony_citargets += vmlinux.lzma.itb 15862306a36Sopenharmony_citargets += vmlinux.lzo.itb 15962306a36Sopenharmony_ci 16062306a36Sopenharmony_ciquiet_cmd_itb-image = ITB $@ 16162306a36Sopenharmony_ci cmd_itb-image = \ 16262306a36Sopenharmony_ci env PATH="$(objtree)/scripts/dtc:$(PATH)" \ 16362306a36Sopenharmony_ci $(BASH) $(MKIMAGE) \ 16462306a36Sopenharmony_ci -D "-I dts -O dtb -p 500 \ 16562306a36Sopenharmony_ci --include $(objtree)/arch/mips \ 16662306a36Sopenharmony_ci --warning no-unit_address_vs_reg" \ 16762306a36Sopenharmony_ci -f $(2) $@ 16862306a36Sopenharmony_ci 16962306a36Sopenharmony_ci$(obj)/vmlinux.itb: $(obj)/vmlinux.its $(obj)/vmlinux.bin FORCE 17062306a36Sopenharmony_ci $(call if_changed,itb-image,$<) 17162306a36Sopenharmony_ci 17262306a36Sopenharmony_ci$(obj)/vmlinux.%.itb: $(obj)/vmlinux.%.its $(obj)/vmlinux.bin.% FORCE 17362306a36Sopenharmony_ci $(call if_changed,itb-image,$<) 17462306a36Sopenharmony_ci 17562306a36Sopenharmony_ci# for cleaning 17662306a36Sopenharmony_cisubdir- += compressed tools 177