xref: /OK3568_Linux_fs/kernel/arch/mips/boot/Makefile (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#
2*4882a593Smuzhiyun# This file is subject to the terms and conditions of the GNU General Public
3*4882a593Smuzhiyun# License.  See the file "COPYING" in the main directory of this archive
4*4882a593Smuzhiyun# for more details.
5*4882a593Smuzhiyun#
6*4882a593Smuzhiyun# Copyright (C) 1995, 1998, 2001, 2002 by Ralf Baechle
7*4882a593Smuzhiyun# Copyright (C) 2004  Maciej W. Rozycki
8*4882a593Smuzhiyun#
9*4882a593Smuzhiyun
10*4882a593Smuzhiyun#
11*4882a593Smuzhiyun# Some DECstations need all possible sections of an ECOFF executable
12*4882a593Smuzhiyun#
13*4882a593Smuzhiyunifdef CONFIG_MACH_DECSTATION
14*4882a593Smuzhiyun  e2eflag := -a
15*4882a593Smuzhiyunendif
16*4882a593Smuzhiyun
17*4882a593Smuzhiyun#
18*4882a593Smuzhiyun# Drop some uninteresting sections in the kernel.
19*4882a593Smuzhiyun# This is only relevant for ELF kernels but doesn't hurt a.out
20*4882a593Smuzhiyun#
21*4882a593Smuzhiyundrop-sections := .reginfo .mdebug .comment .note .pdr .options .MIPS.options
22*4882a593Smuzhiyunstrip-flags   := $(addprefix --remove-section=,$(drop-sections))
23*4882a593Smuzhiyun
24*4882a593Smuzhiyunhostprogs := elf2ecoff
25*4882a593Smuzhiyun
26*4882a593Smuzhiyunsuffix-y			:= bin
27*4882a593Smuzhiyunsuffix-$(CONFIG_KERNEL_BZIP2)	:= bz2
28*4882a593Smuzhiyunsuffix-$(CONFIG_KERNEL_GZIP)	:= gz
29*4882a593Smuzhiyunsuffix-$(CONFIG_KERNEL_LZMA)	:= lzma
30*4882a593Smuzhiyunsuffix-$(CONFIG_KERNEL_LZO)	:= lzo
31*4882a593Smuzhiyun
32*4882a593Smuzhiyuntargets := vmlinux.ecoff
33*4882a593Smuzhiyunquiet_cmd_ecoff = ECOFF	  $@
34*4882a593Smuzhiyun      cmd_ecoff = $(obj)/elf2ecoff $(VMLINUX) $@ $(e2eflag)
35*4882a593Smuzhiyun$(obj)/vmlinux.ecoff: $(obj)/elf2ecoff $(VMLINUX) FORCE
36*4882a593Smuzhiyun	$(call if_changed,ecoff)
37*4882a593Smuzhiyun
38*4882a593Smuzhiyuntargets += vmlinux.bin
39*4882a593Smuzhiyunquiet_cmd_bin = OBJCOPY $@
40*4882a593Smuzhiyun      cmd_bin = $(OBJCOPY) -O binary $(strip-flags) $(VMLINUX) $@
41*4882a593Smuzhiyun$(obj)/vmlinux.bin: $(VMLINUX) FORCE
42*4882a593Smuzhiyun	$(call if_changed,bin)
43*4882a593Smuzhiyun
44*4882a593Smuzhiyuntargets += vmlinux.srec
45*4882a593Smuzhiyunquiet_cmd_srec = OBJCOPY $@
46*4882a593Smuzhiyun      cmd_srec = $(OBJCOPY) -S -O srec $(strip-flags) $(VMLINUX) $@
47*4882a593Smuzhiyun$(obj)/vmlinux.srec: $(VMLINUX) FORCE
48*4882a593Smuzhiyun	$(call if_changed,srec)
49*4882a593Smuzhiyun
50*4882a593SmuzhiyunUIMAGE_LOADADDR  = $(VMLINUX_LOAD_ADDRESS)
51*4882a593SmuzhiyunUIMAGE_ENTRYADDR = $(VMLINUX_ENTRY_ADDRESS)
52*4882a593Smuzhiyun
53*4882a593Smuzhiyun#
54*4882a593Smuzhiyun# Compressed vmlinux images
55*4882a593Smuzhiyun#
56*4882a593Smuzhiyun
57*4882a593Smuzhiyunextra-y += vmlinux.bin.bz2
58*4882a593Smuzhiyunextra-y += vmlinux.bin.gz
59*4882a593Smuzhiyunextra-y += vmlinux.bin.lzma
60*4882a593Smuzhiyunextra-y += vmlinux.bin.lzo
61*4882a593Smuzhiyun
62*4882a593Smuzhiyun$(obj)/vmlinux.bin.bz2: $(obj)/vmlinux.bin FORCE
63*4882a593Smuzhiyun	$(call if_changed,bzip2)
64*4882a593Smuzhiyun
65*4882a593Smuzhiyun$(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin FORCE
66*4882a593Smuzhiyun	$(call if_changed,gzip)
67*4882a593Smuzhiyun
68*4882a593Smuzhiyun$(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin FORCE
69*4882a593Smuzhiyun	$(call if_changed,lzma)
70*4882a593Smuzhiyun
71*4882a593Smuzhiyun$(obj)/vmlinux.bin.lzo: $(obj)/vmlinux.bin FORCE
72*4882a593Smuzhiyun	$(call if_changed,lzo)
73*4882a593Smuzhiyun
74*4882a593Smuzhiyun#
75*4882a593Smuzhiyun# Compressed u-boot images
76*4882a593Smuzhiyun#
77*4882a593Smuzhiyun
78*4882a593Smuzhiyuntargets += uImage
79*4882a593Smuzhiyuntargets += uImage.bin
80*4882a593Smuzhiyuntargets += uImage.bz2
81*4882a593Smuzhiyuntargets += uImage.gz
82*4882a593Smuzhiyuntargets += uImage.lzma
83*4882a593Smuzhiyuntargets += uImage.lzo
84*4882a593Smuzhiyun
85*4882a593Smuzhiyun$(obj)/uImage.bin: $(obj)/vmlinux.bin FORCE
86*4882a593Smuzhiyun	$(call if_changed,uimage,none)
87*4882a593Smuzhiyun
88*4882a593Smuzhiyun$(obj)/uImage.bz2: $(obj)/vmlinux.bin.bz2 FORCE
89*4882a593Smuzhiyun	$(call if_changed,uimage,bzip2)
90*4882a593Smuzhiyun
91*4882a593Smuzhiyun$(obj)/uImage.gz: $(obj)/vmlinux.bin.gz FORCE
92*4882a593Smuzhiyun	$(call if_changed,uimage,gzip)
93*4882a593Smuzhiyun
94*4882a593Smuzhiyun$(obj)/uImage.lzma: $(obj)/vmlinux.bin.lzma FORCE
95*4882a593Smuzhiyun	$(call if_changed,uimage,lzma)
96*4882a593Smuzhiyun
97*4882a593Smuzhiyun$(obj)/uImage.lzo: $(obj)/vmlinux.bin.lzo FORCE
98*4882a593Smuzhiyun	$(call if_changed,uimage,lzo)
99*4882a593Smuzhiyun
100*4882a593Smuzhiyun$(obj)/uImage: $(obj)/uImage.$(suffix-y)
101*4882a593Smuzhiyun	@ln -sf $(notdir $<) $@
102*4882a593Smuzhiyun	@echo '  Image $@ is ready'
103*4882a593Smuzhiyun
104*4882a593Smuzhiyun#
105*4882a593Smuzhiyun# Flattened Image Tree (.itb) images
106*4882a593Smuzhiyun#
107*4882a593Smuzhiyun
108*4882a593Smuzhiyunifeq ($(ADDR_BITS),32)
109*4882a593Smuzhiyunitb_addr_cells = 1
110*4882a593Smuzhiyunendif
111*4882a593Smuzhiyunifeq ($(ADDR_BITS),64)
112*4882a593Smuzhiyunitb_addr_cells = 2
113*4882a593Smuzhiyunendif
114*4882a593Smuzhiyun
115*4882a593Smuzhiyuntargets += vmlinux.its.S
116*4882a593Smuzhiyun
117*4882a593Smuzhiyunquiet_cmd_its_cat = CAT     $@
118*4882a593Smuzhiyun      cmd_its_cat = cat $(real-prereqs) >$@
119*4882a593Smuzhiyun
120*4882a593Smuzhiyun$(obj)/vmlinux.its.S: $(addprefix $(srctree)/arch/mips/$(PLATFORM)/,$(ITS_INPUTS)) FORCE
121*4882a593Smuzhiyun	$(call if_changed,its_cat)
122*4882a593Smuzhiyun
123*4882a593Smuzhiyuntargets += vmlinux.its
124*4882a593Smuzhiyuntargets += vmlinux.gz.its
125*4882a593Smuzhiyuntargets += vmlinux.bz2.its
126*4882a593Smuzhiyuntargets += vmlinux.lzma.its
127*4882a593Smuzhiyuntargets += vmlinux.lzo.its
128*4882a593Smuzhiyun
129*4882a593Smuzhiyunquiet_cmd_cpp_its_S = ITS     $@
130*4882a593Smuzhiyun      cmd_cpp_its_S = $(CPP) -P -C -o $@ $< \
131*4882a593Smuzhiyun		        -DKERNEL_NAME="\"Linux $(KERNELRELEASE)\"" \
132*4882a593Smuzhiyun			-DVMLINUX_BINARY="\"$(3)\"" \
133*4882a593Smuzhiyun			-DVMLINUX_COMPRESSION="\"$(2)\"" \
134*4882a593Smuzhiyun			-DVMLINUX_LOAD_ADDRESS=$(VMLINUX_LOAD_ADDRESS) \
135*4882a593Smuzhiyun			-DVMLINUX_ENTRY_ADDRESS=$(VMLINUX_ENTRY_ADDRESS) \
136*4882a593Smuzhiyun			-DADDR_BITS=$(ADDR_BITS) \
137*4882a593Smuzhiyun			-DADDR_CELLS=$(itb_addr_cells)
138*4882a593Smuzhiyun
139*4882a593Smuzhiyun$(obj)/vmlinux.its: $(obj)/vmlinux.its.S $(VMLINUX) FORCE
140*4882a593Smuzhiyun	$(call if_changed,cpp_its_S,none,vmlinux.bin)
141*4882a593Smuzhiyun
142*4882a593Smuzhiyun$(obj)/vmlinux.gz.its: $(obj)/vmlinux.its.S $(VMLINUX) FORCE
143*4882a593Smuzhiyun	$(call if_changed,cpp_its_S,gzip,vmlinux.bin.gz)
144*4882a593Smuzhiyun
145*4882a593Smuzhiyun$(obj)/vmlinux.bz2.its: $(obj)/vmlinux.its.S $(VMLINUX)  FORCE
146*4882a593Smuzhiyun	$(call if_changed,cpp_its_S,bzip2,vmlinux.bin.bz2)
147*4882a593Smuzhiyun
148*4882a593Smuzhiyun$(obj)/vmlinux.lzma.its: $(obj)/vmlinux.its.S $(VMLINUX) FORCE
149*4882a593Smuzhiyun	$(call if_changed,cpp_its_S,lzma,vmlinux.bin.lzma)
150*4882a593Smuzhiyun
151*4882a593Smuzhiyun$(obj)/vmlinux.lzo.its: $(obj)/vmlinux.its.S $(VMLINUX) FORCE
152*4882a593Smuzhiyun	$(call if_changed,cpp_its_S,lzo,vmlinux.bin.lzo)
153*4882a593Smuzhiyun
154*4882a593Smuzhiyuntargets += vmlinux.itb
155*4882a593Smuzhiyuntargets += vmlinux.gz.itb
156*4882a593Smuzhiyuntargets += vmlinux.bz2.itb
157*4882a593Smuzhiyuntargets += vmlinux.lzma.itb
158*4882a593Smuzhiyuntargets += vmlinux.lzo.itb
159*4882a593Smuzhiyun
160*4882a593Smuzhiyunquiet_cmd_itb-image = ITB     $@
161*4882a593Smuzhiyun      cmd_itb-image = \
162*4882a593Smuzhiyun		env PATH="$(objtree)/scripts/dtc:$(PATH)" \
163*4882a593Smuzhiyun		$(BASH) $(MKIMAGE) \
164*4882a593Smuzhiyun		-D "-I dts -O dtb -p 500 \
165*4882a593Smuzhiyun			--include $(objtree)/arch/mips \
166*4882a593Smuzhiyun			--warning no-unit_address_vs_reg" \
167*4882a593Smuzhiyun		-f $(2) $@
168*4882a593Smuzhiyun
169*4882a593Smuzhiyun$(obj)/vmlinux.itb: $(obj)/vmlinux.its $(obj)/vmlinux.bin FORCE
170*4882a593Smuzhiyun	$(call if_changed,itb-image,$<)
171*4882a593Smuzhiyun
172*4882a593Smuzhiyun$(obj)/vmlinux.%.itb: $(obj)/vmlinux.%.its $(obj)/vmlinux.bin.% FORCE
173*4882a593Smuzhiyun	$(call if_changed,itb-image,$<)
174