xref: /OK3568_Linux_fs/kernel/arch/arm/boot/Makefile (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#
2*4882a593Smuzhiyun# arch/arm/boot/Makefile
3*4882a593Smuzhiyun#
4*4882a593Smuzhiyun# This file is included by the global makefile so that you can add your own
5*4882a593Smuzhiyun# architecture-specific flags and dependencies.
6*4882a593Smuzhiyun#
7*4882a593Smuzhiyun# This file is subject to the terms and conditions of the GNU General Public
8*4882a593Smuzhiyun# License.  See the file "COPYING" in the main directory of this archive
9*4882a593Smuzhiyun# for more details.
10*4882a593Smuzhiyun#
11*4882a593Smuzhiyun# Copyright (C) 1995-2002 Russell King
12*4882a593Smuzhiyun#
13*4882a593Smuzhiyun
14*4882a593SmuzhiyunOBJCOPYFLAGS	:=-O binary -R .comment -S
15*4882a593Smuzhiyun
16*4882a593Smuzhiyunifneq ($(MACHINE),)
17*4882a593Smuzhiyuninclude $(MACHINE)/Makefile.boot
18*4882a593Smuzhiyunendif
19*4882a593Smuzhiyun
20*4882a593Smuzhiyun# Note: the following conditions must always be true:
21*4882a593Smuzhiyun#   ZRELADDR == virt_to_phys(PAGE_OFFSET + TEXT_OFFSET)
22*4882a593Smuzhiyun#   PARAMS_PHYS must be within 4MB of ZRELADDR
23*4882a593Smuzhiyun#   INITRD_PHYS must be in RAM
24*4882a593SmuzhiyunZRELADDR    := $(zreladdr-y)
25*4882a593SmuzhiyunPARAMS_PHYS := $(params_phys-y)
26*4882a593SmuzhiyunINITRD_PHYS := $(initrd_phys-y)
27*4882a593Smuzhiyun
28*4882a593Smuzhiyunexport ZRELADDR INITRD_PHYS PARAMS_PHYS
29*4882a593Smuzhiyun
30*4882a593Smuzhiyuntargets := Image zImage xipImage bootpImage uImage
31*4882a593Smuzhiyun
32*4882a593Smuzhiyunifeq ($(CONFIG_XIP_KERNEL),y)
33*4882a593Smuzhiyun
34*4882a593Smuzhiyuncmd_deflate_xip_data = $(CONFIG_SHELL) -c \
35*4882a593Smuzhiyun	'$(srctree)/$(src)/deflate_xip_data.sh $< $@'
36*4882a593Smuzhiyun
37*4882a593Smuzhiyunifeq ($(CONFIG_XIP_DEFLATED_DATA),y)
38*4882a593Smuzhiyunquiet_cmd_mkxip = XIPZ    $@
39*4882a593Smuzhiyuncmd_mkxip = $(cmd_objcopy) && $(cmd_deflate_xip_data)
40*4882a593Smuzhiyunelse
41*4882a593Smuzhiyunquiet_cmd_mkxip = $(quiet_cmd_objcopy)
42*4882a593Smuzhiyuncmd_mkxip = $(cmd_objcopy)
43*4882a593Smuzhiyunendif
44*4882a593Smuzhiyun
45*4882a593Smuzhiyun$(obj)/xipImage: vmlinux FORCE
46*4882a593Smuzhiyun	$(call if_changed,mkxip)
47*4882a593Smuzhiyun	@$(kecho) '  Physical Address of xipImage: $(CONFIG_XIP_PHYS_ADDR)'
48*4882a593Smuzhiyun
49*4882a593Smuzhiyun$(obj)/Image $(obj)/zImage: FORCE
50*4882a593Smuzhiyun	@echo 'Kernel configured for XIP (CONFIG_XIP_KERNEL=y)'
51*4882a593Smuzhiyun	@echo 'Only the xipImage target is available in this case'
52*4882a593Smuzhiyun	@false
53*4882a593Smuzhiyun
54*4882a593Smuzhiyunelse
55*4882a593Smuzhiyun
56*4882a593Smuzhiyun$(obj)/xipImage: FORCE
57*4882a593Smuzhiyun	@echo 'Kernel not configured for XIP (CONFIG_XIP_KERNEL!=y)'
58*4882a593Smuzhiyun	@false
59*4882a593Smuzhiyun
60*4882a593Smuzhiyun$(obj)/Image: vmlinux FORCE
61*4882a593Smuzhiyun	$(call if_changed,objcopy)
62*4882a593Smuzhiyun
63*4882a593Smuzhiyuntargets += Image.gz Image.lz4
64*4882a593Smuzhiyun$(obj)/Image.gz: $(obj)/Image FORCE
65*4882a593Smuzhiyun	$(call if_changed,gzip)
66*4882a593Smuzhiyun
67*4882a593Smuzhiyun$(obj)/Image.lz4: $(obj)/Image FORCE
68*4882a593Smuzhiyun	$(call if_changed,lz4c)
69*4882a593Smuzhiyun
70*4882a593Smuzhiyun$(obj)/compressed/vmlinux: $(obj)/Image FORCE
71*4882a593Smuzhiyun	$(Q)$(MAKE) $(build)=$(obj)/compressed $@
72*4882a593Smuzhiyun
73*4882a593Smuzhiyun$(obj)/zImage:	$(obj)/compressed/vmlinux FORCE
74*4882a593Smuzhiyun	$(call if_changed,objcopy)
75*4882a593Smuzhiyun
76*4882a593Smuzhiyunendif
77*4882a593Smuzhiyun
78*4882a593Smuzhiyunifneq ($(LOADADDR),)
79*4882a593Smuzhiyun  UIMAGE_LOADADDR=$(LOADADDR)
80*4882a593Smuzhiyunelse
81*4882a593Smuzhiyun  ifeq ($(CONFIG_ZBOOT_ROM),y)
82*4882a593Smuzhiyun    UIMAGE_LOADADDR=$(CONFIG_ZBOOT_ROM_TEXT)
83*4882a593Smuzhiyun  else
84*4882a593Smuzhiyun    UIMAGE_LOADADDR=$(ZRELADDR)
85*4882a593Smuzhiyun  endif
86*4882a593Smuzhiyunendif
87*4882a593Smuzhiyun
88*4882a593Smuzhiyuncheck_for_multiple_loadaddr = \
89*4882a593Smuzhiyunif [ $(words $(UIMAGE_LOADADDR)) -ne 1 ]; then \
90*4882a593Smuzhiyun	echo 'multiple (or no) load addresses: $(UIMAGE_LOADADDR)'; \
91*4882a593Smuzhiyun	echo 'This is incompatible with uImages'; \
92*4882a593Smuzhiyun	echo 'Specify LOADADDR on the commandline to build an uImage'; \
93*4882a593Smuzhiyun	false; \
94*4882a593Smuzhiyunfi
95*4882a593Smuzhiyun
96*4882a593Smuzhiyun$(obj)/uImage:	$(obj)/zImage FORCE
97*4882a593Smuzhiyun	@$(check_for_multiple_loadaddr)
98*4882a593Smuzhiyun	$(call if_changed,uimage)
99*4882a593Smuzhiyun
100*4882a593Smuzhiyun$(obj)/bootp/bootp: $(obj)/zImage initrd FORCE
101*4882a593Smuzhiyun	$(Q)$(MAKE) $(build)=$(obj)/bootp $@
102*4882a593Smuzhiyun
103*4882a593Smuzhiyun$(obj)/bootpImage: $(obj)/bootp/bootp FORCE
104*4882a593Smuzhiyun	$(call if_changed,objcopy)
105*4882a593Smuzhiyun
106*4882a593SmuzhiyunPHONY += initrd install zinstall uinstall
107*4882a593Smuzhiyuninitrd:
108*4882a593Smuzhiyun	@test "$(INITRD_PHYS)" != "" || \
109*4882a593Smuzhiyun	(echo This machine does not support INITRD; exit -1)
110*4882a593Smuzhiyun	@test "$(INITRD)" != "" || \
111*4882a593Smuzhiyun	(echo You must specify INITRD; exit -1)
112*4882a593Smuzhiyun
113*4882a593Smuzhiyuninstall:
114*4882a593Smuzhiyun	$(CONFIG_SHELL) $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" \
115*4882a593Smuzhiyun	$(obj)/Image System.map "$(INSTALL_PATH)"
116*4882a593Smuzhiyun
117*4882a593Smuzhiyunzinstall:
118*4882a593Smuzhiyun	$(CONFIG_SHELL) $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" \
119*4882a593Smuzhiyun	$(obj)/zImage System.map "$(INSTALL_PATH)"
120*4882a593Smuzhiyun
121*4882a593Smuzhiyunuinstall:
122*4882a593Smuzhiyun	$(CONFIG_SHELL) $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" \
123*4882a593Smuzhiyun	$(obj)/uImage System.map "$(INSTALL_PATH)"
124*4882a593Smuzhiyun
125*4882a593Smuzhiyunsubdir-	    := bootp compressed dts
126