Makefile 18.5 KB
Newer Older
L
Linus Torvalds 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13
# Makefile for making ELF bootable images for booting on CHRP
# using Open Firmware.
#
# Geert Uytterhoeven	September 1997
#
# Based on coffboot by Paul Mackerras
# Simplified for ppc64 by Todd Inglett
#
# NOTE:	this code is built for 32 bit in ELF32 format even though
#	it packages a 64 bit kernel.  We do this to simplify the
#	bootloader and increase compatibility with OpenFirmware.
#
#	To this end we need to define BOOTCC, etc, as the tools
14 15
#	needed to build the 32 bit image.  That's normally the same
#	compiler for the rest of the kernel, with the -m32 flag added.
L
Linus Torvalds 已提交
16 17 18 19
#	To make it easier to setup a cross compiler,
#	CROSS32_COMPILE is setup as a prefix just like CROSS_COMPILE
#	in the toplevel makefile.

20
all: $(obj)/zImage
L
Linus Torvalds 已提交
21

22
compress-$(CONFIG_KERNEL_GZIP) := CONFIG_KERNEL_GZIP
23
compress-$(CONFIG_KERNEL_XZ)   := CONFIG_KERNEL_XZ
24

25
BOOTCFLAGS    := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
26
		 -fno-strict-aliasing -Os -msoft-float -pipe \
27
		 -fomit-frame-pointer -fno-builtin -fPIC -nostdinc \
28 29 30
		 -isystem $(shell $(CROSS32CC) -print-file-name=include) \
		 -D$(compress-y)

31 32 33 34 35
ifdef CONFIG_PPC64_BOOT_WRAPPER
BOOTCFLAGS	+= -m64
endif
ifdef CONFIG_CPU_BIG_ENDIAN
BOOTCFLAGS	+= -mbig-endian
36 37 38
else
BOOTCFLAGS	+= -mlittle-endian
BOOTCFLAGS	+= $(call cc-option,-mabi=elfv2)
39 40
endif

41
BOOTAFLAGS	:= -D__ASSEMBLY__ $(BOOTCFLAGS) -traditional -nostdinc
42

43 44 45 46
ifdef CONFIG_DEBUG_INFO
BOOTCFLAGS	+= -g
endif

47 48 49 50
ifeq ($(call cc-option-yn, -fstack-protector),y)
BOOTCFLAGS	+= -fno-stack-protector
endif

51
BOOTCFLAGS	+= -I$(objtree)/$(obj) -I$(srctree)/$(obj)
L
Linus Torvalds 已提交
52

53
DTC_FLAGS	?= -p 1024
54

55 56
$(obj)/4xx.o: BOOTCFLAGS += -mcpu=405
$(obj)/ebony.o: BOOTCFLAGS += -mcpu=405
57
$(obj)/cuboot-hotfoot.o: BOOTCFLAGS += -mcpu=405
58 59
$(obj)/cuboot-taishan.o: BOOTCFLAGS += -mcpu=405
$(obj)/cuboot-katmai.o: BOOTCFLAGS += -mcpu=405
60
$(obj)/cuboot-acadia.o: BOOTCFLAGS += -mcpu=405
61
$(obj)/treeboot-walnut.o: BOOTCFLAGS += -mcpu=405
62
$(obj)/treeboot-iss4xx.o: BOOTCFLAGS += -mcpu=405
63
$(obj)/treeboot-currituck.o: BOOTCFLAGS += -mcpu=405
64
$(obj)/treeboot-akebono.o: BOOTCFLAGS += -mcpu=405
65
$(obj)/virtex405-head.o: BOOTAFLAGS += -mcpu=405
66

67 68 69 70 71 72 73 74 75
# The pre-boot decompressors pull in a lot of kernel headers and other source
# files. This creates a bit of a dependency headache since we need to copy
# these files into the build dir, fix up any includes and ensure that dependent
# files are copied in the right order.

# these need to be seperate variables because they are copied out of different
# directories in the kernel tree. Sure you COULd merge them, but it's a
# cure-is-worse-than-disease situation.
zlib-decomp-$(CONFIG_KERNEL_GZIP) := decompress_inflate.c
76 77 78
zlib-$(CONFIG_KERNEL_GZIP) := inffast.c inflate.c inftrees.c
zlibheader-$(CONFIG_KERNEL_GZIP) := inffast.h inffixed.h inflate.h inftrees.h infutil.h
zliblinuxheader-$(CONFIG_KERNEL_GZIP) := zlib.h zconf.h zutil.h
79

80 81 82 83 84 85 86 87 88
$(addprefix $(obj)/, decompress.o): \
	$(addprefix $(obj)/,$(zlib-decomp-y))

$(addprefix $(obj)/, $(zlib-decomp-y)): \
	$(addprefix $(obj)/,$(zliblinuxheader-y)) \
	$(addprefix $(obj)/,$(zlibheader-y)) \
	$(addprefix $(obj)/,$(zlib-y))

$(addprefix $(obj)/,$(zlib-y)): \
89 90
	$(addprefix $(obj)/,$(zliblinuxheader-y)) \
	$(addprefix $(obj)/,$(zlibheader-y))
91

92 93 94
libfdt       := fdt.c fdt_ro.c fdt_wip.c fdt_sw.c fdt_rw.c fdt_strerror.c
libfdtheader := fdt.h libfdt.h libfdt_internal.h

95
$(addprefix $(obj)/,$(libfdt) libfdt-wrapper.o simpleboot.o epapr.o opal.o): \
96 97
	$(addprefix $(obj)/,$(libfdtheader))

98
src-wlib-y := string.S crt0.S stdio.c decompress.c main.c \
99
		$(libfdt) libfdt-wrapper.c \
100
		ns16550.c serial.c simple_alloc.c div64.S util.S \
101
		elf_util.c $(zlib-y) devtree.c stdlib.c \
102
		oflib.c ofconsole.c cuboot.c mpsc.c cpm-serial.c \
103 104
		uartlite.c mpc52xx-psc.c opal.c
src-wlib-$(CONFIG_PPC64_BOOT_WRAPPER) +=  opal-calls.S
105 106 107
ifndef CONFIG_PPC64_BOOT_WRAPPER
src-wlib-y += crtsavres.S
endif
108 109
src-wlib-$(CONFIG_40x) += 4xx.c planetcore.c
src-wlib-$(CONFIG_44x) += 4xx.c ebony.c bamboo.c
110
src-wlib-$(CONFIG_8xx) += mpc8xx.c planetcore.c fsl-soc.c
111
src-wlib-$(CONFIG_PPC_82xx) += pq2.c fsl-soc.c planetcore.c
112
src-wlib-$(CONFIG_EMBEDDED6xx) += mv64x60.c mv64x60_i2c.c ugecon.c fsl-soc.c
113

114
src-plat-y := of.c epapr.c
115 116 117 118 119 120 121 122 123 124
src-plat-$(CONFIG_40x) += fixed-head.S ep405.c cuboot-hotfoot.c \
				treeboot-walnut.c cuboot-acadia.c \
				cuboot-kilauea.c simpleboot.c \
				virtex405-head.S virtex.c
src-plat-$(CONFIG_44x) += treeboot-ebony.c cuboot-ebony.c treeboot-bamboo.c \
				cuboot-bamboo.c cuboot-sam440ep.c \
				cuboot-sequoia.c cuboot-rainier.c \
				cuboot-taishan.c cuboot-katmai.c \
				cuboot-warp.c cuboot-yosemite.c \
				treeboot-iss4xx.c treeboot-currituck.c \
125
				treeboot-akebono.c \
126 127 128 129 130 131 132 133 134
				simpleboot.c fixed-head.S virtex.c
src-plat-$(CONFIG_8xx) += cuboot-8xx.c fixed-head.S ep88xc.c redboot-8xx.c
src-plat-$(CONFIG_PPC_MPC52xx) += cuboot-52xx.c
src-plat-$(CONFIG_PPC_82xx) += cuboot-pq2.c fixed-head.S ep8248e.c cuboot-824x.c
src-plat-$(CONFIG_PPC_83xx) += cuboot-83xx.c fixed-head.S redboot-83xx.c
src-plat-$(CONFIG_FSL_SOC_BOOKE) += cuboot-85xx.c cuboot-85xx-cpm2.c
src-plat-$(CONFIG_EMBEDDED6xx) += cuboot-pq2.c cuboot-mpc7448hpc2.c \
					cuboot-c2k.c gamecube-head.S \
					gamecube.c wii-head.S wii.c holly.c \
135
					fixed-head.S mvme5100.c
136 137
src-plat-$(CONFIG_AMIGAONE) += cuboot-amigaone.c
src-plat-$(CONFIG_PPC_PS3) += ps3-head.S ps3-hvcall.S ps3.c
138
src-plat-$(CONFIG_EPAPR_BOOT) += epapr.c epapr-wrapper.c
139 140 141
src-plat-$(CONFIG_PPC_PSERIES) += pseries-head.S
src-plat-$(CONFIG_PPC_POWERNV) += pseries-head.S
src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
142
src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
143 144 145

src-wlib := $(sort $(src-wlib-y))
src-plat := $(sort $(src-plat-y))
146
src-boot := $(src-wlib) $(src-plat) empty.c
O
Olaf Hering 已提交
147

L
Linus Torvalds 已提交
148 149
src-boot := $(addprefix $(obj)/, $(src-boot))
obj-boot := $(addsuffix .o, $(basename $(src-boot)))
150 151
obj-wlib := $(addsuffix .o, $(basename $(addprefix $(obj)/, $(src-wlib))))
obj-plat := $(addsuffix .o, $(basename $(addprefix $(obj)/, $(src-plat))))
152
obj-plat: $(libfdt)
O
Olaf Hering 已提交
153

O
Oliver O'Halloran 已提交
154 155
quiet_cmd_copy_kern_src = COPY    $@
      cmd_copy_kern_src = sed -f $(srctree)/arch/powerpc/boot/fixup-headers.sed $< > $@
O
Olaf Hering 已提交
156

157
$(addprefix $(obj)/,$(zlib-y)): $(obj)/%: $(srctree)/lib/zlib_inflate/%
O
Oliver O'Halloran 已提交
158
	$(call cmd,copy_kern_src)
O
Olaf Hering 已提交
159

160
$(addprefix $(obj)/,$(zlibheader-y)): $(obj)/%: $(srctree)/lib/zlib_inflate/%
O
Oliver O'Halloran 已提交
161
	$(call cmd,copy_kern_src)
O
Olaf Hering 已提交
162

163
$(addprefix $(obj)/,$(zliblinuxheader-y)): $(obj)/%: $(srctree)/include/linux/%
O
Oliver O'Halloran 已提交
164
	$(call cmd,copy_kern_src)
O
Olaf Hering 已提交
165

166 167 168
$(addprefix $(obj)/,$(zlib-decomp-y)): $(obj)/%: $(srctree)/lib/%
	$(call cmd,copy_kern_src)

169 170 171 172 173 174
quiet_cmd_copy_libfdt = COPY    $@
      cmd_copy_libfdt = cp $< $@

$(addprefix $(obj)/,$(libfdt) $(libfdtheader)): $(obj)/%: $(srctree)/scripts/dtc/libfdt/%
	$(call cmd,copy_libfdt)

175
$(obj)/empty.c:
176
	$(Q)touch $@
177

178
$(obj)/zImage.coff.lds $(obj)/zImage.ps3.lds : $(obj)/%: $(srctree)/$(src)/%.S
179
	$(Q)cp $< $@
O
Olaf Hering 已提交
180

181
clean-files := $(zlib-) $(zlibheader-) $(zliblinuxheader-) \
182
		$(zlib-decomp-) $(libfdt) $(libfdtheader) \
183
		empty.c zImage.coff.lds zImage.ps3.lds zImage.lds
O
Olaf Hering 已提交
184

L
Linus Torvalds 已提交
185 186 187 188 189 190
quiet_cmd_bootcc = BOOTCC  $@
      cmd_bootcc = $(CROSS32CC) -Wp,-MD,$(depfile) $(BOOTCFLAGS) -c -o $@ $<

quiet_cmd_bootas = BOOTAS  $@
      cmd_bootas = $(CROSS32CC) -Wp,-MD,$(depfile) $(BOOTAFLAGS) -c -o $@ $<

191
quiet_cmd_bootar = BOOTAR  $@
192
      cmd_bootar = $(CROSS32AR) -cr$(KBUILD_ARFLAGS) $@.$$$$ $(filter-out FORCE,$^); mv $@.$$$$ $@
G
Geoff Levand 已提交
193

194 195
$(obj-libfdt): $(obj)/%.o: $(srctree)/scripts/dtc/libfdt/%.c FORCE
	$(call if_changed_dep,bootcc)
M
Milton Miller 已提交
196
$(patsubst %.c,%.o, $(filter %.c, $(src-boot))): %.o: %.c FORCE
197
	$(Q)mkdir -p $(dir $@)
L
Linus Torvalds 已提交
198
	$(call if_changed_dep,bootcc)
M
Milton Miller 已提交
199
$(patsubst %.S,%.o, $(filter %.S, $(src-boot))): %.o: %.S FORCE
200
	$(Q)mkdir -p $(dir $@)
L
Linus Torvalds 已提交
201 202
	$(call if_changed_dep,bootas)

M
Milton Miller 已提交
203 204
$(obj)/wrapper.a: $(obj-wlib) FORCE
	$(call if_changed,bootar)
L
Linus Torvalds 已提交
205

206
hostprogs-y	:= addnote hack-coff mktree
L
Linus Torvalds 已提交
207

M
Milton Miller 已提交
208
targets		+= $(patsubst $(obj)/%,%,$(obj-boot) wrapper.a)
209
extra-y		:= $(obj)/wrapper.a $(obj-plat) $(obj)/empty.o \
210
		   $(obj)/zImage.lds $(obj)/zImage.coff.lds $(obj)/zImage.ps3.lds
211

212 213
dtstree		:= $(srctree)/$(src)/dts

214
wrapper		:=$(srctree)/$(src)/wrapper
215
wrapperbits	:= $(extra-y) $(addprefix $(obj)/,addnote hack-coff mktree) \
M
Milton Miller 已提交
216
			$(wrapper) FORCE
L
Linus Torvalds 已提交
217

218 219
#############
# Bits for building various flavours of zImage
L
Linus Torvalds 已提交
220

221
ifneq ($(CROSS32_COMPILE),)
222
CROSSWRAP := -C "$(CROSS32_COMPILE)"
223 224
else
ifneq ($(CROSS_COMPILE),)
225
CROSSWRAP := -C "$(CROSS_COMPILE)"
226 227
endif
endif
L
Linus Torvalds 已提交
228

229
compressor-$(CONFIG_KERNEL_GZIP) := gz
230
compressor-$(CONFIG_KERNEL_XZ)   := xz
231

232
# args (to if_changed): 1 = (this rule), 2 = platform, 3 = dts 4=dtb 5=initrd
233
quiet_cmd_wrap	= WRAP    $@
234 235 236
      cmd_wrap	=$(CONFIG_SHELL) $(wrapper) -Z $(compressor-y) -c -o $@ -p $2 \
		$(CROSSWRAP) $(if $3, -s $3)$(if $4, -d $4)$(if $5, -i $5) \
		vmlinux
237

238
image-$(CONFIG_PPC_PSERIES)		+= zImage.pseries
239
image-$(CONFIG_PPC_POWERNV)		+= zImage.pseries
240
image-$(CONFIG_PPC_MAPLE)		+= zImage.maple
241
image-$(CONFIG_PPC_IBM_CELL_BLADE)	+= zImage.pseries
242
image-$(CONFIG_PPC_PS3)			+= dtbImage.ps3
243
image-$(CONFIG_PPC_CHRP)		+= zImage.chrp
244
image-$(CONFIG_PPC_EFIKA)		+= zImage.chrp
245
image-$(CONFIG_PPC_PMAC)		+= zImage.pmac
246
image-$(CONFIG_PPC_HOLLY)		+= dtbImage.holly
247
image-$(CONFIG_DEFAULT_UIMAGE)		+= uImage
248
image-$(CONFIG_EPAPR_BOOT)		+= zImage.epapr
249

250 251 252 253 254
#
# Targets which embed a device tree blob
#
# Theses are default targets to build images which embed device tree blobs.
# They are only required on boards which do not have FDT support in firmware.
255
# Boards with newish u-boot firmware can use the uImage target above
256 257 258
#

# Board ports in arch/powerpc/platform/40x/Kconfig
259
image-$(CONFIG_EP405)			+= dtbImage.ep405
260
image-$(CONFIG_HOTFOOT)			+= cuImage.hotfoot
261
image-$(CONFIG_WALNUT)			+= treeImage.walnut
262
image-$(CONFIG_ACADIA)			+= cuImage.acadia
263
image-$(CONFIG_OBS600)			+= uImage.obs600
264 265

# Board ports in arch/powerpc/platform/44x/Kconfig
266
image-$(CONFIG_EBONY)			+= treeImage.ebony cuImage.ebony
J
Josh Boyer 已提交
267
image-$(CONFIG_BAMBOO)			+= treeImage.bamboo cuImage.bamboo
268
image-$(CONFIG_SAM440EP)		+= cuImage.sam440ep
269
image-$(CONFIG_SEQUOIA)			+= cuImage.sequoia
270
image-$(CONFIG_RAINIER)			+= cuImage.rainier
271
image-$(CONFIG_TAISHAN)			+= cuImage.taishan
272
image-$(CONFIG_KATMAI)			+= cuImage.katmai
273
image-$(CONFIG_WARP)			+= cuImage.warp
274
image-$(CONFIG_YOSEMITE)		+= cuImage.yosemite
275 276
image-$(CONFIG_ISS4xx)			+= treeImage.iss4xx \
					   treeImage.iss4xx-mpic
277
image-$(CONFIG_CURRITUCK)			+= treeImage.currituck
278
image-$(CONFIG_AKEBONO)			+= treeImage.akebono
279

280
# Board ports in arch/powerpc/platform/8xx/Kconfig
281 282
image-$(CONFIG_MPC86XADS)		+= cuImage.mpc866ads
image-$(CONFIG_MPC885ADS)		+= cuImage.mpc885ads
283
image-$(CONFIG_PPC_EP88XC)		+= dtbImage.ep88xc
284
image-$(CONFIG_PPC_ADDER875)		+= cuImage.adder875-uboot \
285
					   dtbImage.adder875-redboot
286 287

# Board ports in arch/powerpc/platform/52xx/Kconfig
288 289 290
image-$(CONFIG_PPC_LITE5200)		+= cuImage.lite5200 lite5200.dtb
image-$(CONFIG_PPC_LITE5200)		+= cuImage.lite5200b lite5200b.dtb
image-$(CONFIG_PPC_MEDIA5200)		+= cuImage.media5200 media5200.dtb
291 292 293 294

# Board ports in arch/powerpc/platform/82xx/Kconfig
image-$(CONFIG_MPC8272_ADS)		+= cuImage.mpc8272ads
image-$(CONFIG_PQ2FADS)			+= cuImage.pq2fads
295
image-$(CONFIG_EP8248E)			+= dtbImage.ep8248e
296 297 298 299 300 301 302 303

# Board ports in arch/powerpc/platform/83xx/Kconfig
image-$(CONFIG_MPC832x_MDS)		+= cuImage.mpc832x_mds
image-$(CONFIG_MPC832x_RDB)		+= cuImage.mpc832x_rdb
image-$(CONFIG_MPC834x_ITX)		+= cuImage.mpc8349emitx \
					   cuImage.mpc8349emitxgp
image-$(CONFIG_MPC834x_MDS)		+= cuImage.mpc834x_mds
image-$(CONFIG_MPC836x_MDS)		+= cuImage.mpc836x_mds
304
image-$(CONFIG_ASP834x)			+= dtbImage.asp834x-redboot
305 306 307 308 309

# Board ports in arch/powerpc/platform/85xx/Kconfig
image-$(CONFIG_MPC8540_ADS)		+= cuImage.mpc8540ads
image-$(CONFIG_MPC8560_ADS)		+= cuImage.mpc8560ads
image-$(CONFIG_MPC85xx_CDS)		+= cuImage.mpc8541cds \
310
					   cuImage.mpc8548cds_32b \
311 312 313 314 315 316
					   cuImage.mpc8555cds
image-$(CONFIG_MPC85xx_MDS)		+= cuImage.mpc8568mds
image-$(CONFIG_MPC85xx_DS)		+= cuImage.mpc8544ds \
					   cuImage.mpc8572ds
image-$(CONFIG_TQM8540)			+= cuImage.tqm8540
image-$(CONFIG_TQM8541)			+= cuImage.tqm8541
317
image-$(CONFIG_TQM8548)			+= cuImage.tqm8548
318 319
image-$(CONFIG_TQM8555)			+= cuImage.tqm8555
image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
320
image-$(CONFIG_SBC8548)			+= cuImage.sbc8548
321
image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
322

323 324 325
# Board ports in arch/powerpc/platform/86xx/Kconfig
image-$(CONFIG_MVME7100)                += dtbImage.mvme7100

326 327 328
# Board ports in arch/powerpc/platform/embedded6xx/Kconfig
image-$(CONFIG_STORCENTER)		+= cuImage.storcenter
image-$(CONFIG_MPC7448HPC2)		+= cuImage.mpc7448hpc2
R
Remi Machet 已提交
329
image-$(CONFIG_PPC_C2K)			+= cuImage.c2k
330
image-$(CONFIG_GAMECUBE)		+= dtbImage.gamecube
A
Albert Herranz 已提交
331
image-$(CONFIG_WII)			+= dtbImage.wii
332
image-$(CONFIG_MVME5100)		+= dtbImage.mvme5100
333

334 335 336
# Board port in arch/powerpc/platform/amigaone/Kconfig
image-$(CONFIG_AMIGAONE)		+= cuImage.amigaone

337 338
# For 32-bit powermacs, build the COFF and miboot images
# as well as the ELF images.
339 340 341 342
ifeq ($(CONFIG_PPC32),y)
image-$(CONFIG_PPC_PMAC)	+= zImage.coff zImage.miboot
endif

343 344 345
# Allow extra targets to be added to the defconfig
image-y	+= $(subst ",,$(CONFIG_EXTRA_TARGETS))

M
Michal Marek 已提交
346
initrd-  := $(patsubst zImage%, zImage.initrd%, $(image-))
347
initrd-y := $(patsubst zImage%, zImage.initrd%, \
348
		$(patsubst dtbImage%, dtbImage.initrd%, \
349 350
		$(patsubst simpleImage%, simpleImage.initrd%, \
		$(patsubst treeImage%, treeImage.initrd%, $(image-y)))))
351
initrd-y := $(filter-out $(image-y), $(initrd-y))
M
Milton Miller 已提交
352
targets	+= $(image-y) $(initrd-y)
353

354 355 356 357 358
$(addprefix $(obj)/, $(initrd-y)): $(obj)/ramdisk.image.gz

# Don't put the ramdisk on the pattern rule; when its missing make will try
# the pattern rule with less dependencies that also matches (even with the
# hard dependency listed).
359
$(obj)/zImage.initrd.%: vmlinux $(wrapperbits) FORCE
360
	$(call if_changed,wrap,$*,,,$(obj)/ramdisk.image.gz)
361

362
$(addprefix $(obj)/, $(sort $(filter zImage.%, $(image-y)))): vmlinux $(wrapperbits) FORCE
363
	$(call if_changed,wrap,$(subst $(obj)/zImage.,,$@))
364

365
# dtbImage% - a dtbImage is a zImage with an embedded device tree blob
366
$(obj)/dtbImage.initrd.%: vmlinux $(wrapperbits) $(obj)/%.dtb FORCE
367
	$(call if_changed,wrap,$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image.gz)
368

369
$(obj)/dtbImage.%: vmlinux $(wrapperbits) $(obj)/%.dtb FORCE
370
	$(call if_changed,wrap,$*,,$(obj)/$*.dtb)
371

372 373 374 375 376
# This cannot be in the root of $(src) as the zImage rule always adds a $(obj)
# prefix
$(obj)/vmlinux.strip: vmlinux
	$(STRIP) -s -R .comment $< -o $@

377
$(obj)/uImage: vmlinux $(wrapperbits) FORCE
378 379
	$(call if_changed,wrap,uboot)

380
$(obj)/uImage.initrd.%: vmlinux $(obj)/%.dtb $(wrapperbits) FORCE
381 382
	$(call if_changed,wrap,uboot-$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image.gz)

383
$(obj)/uImage.%: vmlinux $(obj)/%.dtb $(wrapperbits) FORCE
384 385
	$(call if_changed,wrap,uboot-$*,,$(obj)/$*.dtb)

386
$(obj)/cuImage.initrd.%: vmlinux $(obj)/%.dtb $(wrapperbits) FORCE
387 388
	$(call if_changed,wrap,cuboot-$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image.gz)

389
$(obj)/cuImage.%: vmlinux $(obj)/%.dtb $(wrapperbits) FORCE
390
	$(call if_changed,wrap,cuboot-$*,,$(obj)/$*.dtb)
391

392
$(obj)/simpleImage.initrd.%: vmlinux $(obj)/%.dtb $(wrapperbits) FORCE
393 394
	$(call if_changed,wrap,simpleboot-$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image.gz)

395
$(obj)/simpleImage.%: vmlinux $(obj)/%.dtb $(wrapperbits) FORCE
396 397
	$(call if_changed,wrap,simpleboot-$*,,$(obj)/$*.dtb)

398
$(obj)/treeImage.initrd.%: vmlinux $(obj)/%.dtb $(wrapperbits) FORCE
399
	$(call if_changed,wrap,treeboot-$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image.gz)
400

401
$(obj)/treeImage.%: vmlinux $(obj)/%.dtb $(wrapperbits) FORCE
402 403 404
	$(call if_changed,wrap,treeboot-$*,,$(obj)/$*.dtb)

# Rule to build device tree blobs
405 406
$(obj)/%.dtb: $(src)/dts/%.dts FORCE
	$(call if_changed_dep,dtc)
407

408 409 410
$(obj)/%.dtb: $(src)/dts/fsl/%.dts FORCE
	$(call if_changed_dep,dtc)

411 412 413 414 415
# If there isn't a platform selected then just strip the vmlinux.
ifeq (,$(image-y))
image-y := vmlinux.strip
endif

416
$(obj)/zImage:		$(addprefix $(obj)/, $(image-y))
417
	$(Q)rm -f $@; ln $< $@
418
$(obj)/zImage.initrd:	$(addprefix $(obj)/, $(initrd-y))
419
	$(Q)rm -f $@; ln $< $@
420

421
# Only install the vmlinux
A
Akinobu Mita 已提交
422
install: $(CONFIGURE) $(addprefix $(obj)/, $(image-y))
423 424 425 426
	sh -x $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" vmlinux System.map "$(INSTALL_PATH)"

# Install the vmlinux and other built boot targets.
zInstall: $(CONFIGURE) $(addprefix $(obj)/, $(image-y))
427
	sh -x $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" vmlinux System.map "$(INSTALL_PATH)" $^
428

429
# anything not in $(targets)
430 431
clean-files += $(image-) $(initrd-) cuImage.* dtbImage.* treeImage.* \
	zImage zImage.initrd zImage.chrp zImage.coff zImage.holly \
432
	zImage.miboot zImage.pmac zImage.pseries \
433
	zImage.maple simpleImage.* otheros.bld *.dtb
434 435

# clean up files cached by wrapper
436 437
clean-kernel-base := vmlinux.strip vmlinux.bin
clean-kernel := $(addsuffix .gz,$(clean-kernel-base))
438
clean-kernel += $(addsuffix .xz,$(clean-kernel-base))
439 440
# If not absolute clean-files are relative to $(obj).
clean-files += $(addprefix $(objtree)/, $(clean-kernel))
441 442 443 444 445 446 447 448 449

WRAPPER_OBJDIR := /usr/lib/kernel-wrapper
WRAPPER_DTSDIR := /usr/lib/kernel-wrapper/dts
WRAPPER_BINDIR := /usr/sbin
INSTALL := install

extra-installed		:= $(patsubst $(obj)/%, $(DESTDIR)$(WRAPPER_OBJDIR)/%, $(extra-y))
hostprogs-installed	:= $(patsubst %, $(DESTDIR)$(WRAPPER_BINDIR)/%, $(hostprogs-y))
wrapper-installed	:= $(DESTDIR)$(WRAPPER_BINDIR)/wrapper
450
dts-installed		:= $(patsubst $(dtstree)/%, $(DESTDIR)$(WRAPPER_DTSDIR)/%, $(wildcard $(dtstree)/*.dts))
451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487

all-installed		:= $(extra-installed) $(hostprogs-installed) $(wrapper-installed) $(dts-installed)

quiet_cmd_mkdir           = MKDIR   $(patsubst $(INSTALL_HDR_PATH)/%,%,$@)
      cmd_mkdir           = mkdir -p $@

quiet_cmd_install	  = INSTALL $(patsubst $(DESTDIR)$(WRAPPER_OBJDIR)/%,%,$@)
      cmd_install	  = $(INSTALL)  -m0644 $(patsubst $(DESTDIR)$(WRAPPER_OBJDIR)/%,$(obj)/%,$@) $@

quiet_cmd_install_dts	  = INSTALL $(patsubst $(DESTDIR)$(WRAPPER_DTSDIR)/%,dts/%,$@)
      cmd_install_dts	  = $(INSTALL)  -m0644 $(patsubst $(DESTDIR)$(WRAPPER_DTSDIR)/%,$(srctree)/$(obj)/dts/%,$@) $@

quiet_cmd_install_exe	  = INSTALL $(patsubst $(DESTDIR)$(WRAPPER_BINDIR)/%,%,$@)
      cmd_install_exe	  = $(INSTALL)  -m0755 $(patsubst $(DESTDIR)$(WRAPPER_BINDIR)/%,$(obj)/%,$@) $@

quiet_cmd_install_wrapper = INSTALL $(patsubst $(DESTDIR)$(WRAPPER_BINDIR)/%,%,$@)
      cmd_install_wrapper = $(INSTALL)  -m0755 $(patsubst $(DESTDIR)$(WRAPPER_BINDIR)/%,$(srctree)/$(obj)/%,$@) $@ ;\
				sed -i $@ -e 's%^object=.*%object=$(WRAPPER_OBJDIR)%' \
					  -e 's%^objbin=.*%objbin=$(WRAPPER_BINDIR)%' \


$(DESTDIR)$(WRAPPER_OBJDIR) $(DESTDIR)$(WRAPPER_DTSDIR) $(DESTDIR)$(WRAPPER_BINDIR):
	$(call cmd,mkdir)

$(extra-installed)	: $(DESTDIR)$(WRAPPER_OBJDIR)/% : $(obj)/% | $(DESTDIR)$(WRAPPER_OBJDIR)
	$(call cmd,install)

$(hostprogs-installed)  : $(DESTDIR)$(WRAPPER_BINDIR)/% : $(obj)/% | $(DESTDIR)$(WRAPPER_BINDIR)
	$(call cmd,install_exe)

$(dts-installed)	: $(DESTDIR)$(WRAPPER_DTSDIR)/% : $(srctree)/$(obj)/dts/% | $(DESTDIR)$(WRAPPER_DTSDIR)
	$(call cmd,install_dts)

$(wrapper-installed): $(DESTDIR)$(WRAPPER_BINDIR) $(srctree)/$(obj)/wrapper | $(DESTDIR)$(WRAPPER_BINDIR)
	$(call cmd,install_wrapper)

$(obj)/bootwrapper_install: $(all-installed)