Makefile 16.8 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): \
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
					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 105 106
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
src-plat-$(CONFIG_PPC_CELLEB) += pseries-head.S
src-plat-$(CONFIG_PPC_CELL_QPACE) += pseries-head.S
107 108 109

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

L
Linus Torvalds 已提交
112 113
src-boot := $(addprefix $(obj)/, $(src-boot))
obj-boot := $(addsuffix .o, $(basename $(src-boot)))
114 115
obj-wlib := $(addsuffix .o, $(basename $(addprefix $(obj)/, $(src-wlib))))
obj-plat := $(addsuffix .o, $(basename $(addprefix $(obj)/, $(src-plat))))
116
obj-plat: $(libfdt)
O
Olaf Hering 已提交
117 118

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

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

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

136 137 138 139 140 141
quiet_cmd_copy_libfdt = COPY    $@
      cmd_copy_libfdt = cp $< $@

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

142 143 144
$(obj)/empty.c:
	@touch $@

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

148
clean-files := $(zlib) $(zlibheader) $(zliblinuxheader) \
149
		$(libfdt) $(libfdtheader) \
150
		empty.c zImage.coff.lds zImage.ps3.lds zImage.lds
O
Olaf Hering 已提交
151

L
Linus Torvalds 已提交
152 153 154 155 156 157
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 $@ $<

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

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

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

173
hostprogs-y	:= addnote hack-coff mktree
L
Linus Torvalds 已提交
174

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

179 180
dtstree		:= $(srctree)/$(src)/dts

181
wrapper		:=$(srctree)/$(src)/wrapper
182
wrapperbits	:= $(extra-y) $(addprefix $(obj)/,addnote hack-coff mktree) \
M
Milton Miller 已提交
183
			$(wrapper) FORCE
L
Linus Torvalds 已提交
184

185 186
#############
# Bits for building various flavours of zImage
L
Linus Torvalds 已提交
187

188
ifneq ($(CROSS32_COMPILE),)
189
CROSSWRAP := -C "$(CROSS32_COMPILE)"
190 191
else
ifneq ($(CROSS_COMPILE),)
192
CROSSWRAP := -C "$(CROSS_COMPILE)"
193 194
endif
endif
L
Linus Torvalds 已提交
195

196
# args (to if_changed): 1 = (this rule), 2 = platform, 3 = dts 4=dtb 5=initrd
197
quiet_cmd_wrap	= WRAP    $@
198 199
      cmd_wrap	=$(CONFIG_SHELL) $(wrapper) -c -o $@ -p $2 $(CROSSWRAP) \
		$(if $3, -s $3)$(if $4, -d $4)$(if $5, -i $5) vmlinux
200

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

215 216 217 218 219
#
# 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.
220
# Boards with newish u-boot firmware can use the uImage target above
221 222 223
#

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

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

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

# Board ports in arch/powerpc/platform/52xx/Kconfig
252 253 254
image-$(CONFIG_PPC_LITE5200)		+= cuImage.lite5200 lite5200.dtb
image-$(CONFIG_PPC_LITE5200)		+= cuImage.lite5200b lite5200b.dtb
image-$(CONFIG_PPC_MEDIA5200)		+= cuImage.media5200 media5200.dtb
255 256 257 258

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

# 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
268
image-$(CONFIG_ASP834x)			+= dtbImage.asp834x-redboot
269 270 271 272 273

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

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

295 296 297
# Board port in arch/powerpc/platform/amigaone/Kconfig
image-$(CONFIG_AMIGAONE)		+= cuImage.amigaone

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

304 305 306
# Allow extra targets to be added to the defconfig
image-y	+= $(subst ",,$(CONFIG_EXTRA_TARGETS))

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

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

323 324 325
$(obj)/zImage.%: vmlinux $(wrapperbits)
	$(call if_changed,wrap,$*)

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

330 331
$(obj)/dtbImage.%: vmlinux $(wrapperbits) $(obj)/%.dtb
	$(call if_changed,wrap,$*,,$(obj)/$*.dtb)
332

333 334 335 336 337
# 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 $@

338 339 340
$(obj)/uImage: vmlinux $(wrapperbits)
	$(call if_changed,wrap,uboot)

341 342 343 344 345 346
$(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)

347 348 349
$(obj)/cuImage.initrd.%: vmlinux $(obj)/%.dtb $(wrapperbits)
	$(call if_changed,wrap,cuboot-$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image.gz)

350 351
$(obj)/cuImage.%: vmlinux $(obj)/%.dtb $(wrapperbits)
	$(call if_changed,wrap,cuboot-$*,,$(obj)/$*.dtb)
352

353 354 355 356 357 358
$(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)

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

362 363 364 365
$(obj)/treeImage.%: vmlinux $(obj)/%.dtb $(wrapperbits)
	$(call if_changed,wrap,treeboot-$*,,$(obj)/$*.dtb)

# Rule to build device tree blobs
366 367
$(obj)/%.dtb: $(src)/dts/%.dts FORCE
	$(call if_changed_dep,dtc)
368

369 370 371 372 373
# If there isn't a platform selected then just strip the vmlinux.
ifeq (,$(image-y))
image-y := vmlinux.strip
endif

374 375 376 377 378
$(obj)/zImage:		$(addprefix $(obj)/, $(image-y))
	@rm -f $@; ln $< $@
$(obj)/zImage.initrd:	$(addprefix $(obj)/, $(initrd-y))
	@rm -f $@; ln $< $@

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

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

# 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))
393 394 395 396 397 398 399 400 401

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
402
dts-installed		:= $(patsubst $(dtstree)/%, $(DESTDIR)$(WRAPPER_DTSDIR)/%, $(wildcard $(dtstree)/*.dts))
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 436 437 438 439

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)