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

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

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

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

39
DTC_FLAGS	?= -p 1024
40

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

52

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

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

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

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

66
src-wlib-y := string.S crt0.S crtsavres.S stdio.c main.c \
67
		$(libfdt) libfdt-wrapper.c \
68
		ns16550.c serial.c simple_alloc.c div64.S util.S \
69 70 71 72 73
		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
74
src-wlib-$(CONFIG_8xx) += mpc8xx.c planetcore.c fsl-soc.c
75
src-wlib-$(CONFIG_PPC_82xx) += pq2.c fsl-soc.c planetcore.c
76
src-wlib-$(CONFIG_EMBEDDED6xx) += mv64x60.c mv64x60_i2c.c ugecon.c fsl-soc.c
77

78
src-plat-y := of.c epapr.c
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
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 \
98
					prpmc2800.c fixed-head.S mvme5100.c
99 100
src-plat-$(CONFIG_AMIGAONE) += cuboot-amigaone.c
src-plat-$(CONFIG_PPC_PS3) += ps3-head.S ps3-hvcall.S ps3.c
101
src-plat-$(CONFIG_EPAPR_BOOT) += epapr.c epapr-wrapper.c
102 103 104

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

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

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

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

$(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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

329 330 331 332 333
# 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 $@

334 335 336
$(obj)/uImage: vmlinux $(wrapperbits)
	$(call if_changed,wrap,uboot)

337 338 339 340 341 342
$(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)

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

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

349 350 351 352 353 354
$(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)

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

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

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

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

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

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

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

# 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))
389 390 391 392 393 394 395 396 397

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
398
dts-installed		:= $(patsubst $(dtstree)/%, $(DESTDIR)$(WRAPPER_DTSDIR)/%, $(wildcard $(dtstree)/*.dts))
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 434 435

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)