Makefile 18.7 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
		 -D$(compress-y)

30
BOOTCC := $(CC)
31 32
ifdef CONFIG_PPC64_BOOT_WRAPPER
BOOTCFLAGS	+= -m64
33 34 35 36 37
else
BOOTCFLAGS	+= -m32
ifdef CROSS32_COMPILE
    BOOTCC := $(CROSS32_COMPILE)gcc
endif
38
endif
39 40 41

BOOTCFLAGS	+= -isystem $(shell $(BOOTCC) -print-file-name=include)

42 43
ifdef CONFIG_CPU_BIG_ENDIAN
BOOTCFLAGS	+= -mbig-endian
44 45 46
else
BOOTCFLAGS	+= -mlittle-endian
BOOTCFLAGS	+= $(call cc-option,-mabi=elfv2)
47 48
endif

49
BOOTAFLAGS	:= -D__ASSEMBLY__ $(BOOTCFLAGS) -traditional -nostdinc
50

51 52 53 54
ifdef CONFIG_DEBUG_INFO
BOOTCFLAGS	+= -g
endif

55 56 57 58
ifeq ($(call cc-option-yn, -fstack-protector),y)
BOOTCFLAGS	+= -fno-stack-protector
endif

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

61
DTC_FLAGS	?= -p 1024
62

63 64
$(obj)/4xx.o: BOOTCFLAGS += -mcpu=405
$(obj)/ebony.o: BOOTCFLAGS += -mcpu=405
65
$(obj)/cuboot-hotfoot.o: BOOTCFLAGS += -mcpu=405
66 67
$(obj)/cuboot-taishan.o: BOOTCFLAGS += -mcpu=405
$(obj)/cuboot-katmai.o: BOOTCFLAGS += -mcpu=405
68
$(obj)/cuboot-acadia.o: BOOTCFLAGS += -mcpu=405
69
$(obj)/treeboot-walnut.o: BOOTCFLAGS += -mcpu=405
70
$(obj)/treeboot-iss4xx.o: BOOTCFLAGS += -mcpu=405
71
$(obj)/treeboot-currituck.o: BOOTCFLAGS += -mcpu=405
72
$(obj)/treeboot-akebono.o: BOOTCFLAGS += -mcpu=405
73
$(obj)/virtex405-head.o: BOOTAFLAGS += -mcpu=405
74

75 76 77 78 79 80 81 82 83
# 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
84 85 86
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
87

88 89 90 91 92 93 94 95 96
$(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)): \
97 98
	$(addprefix $(obj)/,$(zliblinuxheader-y)) \
	$(addprefix $(obj)/,$(zlibheader-y))
99

100 101 102
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

103
$(addprefix $(obj)/,$(libfdt) libfdt-wrapper.o simpleboot.o epapr.o opal.o): \
104 105
	$(addprefix $(obj)/,$(libfdtheader))

106
src-wlib-y := string.S crt0.S stdio.c decompress.c main.c \
107
		$(libfdt) libfdt-wrapper.c \
108
		ns16550.c serial.c simple_alloc.c div64.S util.S \
109
		elf_util.c $(zlib-y) devtree.c stdlib.c \
110 111 112
		oflib.c ofconsole.c cuboot.c cpm-serial.c \
		uartlite.c opal.c
src-wlib-$(CONFIG_PPC_MPC52XX) += mpc52xx-psc.c
113
src-wlib-$(CONFIG_PPC64_BOOT_WRAPPER) +=  opal-calls.S
114 115 116
ifndef CONFIG_PPC64_BOOT_WRAPPER
src-wlib-y += crtsavres.S
endif
117 118
src-wlib-$(CONFIG_40x) += 4xx.c planetcore.c
src-wlib-$(CONFIG_44x) += 4xx.c ebony.c bamboo.c
119
src-wlib-$(CONFIG_PPC_8xx) += mpc8xx.c planetcore.c fsl-soc.c
120
src-wlib-$(CONFIG_PPC_82xx) += pq2.c fsl-soc.c planetcore.c
121
src-wlib-$(CONFIG_EMBEDDED6xx) += mpsc.c mv64x60.c mv64x60_i2c.c ugecon.c fsl-soc.c
122

123
src-plat-y := of.c epapr.c
124 125 126 127 128 129 130 131 132 133
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 \
134
				treeboot-akebono.c \
135
				simpleboot.c fixed-head.S virtex.c
136
src-plat-$(CONFIG_PPC_8xx) += cuboot-8xx.c fixed-head.S ep88xc.c redboot-8xx.c
137 138 139 140 141 142 143
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 \
144
					fixed-head.S mvme5100.c
145 146
src-plat-$(CONFIG_AMIGAONE) += cuboot-amigaone.c
src-plat-$(CONFIG_PPC_PS3) += ps3-head.S ps3-hvcall.S ps3.c
147
src-plat-$(CONFIG_EPAPR_BOOT) += epapr.c epapr-wrapper.c
148 149 150
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
151
src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
152 153 154

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

L
Linus Torvalds 已提交
157 158
src-boot := $(addprefix $(obj)/, $(src-boot))
obj-boot := $(addsuffix .o, $(basename $(src-boot)))
159 160
obj-wlib := $(addsuffix .o, $(basename $(addprefix $(obj)/, $(src-wlib))))
obj-plat := $(addsuffix .o, $(basename $(addprefix $(obj)/, $(src-plat))))
161
obj-plat: $(libfdt)
O
Olaf Hering 已提交
162

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

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

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

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

175 176 177
$(addprefix $(obj)/,$(zlib-decomp-y)): $(obj)/%: $(srctree)/lib/%
	$(call cmd,copy_kern_src)

178 179 180 181 182 183
quiet_cmd_copy_libfdt = COPY    $@
      cmd_copy_libfdt = cp $< $@

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

184
$(obj)/empty.c:
185
	$(Q)touch $@
186

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

190
clean-files := $(zlib-) $(zlibheader-) $(zliblinuxheader-) \
191
		$(zlib-decomp-) $(libfdt) $(libfdtheader) \
192
		empty.c zImage.coff.lds zImage.ps3.lds zImage.lds
O
Olaf Hering 已提交
193

L
Linus Torvalds 已提交
194
quiet_cmd_bootcc = BOOTCC  $@
195
      cmd_bootcc = $(BOOTCC) -Wp,-MD,$(depfile) $(BOOTCFLAGS) -c -o $@ $<
L
Linus Torvalds 已提交
196 197

quiet_cmd_bootas = BOOTAS  $@
198
      cmd_bootas = $(BOOTCC) -Wp,-MD,$(depfile) $(BOOTAFLAGS) -c -o $@ $<
L
Linus Torvalds 已提交
199

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

203 204
$(obj-libfdt): $(obj)/%.o: $(srctree)/scripts/dtc/libfdt/%.c FORCE
	$(call if_changed_dep,bootcc)
M
Milton Miller 已提交
205
$(patsubst %.c,%.o, $(filter %.c, $(src-boot))): %.o: %.c FORCE
206
	$(Q)mkdir -p $(dir $@)
L
Linus Torvalds 已提交
207
	$(call if_changed_dep,bootcc)
M
Milton Miller 已提交
208
$(patsubst %.S,%.o, $(filter %.S, $(src-boot))): %.o: %.S FORCE
209
	$(Q)mkdir -p $(dir $@)
L
Linus Torvalds 已提交
210 211
	$(call if_changed_dep,bootas)

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

215
hostprogs-y	:= addnote hack-coff mktree
L
Linus Torvalds 已提交
216

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

221 222
dtstree		:= $(srctree)/$(src)/dts

223
wrapper		:=$(srctree)/$(src)/wrapper
224
wrapperbits	:= $(extra-y) $(addprefix $(obj)/,addnote hack-coff mktree) \
M
Milton Miller 已提交
225
			$(wrapper) FORCE
L
Linus Torvalds 已提交
226

227 228
#############
# Bits for building various flavours of zImage
L
Linus Torvalds 已提交
229

230
ifneq ($(CROSS32_COMPILE),)
231
CROSSWRAP := -C "$(CROSS32_COMPILE)"
232 233
else
ifneq ($(CROSS_COMPILE),)
234
CROSSWRAP := -C "$(CROSS_COMPILE)"
235 236
endif
endif
L
Linus Torvalds 已提交
237

238
compressor-$(CONFIG_KERNEL_GZIP) := gz
239
compressor-$(CONFIG_KERNEL_XZ)   := xz
240

241
# args (to if_changed): 1 = (this rule), 2 = platform, 3 = dts 4=dtb 5=initrd
242
quiet_cmd_wrap	= WRAP    $@
243 244 245
      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
246

247
image-$(CONFIG_PPC_PSERIES)		+= zImage.pseries
248
image-$(CONFIG_PPC_POWERNV)		+= zImage.pseries
249
image-$(CONFIG_PPC_MAPLE)		+= zImage.maple
250
image-$(CONFIG_PPC_IBM_CELL_BLADE)	+= zImage.pseries
251
image-$(CONFIG_PPC_PS3)			+= dtbImage.ps3
252
image-$(CONFIG_PPC_CHRP)		+= zImage.chrp
253
image-$(CONFIG_PPC_EFIKA)		+= zImage.chrp
254
image-$(CONFIG_PPC_PMAC)		+= zImage.pmac
255
image-$(CONFIG_PPC_HOLLY)		+= dtbImage.holly
256
image-$(CONFIG_DEFAULT_UIMAGE)		+= uImage
257
image-$(CONFIG_EPAPR_BOOT)		+= zImage.epapr
258

259 260 261 262 263
#
# 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.
264
# Boards with newish u-boot firmware can use the uImage target above
265 266 267
#

# Board ports in arch/powerpc/platform/40x/Kconfig
268
image-$(CONFIG_EP405)			+= dtbImage.ep405
269
image-$(CONFIG_HOTFOOT)			+= cuImage.hotfoot
270
image-$(CONFIG_WALNUT)			+= treeImage.walnut
271
image-$(CONFIG_ACADIA)			+= cuImage.acadia
272
image-$(CONFIG_OBS600)			+= uImage.obs600
273 274

# Board ports in arch/powerpc/platform/44x/Kconfig
275
image-$(CONFIG_EBONY)			+= treeImage.ebony cuImage.ebony
J
Josh Boyer 已提交
276
image-$(CONFIG_BAMBOO)			+= treeImage.bamboo cuImage.bamboo
277
image-$(CONFIG_SAM440EP)		+= cuImage.sam440ep
278
image-$(CONFIG_SEQUOIA)			+= cuImage.sequoia
279
image-$(CONFIG_RAINIER)			+= cuImage.rainier
280
image-$(CONFIG_TAISHAN)			+= cuImage.taishan
281
image-$(CONFIG_KATMAI)			+= cuImage.katmai
282
image-$(CONFIG_WARP)			+= cuImage.warp
283
image-$(CONFIG_YOSEMITE)		+= cuImage.yosemite
284 285
image-$(CONFIG_ISS4xx)			+= treeImage.iss4xx \
					   treeImage.iss4xx-mpic
286
image-$(CONFIG_CURRITUCK)			+= treeImage.currituck
287
image-$(CONFIG_AKEBONO)			+= treeImage.akebono
288

289
# Board ports in arch/powerpc/platform/8xx/Kconfig
290 291
image-$(CONFIG_MPC86XADS)		+= cuImage.mpc866ads
image-$(CONFIG_MPC885ADS)		+= cuImage.mpc885ads
292
image-$(CONFIG_PPC_EP88XC)		+= dtbImage.ep88xc
293
image-$(CONFIG_PPC_ADDER875)		+= cuImage.adder875-uboot \
294
					   dtbImage.adder875-redboot
295 296

# Board ports in arch/powerpc/platform/52xx/Kconfig
297 298 299
image-$(CONFIG_PPC_LITE5200)		+= cuImage.lite5200 lite5200.dtb
image-$(CONFIG_PPC_LITE5200)		+= cuImage.lite5200b lite5200b.dtb
image-$(CONFIG_PPC_MEDIA5200)		+= cuImage.media5200 media5200.dtb
300 301 302 303

# Board ports in arch/powerpc/platform/82xx/Kconfig
image-$(CONFIG_MPC8272_ADS)		+= cuImage.mpc8272ads
image-$(CONFIG_PQ2FADS)			+= cuImage.pq2fads
304
image-$(CONFIG_EP8248E)			+= dtbImage.ep8248e
305 306 307 308 309 310 311 312

# 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
313
image-$(CONFIG_ASP834x)			+= dtbImage.asp834x-redboot
314 315 316 317 318

# 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 \
319
					   cuImage.mpc8548cds_32b \
320 321 322 323 324 325
					   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
326
image-$(CONFIG_TQM8548)			+= cuImage.tqm8548
327 328
image-$(CONFIG_TQM8555)			+= cuImage.tqm8555
image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
329
image-$(CONFIG_SBC8548)			+= cuImage.sbc8548
330
image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
331

332 333 334
# Board ports in arch/powerpc/platform/86xx/Kconfig
image-$(CONFIG_MVME7100)                += dtbImage.mvme7100

335 336 337
# Board ports in arch/powerpc/platform/embedded6xx/Kconfig
image-$(CONFIG_STORCENTER)		+= cuImage.storcenter
image-$(CONFIG_MPC7448HPC2)		+= cuImage.mpc7448hpc2
R
Remi Machet 已提交
338
image-$(CONFIG_PPC_C2K)			+= cuImage.c2k
339
image-$(CONFIG_GAMECUBE)		+= dtbImage.gamecube
A
Albert Herranz 已提交
340
image-$(CONFIG_WII)			+= dtbImage.wii
341
image-$(CONFIG_MVME5100)		+= dtbImage.mvme5100
342

343 344 345
# Board port in arch/powerpc/platform/amigaone/Kconfig
image-$(CONFIG_AMIGAONE)		+= cuImage.amigaone

346 347
# For 32-bit powermacs, build the COFF and miboot images
# as well as the ELF images.
348 349 350 351
ifeq ($(CONFIG_PPC32),y)
image-$(CONFIG_PPC_PMAC)	+= zImage.coff zImage.miboot
endif

352 353 354
# Allow extra targets to be added to the defconfig
image-y	+= $(subst ",,$(CONFIG_EXTRA_TARGETS))

M
Michal Marek 已提交
355
initrd-  := $(patsubst zImage%, zImage.initrd%, $(image-))
356
initrd-y := $(patsubst zImage%, zImage.initrd%, \
357
		$(patsubst dtbImage%, dtbImage.initrd%, \
358 359
		$(patsubst simpleImage%, simpleImage.initrd%, \
		$(patsubst treeImage%, treeImage.initrd%, $(image-y)))))
360
initrd-y := $(filter-out $(image-y), $(initrd-y))
M
Milton Miller 已提交
361
targets	+= $(image-y) $(initrd-y)
362

363 364 365 366 367
$(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).
368
$(obj)/zImage.initrd.%: vmlinux $(wrapperbits) FORCE
369
	$(call if_changed,wrap,$*,,,$(obj)/ramdisk.image.gz)
370

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

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

378
$(obj)/dtbImage.%: vmlinux $(wrapperbits) $(obj)/%.dtb FORCE
379
	$(call if_changed,wrap,$*,,$(obj)/$*.dtb)
380

381 382 383 384 385
# 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 $@

386
$(obj)/uImage: vmlinux $(wrapperbits) FORCE
387 388
	$(call if_changed,wrap,uboot)

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

392
$(obj)/uImage.%: vmlinux $(obj)/%.dtb $(wrapperbits) FORCE
393 394
	$(call if_changed,wrap,uboot-$*,,$(obj)/$*.dtb)

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

398
$(obj)/cuImage.%: vmlinux $(obj)/%.dtb $(wrapperbits) FORCE
399
	$(call if_changed,wrap,cuboot-$*,,$(obj)/$*.dtb)
400

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

404
$(obj)/simpleImage.%: vmlinux $(obj)/%.dtb $(wrapperbits) FORCE
405 406
	$(call if_changed,wrap,simpleboot-$*,,$(obj)/$*.dtb)

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

410
$(obj)/treeImage.%: vmlinux $(obj)/%.dtb $(wrapperbits) FORCE
411 412 413
	$(call if_changed,wrap,treeboot-$*,,$(obj)/$*.dtb)

# Rule to build device tree blobs
414 415
$(obj)/%.dtb: $(src)/dts/%.dts FORCE
	$(call if_changed_dep,dtc)
416

417 418 419
$(obj)/%.dtb: $(src)/dts/fsl/%.dts FORCE
	$(call if_changed_dep,dtc)

420 421 422 423 424
# If there isn't a platform selected then just strip the vmlinux.
ifeq (,$(image-y))
image-y := vmlinux.strip
endif

425
$(obj)/zImage:		$(addprefix $(obj)/, $(image-y))
426
	$(Q)rm -f $@; ln $< $@
427
$(obj)/zImage.initrd:	$(addprefix $(obj)/, $(initrd-y))
428
	$(Q)rm -f $@; ln $< $@
429

430
# Only install the vmlinux
A
Akinobu Mita 已提交
431
install: $(CONFIGURE) $(addprefix $(obj)/, $(image-y))
432 433 434 435
	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))
436
	sh -x $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" vmlinux System.map "$(INSTALL_PATH)" $^
437

438
# anything not in $(targets)
439 440
clean-files += $(image-) $(initrd-) cuImage.* dtbImage.* treeImage.* \
	zImage zImage.initrd zImage.chrp zImage.coff zImage.holly \
441
	zImage.miboot zImage.pmac zImage.pseries \
442
	zImage.maple simpleImage.* otheros.bld *.dtb
443 444

# clean up files cached by wrapper
445 446
clean-kernel-base := vmlinux.strip vmlinux.bin
clean-kernel := $(addsuffix .gz,$(clean-kernel-base))
447
clean-kernel += $(addsuffix .xz,$(clean-kernel-base))
448 449
# If not absolute clean-files are relative to $(obj).
clean-files += $(addprefix $(objtree)/, $(clean-kernel))
450 451 452 453 454 455 456 457 458

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
459
dts-installed		:= $(patsubst $(dtstree)/%, $(DESTDIR)$(WRAPPER_DTSDIR)/%, $(wildcard $(dtstree)/*.dts))
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 488 489 490 491 492 493 494 495 496

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)