Makefile 16.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
BOOTCFLAGS    := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
23
		 -fno-strict-aliasing -Os -msoft-float -pipe \
24 25
		 -fomit-frame-pointer -fno-builtin -fPIC -nostdinc \
		 -isystem $(shell $(CROSS32CC) -print-file-name=include)
26
BOOTAFLAGS	:= -D__ASSEMBLY__ $(BOOTCFLAGS) -traditional -nostdinc
27

28 29 30 31
ifdef CONFIG_DEBUG_INFO
BOOTCFLAGS	+= -g
endif

32 33 34 35
ifeq ($(call cc-option-yn, -fstack-protector),y)
BOOTCFLAGS	+= -fno-stack-protector
endif

36
BOOTCFLAGS	+= -I$(obj) -I$(srctree)/$(obj)
L
Linus Torvalds 已提交
37

38
DTC_FLAGS	?= -p 1024
39

40 41
$(obj)/4xx.o: BOOTCFLAGS += -mcpu=405
$(obj)/ebony.o: BOOTCFLAGS += -mcpu=405
42
$(obj)/cuboot-hotfoot.o: BOOTCFLAGS += -mcpu=405
43 44
$(obj)/cuboot-taishan.o: BOOTCFLAGS += -mcpu=405
$(obj)/cuboot-katmai.o: BOOTCFLAGS += -mcpu=405
45
$(obj)/cuboot-acadia.o: BOOTCFLAGS += -mcpu=405
46
$(obj)/treeboot-walnut.o: BOOTCFLAGS += -mcpu=405
47
$(obj)/treeboot-iss4xx.o: BOOTCFLAGS += -mcpu=405
48
$(obj)/treeboot-currituck.o: BOOTCFLAGS += -mcpu=405
49
$(obj)/virtex405-head.o: BOOTAFLAGS += -mcpu=405
50

51

52 53
zlib       := inffast.c inflate.c inftrees.c
zlibheader := inffast.h inffixed.h inflate.h inftrees.h infutil.h
O
Olaf Hering 已提交
54 55
zliblinuxheader := zlib.h zconf.h zutil.h

56
$(addprefix $(obj)/,$(zlib) cuboot-c2k.o gunzip_util.o main.o prpmc2800.o): \
57
	$(addprefix $(obj)/,$(zliblinuxheader)) $(addprefix $(obj)/,$(zlibheader))
58

59 60 61
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

62
$(addprefix $(obj)/,$(libfdt) libfdt-wrapper.o simpleboot.o epapr.o): \
63 64
	$(addprefix $(obj)/,$(libfdtheader))

65
src-wlib-y := string.S crt0.S crtsavres.S stdio.c main.c \
66
		$(libfdt) libfdt-wrapper.c \
67
		ns16550.c serial.c simple_alloc.c div64.S util.S \
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
		gunzip_util.c elf_util.c $(zlib) devtree.c stdlib.c \
		oflib.c ofconsole.c cuboot.c mpsc.c cpm-serial.c \
		uartlite.c mpc52xx-psc.c
src-wlib-$(CONFIG_40x) += 4xx.c planetcore.c
src-wlib-$(CONFIG_44x) += 4xx.c ebony.c bamboo.c
src-wlib-$(CONFIG_8xx) += mpc8xx.c planetcore.c
src-wlib-$(CONFIG_PPC_82xx) += pq2.c fsl-soc.c planetcore.c
src-wlib-$(CONFIG_EMBEDDED6xx) += mv64x60.c mv64x60_i2c.c ugecon.c

src-plat-y := of.c
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 \
				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 \
					prpmc2800.c
src-plat-$(CONFIG_AMIGAONE) += cuboot-amigaone.c
src-plat-$(CONFIG_PPC_PS3) += ps3-head.S ps3-hvcall.S ps3.c
src-plat-$(CONFIG_EPAPR_BOOT) += epapr.c

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

L
Linus Torvalds 已提交
106 107
src-boot := $(addprefix $(obj)/, $(src-boot))
obj-boot := $(addsuffix .o, $(basename $(src-boot)))
108 109
obj-wlib := $(addsuffix .o, $(basename $(addprefix $(obj)/, $(src-wlib))))
obj-plat := $(addsuffix .o, $(basename $(addprefix $(obj)/, $(src-plat))))
110
obj-plat: $(libfdt)
O
Olaf Hering 已提交
111 112

quiet_cmd_copy_zlib = COPY    $@
A
Adrian Bunk 已提交
113
      cmd_copy_zlib = sed "s@__used@@;s@<linux/\([^>]*\).*@\"\1\"@" $< > $@
O
Olaf Hering 已提交
114 115

quiet_cmd_copy_zlibheader = COPY    $@
116
      cmd_copy_zlibheader = sed "s@<linux/\([^>]*\).*@\"\1\"@" $< > $@
O
Olaf Hering 已提交
117 118
# stddef.h for NULL
quiet_cmd_copy_zliblinuxheader = COPY    $@
119
      cmd_copy_zliblinuxheader = sed "s@<linux/string.h>@\"string.h\"@;s@<linux/kernel.h>@<stddef.h>@;s@<linux/\([^>]*\).*@\"\1\"@" $< > $@
O
Olaf Hering 已提交
120 121 122 123 124 125 126 127 128 129

$(addprefix $(obj)/,$(zlib)): $(obj)/%: $(srctree)/lib/zlib_inflate/%
	$(call cmd,copy_zlib)

$(addprefix $(obj)/,$(zlibheader)): $(obj)/%: $(srctree)/lib/zlib_inflate/%
	$(call cmd,copy_zlibheader)

$(addprefix $(obj)/,$(zliblinuxheader)): $(obj)/%: $(srctree)/include/linux/%
	$(call cmd,copy_zliblinuxheader)

130 131 132 133 134 135
quiet_cmd_copy_libfdt = COPY    $@
      cmd_copy_libfdt = cp $< $@

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

136 137 138
$(obj)/empty.c:
	@touch $@

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

142
clean-files := $(zlib) $(zlibheader) $(zliblinuxheader) \
143
		$(libfdt) $(libfdtheader) \
144
		empty.c zImage.coff.lds zImage.ps3.lds zImage.lds
O
Olaf Hering 已提交
145

L
Linus Torvalds 已提交
146 147 148 149 150 151
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 $@ $<

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

155 156
$(obj-libfdt): $(obj)/%.o: $(srctree)/scripts/dtc/libfdt/%.c FORCE
	$(call if_changed_dep,bootcc)
M
Milton Miller 已提交
157
$(patsubst %.c,%.o, $(filter %.c, $(src-boot))): %.o: %.c FORCE
158
	$(Q)mkdir -p $(dir $@)
L
Linus Torvalds 已提交
159
	$(call if_changed_dep,bootcc)
M
Milton Miller 已提交
160
$(patsubst %.S,%.o, $(filter %.S, $(src-boot))): %.o: %.S FORCE
161
	$(Q)mkdir -p $(dir $@)
L
Linus Torvalds 已提交
162 163
	$(call if_changed_dep,bootas)

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

167
hostprogs-y	:= addnote hack-coff mktree
L
Linus Torvalds 已提交
168

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

173 174
dtstree		:= $(srctree)/$(src)/dts

175
wrapper		:=$(srctree)/$(src)/wrapper
176
wrapperbits	:= $(extra-y) $(addprefix $(obj)/,addnote hack-coff mktree) \
M
Milton Miller 已提交
177
			$(wrapper) FORCE
L
Linus Torvalds 已提交
178

179 180
#############
# Bits for building various flavours of zImage
L
Linus Torvalds 已提交
181

182
ifneq ($(CROSS32_COMPILE),)
183
CROSSWRAP := -C "$(CROSS32_COMPILE)"
184 185
else
ifneq ($(CROSS_COMPILE),)
186
CROSSWRAP := -C "$(CROSS_COMPILE)"
187 188
endif
endif
L
Linus Torvalds 已提交
189

190
# args (to if_changed): 1 = (this rule), 2 = platform, 3 = dts 4=dtb 5=initrd
191
quiet_cmd_wrap	= WRAP    $@
192 193
      cmd_wrap	=$(CONFIG_SHELL) $(wrapper) -c -o $@ -p $2 $(CROSSWRAP) \
		$(if $3, -s $3)$(if $4, -d $4)$(if $5, -i $5) vmlinux
194

195
image-$(CONFIG_PPC_PSERIES)		+= zImage.pseries
196
image-$(CONFIG_PPC_POWERNV)		+= zImage.pseries
197
image-$(CONFIG_PPC_MAPLE)		+= zImage.maple
198
image-$(CONFIG_PPC_IBM_CELL_BLADE)	+= zImage.pseries
199
image-$(CONFIG_PPC_PS3)			+= dtbImage.ps3
I
Ishizaki Kou 已提交
200
image-$(CONFIG_PPC_CELLEB)		+= zImage.pseries
201
image-$(CONFIG_PPC_CELL_QPACE)		+= zImage.pseries
202
image-$(CONFIG_PPC_CHRP)		+= zImage.chrp
203
image-$(CONFIG_PPC_EFIKA)		+= zImage.chrp
204
image-$(CONFIG_PPC_PMAC)		+= zImage.pmac
205
image-$(CONFIG_PPC_HOLLY)		+= dtbImage.holly
206
image-$(CONFIG_PPC_PRPMC2800)		+= dtbImage.prpmc2800
207
image-$(CONFIG_DEFAULT_UIMAGE)		+= uImage
208
image-$(CONFIG_EPAPR_BOOT)		+= zImage.epapr
209

210 211 212 213 214
#
# 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.
215
# Boards with newish u-boot firmware can use the uImage target above
216 217 218
#

# Board ports in arch/powerpc/platform/40x/Kconfig
219
image-$(CONFIG_EP405)			+= dtbImage.ep405
220
image-$(CONFIG_HOTFOOT)			+= cuImage.hotfoot
221
image-$(CONFIG_WALNUT)			+= treeImage.walnut
222
image-$(CONFIG_ACADIA)			+= cuImage.acadia
223
image-$(CONFIG_OBS600)			+= uImage.obs600
224 225

# Board ports in arch/powerpc/platform/44x/Kconfig
226
image-$(CONFIG_EBONY)			+= treeImage.ebony cuImage.ebony
J
Josh Boyer 已提交
227
image-$(CONFIG_BAMBOO)			+= treeImage.bamboo cuImage.bamboo
228
image-$(CONFIG_SAM440EP)		+= cuImage.sam440ep
229
image-$(CONFIG_SEQUOIA)			+= cuImage.sequoia
230
image-$(CONFIG_RAINIER)			+= cuImage.rainier
231
image-$(CONFIG_TAISHAN)			+= cuImage.taishan
232
image-$(CONFIG_KATMAI)			+= cuImage.katmai
233
image-$(CONFIG_WARP)			+= cuImage.warp
234
image-$(CONFIG_YOSEMITE)		+= cuImage.yosemite
235 236
image-$(CONFIG_ISS4xx)			+= treeImage.iss4xx \
					   treeImage.iss4xx-mpic
237
image-$(CONFIG_CURRITUCK)			+= treeImage.currituck
238

239
# Board ports in arch/powerpc/platform/8xx/Kconfig
240 241
image-$(CONFIG_MPC86XADS)		+= cuImage.mpc866ads
image-$(CONFIG_MPC885ADS)		+= cuImage.mpc885ads
242
image-$(CONFIG_PPC_EP88XC)		+= dtbImage.ep88xc
243
image-$(CONFIG_PPC_ADDER875)		+= cuImage.adder875-uboot \
244
					   dtbImage.adder875-redboot
245 246

# Board ports in arch/powerpc/platform/52xx/Kconfig
247 248 249
image-$(CONFIG_PPC_LITE5200)		+= cuImage.lite5200 lite5200.dtb
image-$(CONFIG_PPC_LITE5200)		+= cuImage.lite5200b lite5200b.dtb
image-$(CONFIG_PPC_MEDIA5200)		+= cuImage.media5200 media5200.dtb
250 251 252 253

# Board ports in arch/powerpc/platform/82xx/Kconfig
image-$(CONFIG_MPC8272_ADS)		+= cuImage.mpc8272ads
image-$(CONFIG_PQ2FADS)			+= cuImage.pq2fads
254
image-$(CONFIG_EP8248E)			+= dtbImage.ep8248e
255 256 257 258 259 260 261 262

# 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
263
image-$(CONFIG_ASP834x)			+= dtbImage.asp834x-redboot
264 265 266 267 268

# 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 \
269
					   cuImage.mpc8548cds_32b \
270 271 272 273 274 275
					   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
276
image-$(CONFIG_TQM8548)			+= cuImage.tqm8548
277 278
image-$(CONFIG_TQM8555)			+= cuImage.tqm8555
image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
279
image-$(CONFIG_SBC8548)			+= cuImage.sbc8548
280
image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
281 282 283 284

# Board ports in arch/powerpc/platform/embedded6xx/Kconfig
image-$(CONFIG_STORCENTER)		+= cuImage.storcenter
image-$(CONFIG_MPC7448HPC2)		+= cuImage.mpc7448hpc2
R
Remi Machet 已提交
285
image-$(CONFIG_PPC_C2K)			+= cuImage.c2k
286
image-$(CONFIG_GAMECUBE)		+= dtbImage.gamecube
A
Albert Herranz 已提交
287
image-$(CONFIG_WII)			+= dtbImage.wii
288

289 290 291
# Board port in arch/powerpc/platform/amigaone/Kconfig
image-$(CONFIG_AMIGAONE)		+= cuImage.amigaone

292 293
# For 32-bit powermacs, build the COFF and miboot images
# as well as the ELF images.
294 295 296 297
ifeq ($(CONFIG_PPC32),y)
image-$(CONFIG_PPC_PMAC)	+= zImage.coff zImage.miboot
endif

298 299 300
# Allow extra targets to be added to the defconfig
image-y	+= $(subst ",,$(CONFIG_EXTRA_TARGETS))

M
Milton Miller 已提交
301
initrd-  := $(patsubst zImage%, zImage.initrd%, $(image-n) $(image-))
302
initrd-y := $(patsubst zImage%, zImage.initrd%, \
303
		$(patsubst dtbImage%, dtbImage.initrd%, \
304 305
		$(patsubst simpleImage%, simpleImage.initrd%, \
		$(patsubst treeImage%, treeImage.initrd%, $(image-y)))))
306
initrd-y := $(filter-out $(image-y), $(initrd-y))
M
Milton Miller 已提交
307
targets	+= $(image-y) $(initrd-y)
308

309 310 311 312 313
$(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).
314 315
$(obj)/zImage.initrd.%: vmlinux $(wrapperbits)
	$(call if_changed,wrap,$*,,,$(obj)/ramdisk.image.gz)
316

317 318 319
$(obj)/zImage.%: vmlinux $(wrapperbits)
	$(call if_changed,wrap,$*)

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

324 325
$(obj)/dtbImage.%: vmlinux $(wrapperbits) $(obj)/%.dtb
	$(call if_changed,wrap,$*,,$(obj)/$*.dtb)
326

327 328 329 330 331
# 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 $@

332 333 334
$(obj)/uImage: vmlinux $(wrapperbits)
	$(call if_changed,wrap,uboot)

335 336 337 338 339 340
$(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)

341 342 343
$(obj)/cuImage.initrd.%: vmlinux $(obj)/%.dtb $(wrapperbits)
	$(call if_changed,wrap,cuboot-$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image.gz)

344 345
$(obj)/cuImage.%: vmlinux $(obj)/%.dtb $(wrapperbits)
	$(call if_changed,wrap,cuboot-$*,,$(obj)/$*.dtb)
346

347 348 349 350 351 352
$(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)

353 354
$(obj)/treeImage.initrd.%: vmlinux $(obj)/%.dtb $(wrapperbits)
	$(call if_changed,wrap,treeboot-$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image.gz)
355

356 357 358 359
$(obj)/treeImage.%: vmlinux $(obj)/%.dtb $(wrapperbits)
	$(call if_changed,wrap,treeboot-$*,,$(obj)/$*.dtb)

# Rule to build device tree blobs
360 361
$(obj)/%.dtb: $(src)/dts/%.dts FORCE
	$(call if_changed_dep,dtc)
362

363 364 365 366 367
# If there isn't a platform selected then just strip the vmlinux.
ifeq (,$(image-y))
image-y := vmlinux.strip
endif

368 369 370 371 372
$(obj)/zImage:		$(addprefix $(obj)/, $(image-y))
	@rm -f $@; ln $< $@
$(obj)/zImage.initrd:	$(addprefix $(obj)/, $(initrd-y))
	@rm -f $@; ln $< $@

A
Akinobu Mita 已提交
373
install: $(CONFIGURE) $(addprefix $(obj)/, $(image-y))
374
	sh -x $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" vmlinux System.map "$(INSTALL_PATH)" $^
375

376
# anything not in $(targets)
377 378
clean-files += $(image-) $(initrd-) cuImage.* dtbImage.* treeImage.* \
	zImage zImage.initrd zImage.chrp zImage.coff zImage.holly \
379
	zImage.miboot zImage.pmac zImage.pseries \
380
	zImage.maple simpleImage.* otheros.bld *.dtb
381 382 383 384 385 386

# clean up files cached by wrapper
clean-kernel := vmlinux.strip vmlinux.bin
clean-kernel += $(addsuffix .gz,$(clean-kernel))
# If not absolute clean-files are relative to $(obj).
clean-files += $(addprefix $(objtree)/, $(clean-kernel))
387 388 389 390 391 392 393 394 395

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
396
dts-installed		:= $(patsubst $(dtstree)/%, $(DESTDIR)$(WRAPPER_DTSDIR)/%, $(wildcard $(dtstree)/*.dts))
397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433

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)