Makefile 18.4 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 23
compress-$(CONFIG_KERNEL_GZIP) := CONFIG_KERNEL_GZIP

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

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

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

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

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

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

52
DTC_FLAGS	?= -p 1024
53

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

66 67 68 69 70 71 72 73 74
# 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
75 76 77
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
78

79 80 81 82 83 84 85 86 87
$(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)): \
88 89
	$(addprefix $(obj)/,$(zliblinuxheader-y)) \
	$(addprefix $(obj)/,$(zlibheader-y))
90

91 92 93
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

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

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

109
src-plat-y := of.c epapr.c
110 111 112 113 114 115 116 117 118 119
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 \
120
				treeboot-akebono.c \
121 122 123 124 125 126 127 128 129
				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 \
130
					fixed-head.S mvme5100.c
131 132
src-plat-$(CONFIG_AMIGAONE) += cuboot-amigaone.c
src-plat-$(CONFIG_PPC_PS3) += ps3-head.S ps3-hvcall.S ps3.c
133
src-plat-$(CONFIG_EPAPR_BOOT) += epapr.c epapr-wrapper.c
134 135 136
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
137
src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
138 139 140

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

L
Linus Torvalds 已提交
143 144
src-boot := $(addprefix $(obj)/, $(src-boot))
obj-boot := $(addsuffix .o, $(basename $(src-boot)))
145 146
obj-wlib := $(addsuffix .o, $(basename $(addprefix $(obj)/, $(src-wlib))))
obj-plat := $(addsuffix .o, $(basename $(addprefix $(obj)/, $(src-plat))))
147
obj-plat: $(libfdt)
O
Olaf Hering 已提交
148

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

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

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

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

161 162 163
$(addprefix $(obj)/,$(zlib-decomp-y)): $(obj)/%: $(srctree)/lib/%
	$(call cmd,copy_kern_src)

164 165 166 167 168 169
quiet_cmd_copy_libfdt = COPY    $@
      cmd_copy_libfdt = cp $< $@

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

170
$(obj)/empty.c:
171
	$(Q)touch $@
172

173 174 175 176 177
$(obj)/zImage.lds: $(obj)/%: $(srctree)/$(src)/%.S
	$(CROSS32CC) $(cpp_flags) -E -Wp,-MD,$(depfile) -P -Upowerpc \
		-D__ASSEMBLY__ -DLINKER_SCRIPT -o $@ $<

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

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

L
Linus Torvalds 已提交
184 185 186 187 188 189
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 $@ $<

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

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

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

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

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

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

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

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

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

228 229
compressor-$(CONFIG_KERNEL_GZIP) := gz

230
# args (to if_changed): 1 = (this rule), 2 = platform, 3 = dts 4=dtb 5=initrd
231
quiet_cmd_wrap	= WRAP    $@
232 233 234
      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
235

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

248 249 250 251 252
#
# 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.
253
# Boards with newish u-boot firmware can use the uImage target above
254 255 256
#

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

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

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

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

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

# 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
302
image-$(CONFIG_ASP834x)			+= dtbImage.asp834x-redboot
303 304 305 306 307

# 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 \
308
					   cuImage.mpc8548cds_32b \
309 310 311 312 313 314
					   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
315
image-$(CONFIG_TQM8548)			+= cuImage.tqm8548
316 317
image-$(CONFIG_TQM8555)			+= cuImage.tqm8555
image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
318
image-$(CONFIG_SBC8548)			+= cuImage.sbc8548
319
image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
320

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

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

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

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

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

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

352 353 354 355 356
$(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).
357 358
$(obj)/zImage.initrd.%: vmlinux $(wrapperbits)
	$(call if_changed,wrap,$*,,,$(obj)/ramdisk.image.gz)
359

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

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

367 368
$(obj)/dtbImage.%: vmlinux $(wrapperbits) $(obj)/%.dtb
	$(call if_changed,wrap,$*,,$(obj)/$*.dtb)
369

370 371 372 373 374
# 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 $@

375 376 377
$(obj)/uImage: vmlinux $(wrapperbits)
	$(call if_changed,wrap,uboot)

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

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

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

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

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

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

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

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

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

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

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

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

419
# Only install the vmlinux
A
Akinobu Mita 已提交
420
install: $(CONFIGURE) $(addprefix $(obj)/, $(image-y))
421 422 423 424
	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))
425
	sh -x $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" vmlinux System.map "$(INSTALL_PATH)" $^
426

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

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

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
447
dts-installed		:= $(patsubst $(dtstree)/%, $(DESTDIR)$(WRAPPER_DTSDIR)/%, $(wildcard $(dtstree)/*.dts))
448 449 450 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

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)