Makefile 17.1 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 27 28 29 30 31 32
		 -isystem $(shell $(CROSS32CC) -print-file-name=include)
ifdef CONFIG_PPC64_BOOT_WRAPPER
BOOTCFLAGS	+= -m64
endif
ifdef CONFIG_CPU_BIG_ENDIAN
BOOTCFLAGS	+= -mbig-endian
endif

33
BOOTAFLAGS	:= -D__ASSEMBLY__ $(BOOTCFLAGS) -traditional -nostdinc
34

35 36 37 38
ifdef CONFIG_DEBUG_INFO
BOOTCFLAGS	+= -g
endif

39 40 41 42
ifeq ($(call cc-option-yn, -fstack-protector),y)
BOOTCFLAGS	+= -fno-stack-protector
endif

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

45
DTC_FLAGS	?= -p 1024
46

47 48
$(obj)/4xx.o: BOOTCFLAGS += -mcpu=405
$(obj)/ebony.o: BOOTCFLAGS += -mcpu=405
49
$(obj)/cuboot-hotfoot.o: BOOTCFLAGS += -mcpu=405
50 51
$(obj)/cuboot-taishan.o: BOOTCFLAGS += -mcpu=405
$(obj)/cuboot-katmai.o: BOOTCFLAGS += -mcpu=405
52
$(obj)/cuboot-acadia.o: BOOTCFLAGS += -mcpu=405
53
$(obj)/treeboot-walnut.o: BOOTCFLAGS += -mcpu=405
54
$(obj)/treeboot-iss4xx.o: BOOTCFLAGS += -mcpu=405
55
$(obj)/treeboot-currituck.o: BOOTCFLAGS += -mcpu=405
56
$(obj)/virtex405-head.o: BOOTAFLAGS += -mcpu=405
57

58

59 60
zlib       := inffast.c inflate.c inftrees.c
zlibheader := inffast.h inffixed.h inflate.h inftrees.h infutil.h
O
Olaf Hering 已提交
61 62
zliblinuxheader := zlib.h zconf.h zutil.h

63
$(addprefix $(obj)/,$(zlib) cuboot-c2k.o gunzip_util.o main.o): \
64
	$(addprefix $(obj)/,$(zliblinuxheader)) $(addprefix $(obj)/,$(zlibheader))
65

66 67 68
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

69
$(addprefix $(obj)/,$(libfdt) libfdt-wrapper.o simpleboot.o epapr.o): \
70 71
	$(addprefix $(obj)/,$(libfdtheader))

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

84
src-plat-y := of.c epapr.c
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
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 \
104
					fixed-head.S mvme5100.c
105 106
src-plat-$(CONFIG_AMIGAONE) += cuboot-amigaone.c
src-plat-$(CONFIG_PPC_PS3) += ps3-head.S ps3-hvcall.S ps3.c
107
src-plat-$(CONFIG_EPAPR_BOOT) += epapr.c epapr-wrapper.c
108 109 110 111 112
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
113 114 115

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

L
Linus Torvalds 已提交
118 119
src-boot := $(addprefix $(obj)/, $(src-boot))
obj-boot := $(addsuffix .o, $(basename $(src-boot)))
120 121
obj-wlib := $(addsuffix .o, $(basename $(addprefix $(obj)/, $(src-wlib))))
obj-plat := $(addsuffix .o, $(basename $(addprefix $(obj)/, $(src-plat))))
122
obj-plat: $(libfdt)
O
Olaf Hering 已提交
123 124

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

quiet_cmd_copy_zlibheader = COPY    $@
128
      cmd_copy_zlibheader = sed "s@<linux/\([^>]*\).*@\"\1\"@" $< > $@
O
Olaf Hering 已提交
129 130
# stddef.h for NULL
quiet_cmd_copy_zliblinuxheader = COPY    $@
131
      cmd_copy_zliblinuxheader = sed "s@<linux/string.h>@\"string.h\"@;s@<linux/kernel.h>@<stddef.h>@;s@<linux/\([^>]*\).*@\"\1\"@" $< > $@
O
Olaf Hering 已提交
132 133 134 135 136 137 138 139 140 141

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

142 143 144 145 146 147
quiet_cmd_copy_libfdt = COPY    $@
      cmd_copy_libfdt = cp $< $@

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

148 149 150
$(obj)/empty.c:
	@touch $@

151 152 153 154 155
$(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
156
	@cp $< $@
O
Olaf Hering 已提交
157

158
clean-files := $(zlib) $(zlibheader) $(zliblinuxheader) \
159
		$(libfdt) $(libfdtheader) \
160
		empty.c zImage.coff.lds zImage.ps3.lds zImage.lds
O
Olaf Hering 已提交
161

L
Linus Torvalds 已提交
162 163 164 165 166 167
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 $@ $<

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

171 172
$(obj-libfdt): $(obj)/%.o: $(srctree)/scripts/dtc/libfdt/%.c FORCE
	$(call if_changed_dep,bootcc)
M
Milton Miller 已提交
173
$(patsubst %.c,%.o, $(filter %.c, $(src-boot))): %.o: %.c FORCE
174
	$(Q)mkdir -p $(dir $@)
L
Linus Torvalds 已提交
175
	$(call if_changed_dep,bootcc)
M
Milton Miller 已提交
176
$(patsubst %.S,%.o, $(filter %.S, $(src-boot))): %.o: %.S FORCE
177
	$(Q)mkdir -p $(dir $@)
L
Linus Torvalds 已提交
178 179
	$(call if_changed_dep,bootas)

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

183
hostprogs-y	:= addnote hack-coff mktree
L
Linus Torvalds 已提交
184

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

189 190
dtstree		:= $(srctree)/$(src)/dts

191
wrapper		:=$(srctree)/$(src)/wrapper
192
wrapperbits	:= $(extra-y) $(addprefix $(obj)/,addnote hack-coff mktree) \
M
Milton Miller 已提交
193
			$(wrapper) FORCE
L
Linus Torvalds 已提交
194

195 196
#############
# Bits for building various flavours of zImage
L
Linus Torvalds 已提交
197

198
ifneq ($(CROSS32_COMPILE),)
199
CROSSWRAP := -C "$(CROSS32_COMPILE)"
200 201
else
ifneq ($(CROSS_COMPILE),)
202
CROSSWRAP := -C "$(CROSS_COMPILE)"
203 204
endif
endif
L
Linus Torvalds 已提交
205

206
# args (to if_changed): 1 = (this rule), 2 = platform, 3 = dts 4=dtb 5=initrd
207
quiet_cmd_wrap	= WRAP    $@
208 209
      cmd_wrap	=$(CONFIG_SHELL) $(wrapper) -c -o $@ -p $2 $(CROSSWRAP) \
		$(if $3, -s $3)$(if $4, -d $4)$(if $5, -i $5) vmlinux
210

211
image-$(CONFIG_PPC_PSERIES)		+= zImage.pseries
212
image-$(CONFIG_PPC_POWERNV)		+= zImage.pseries
213
image-$(CONFIG_PPC_MAPLE)		+= zImage.maple
214
image-$(CONFIG_PPC_IBM_CELL_BLADE)	+= zImage.pseries
215
image-$(CONFIG_PPC_PS3)			+= dtbImage.ps3
I
Ishizaki Kou 已提交
216
image-$(CONFIG_PPC_CELLEB)		+= zImage.pseries
217
image-$(CONFIG_PPC_CELL_QPACE)		+= zImage.pseries
218
image-$(CONFIG_PPC_CHRP)		+= zImage.chrp
219
image-$(CONFIG_PPC_EFIKA)		+= zImage.chrp
220
image-$(CONFIG_PPC_PMAC)		+= zImage.pmac
221
image-$(CONFIG_PPC_HOLLY)		+= dtbImage.holly
222
image-$(CONFIG_DEFAULT_UIMAGE)		+= uImage
223
image-$(CONFIG_EPAPR_BOOT)		+= zImage.epapr
224

225 226 227 228 229
#
# 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.
230
# Boards with newish u-boot firmware can use the uImage target above
231 232 233
#

# Board ports in arch/powerpc/platform/40x/Kconfig
234
image-$(CONFIG_EP405)			+= dtbImage.ep405
235
image-$(CONFIG_HOTFOOT)			+= cuImage.hotfoot
236
image-$(CONFIG_WALNUT)			+= treeImage.walnut
237
image-$(CONFIG_ACADIA)			+= cuImage.acadia
238
image-$(CONFIG_OBS600)			+= uImage.obs600
239 240

# Board ports in arch/powerpc/platform/44x/Kconfig
241
image-$(CONFIG_EBONY)			+= treeImage.ebony cuImage.ebony
J
Josh Boyer 已提交
242
image-$(CONFIG_BAMBOO)			+= treeImage.bamboo cuImage.bamboo
243
image-$(CONFIG_SAM440EP)		+= cuImage.sam440ep
244
image-$(CONFIG_SEQUOIA)			+= cuImage.sequoia
245
image-$(CONFIG_RAINIER)			+= cuImage.rainier
246
image-$(CONFIG_TAISHAN)			+= cuImage.taishan
247
image-$(CONFIG_KATMAI)			+= cuImage.katmai
248
image-$(CONFIG_WARP)			+= cuImage.warp
249
image-$(CONFIG_YOSEMITE)		+= cuImage.yosemite
250 251
image-$(CONFIG_ISS4xx)			+= treeImage.iss4xx \
					   treeImage.iss4xx-mpic
252
image-$(CONFIG_CURRITUCK)			+= treeImage.currituck
253

254
# Board ports in arch/powerpc/platform/8xx/Kconfig
255 256
image-$(CONFIG_MPC86XADS)		+= cuImage.mpc866ads
image-$(CONFIG_MPC885ADS)		+= cuImage.mpc885ads
257
image-$(CONFIG_PPC_EP88XC)		+= dtbImage.ep88xc
258
image-$(CONFIG_PPC_ADDER875)		+= cuImage.adder875-uboot \
259
					   dtbImage.adder875-redboot
260 261

# Board ports in arch/powerpc/platform/52xx/Kconfig
262 263 264
image-$(CONFIG_PPC_LITE5200)		+= cuImage.lite5200 lite5200.dtb
image-$(CONFIG_PPC_LITE5200)		+= cuImage.lite5200b lite5200b.dtb
image-$(CONFIG_PPC_MEDIA5200)		+= cuImage.media5200 media5200.dtb
265 266 267 268

# Board ports in arch/powerpc/platform/82xx/Kconfig
image-$(CONFIG_MPC8272_ADS)		+= cuImage.mpc8272ads
image-$(CONFIG_PQ2FADS)			+= cuImage.pq2fads
269
image-$(CONFIG_EP8248E)			+= dtbImage.ep8248e
270 271 272 273 274 275 276 277

# 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
278
image-$(CONFIG_ASP834x)			+= dtbImage.asp834x-redboot
279 280 281 282 283

# 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 \
284
					   cuImage.mpc8548cds_32b \
285 286 287 288 289 290
					   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
291
image-$(CONFIG_TQM8548)			+= cuImage.tqm8548
292 293
image-$(CONFIG_TQM8555)			+= cuImage.tqm8555
image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
294
image-$(CONFIG_SBC8548)			+= cuImage.sbc8548
295
image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
296 297 298 299

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

305 306 307
# Board port in arch/powerpc/platform/amigaone/Kconfig
image-$(CONFIG_AMIGAONE)		+= cuImage.amigaone

308 309
# For 32-bit powermacs, build the COFF and miboot images
# as well as the ELF images.
310 311 312 313
ifeq ($(CONFIG_PPC32),y)
image-$(CONFIG_PPC_PMAC)	+= zImage.coff zImage.miboot
endif

314 315 316
# Allow extra targets to be added to the defconfig
image-y	+= $(subst ",,$(CONFIG_EXTRA_TARGETS))

M
Milton Miller 已提交
317
initrd-  := $(patsubst zImage%, zImage.initrd%, $(image-n) $(image-))
318
initrd-y := $(patsubst zImage%, zImage.initrd%, \
319
		$(patsubst dtbImage%, dtbImage.initrd%, \
320 321
		$(patsubst simpleImage%, simpleImage.initrd%, \
		$(patsubst treeImage%, treeImage.initrd%, $(image-y)))))
322
initrd-y := $(filter-out $(image-y), $(initrd-y))
M
Milton Miller 已提交
323
targets	+= $(image-y) $(initrd-y)
324

325 326 327 328 329
$(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).
330 331
$(obj)/zImage.initrd.%: vmlinux $(wrapperbits)
	$(call if_changed,wrap,$*,,,$(obj)/ramdisk.image.gz)
332

333 334 335
$(obj)/zImage.%: vmlinux $(wrapperbits)
	$(call if_changed,wrap,$*)

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

340 341
$(obj)/dtbImage.%: vmlinux $(wrapperbits) $(obj)/%.dtb
	$(call if_changed,wrap,$*,,$(obj)/$*.dtb)
342

343 344 345 346 347
# 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 $@

348 349 350
$(obj)/uImage: vmlinux $(wrapperbits)
	$(call if_changed,wrap,uboot)

351 352 353 354 355 356
$(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)

357 358 359
$(obj)/cuImage.initrd.%: vmlinux $(obj)/%.dtb $(wrapperbits)
	$(call if_changed,wrap,cuboot-$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image.gz)

360 361
$(obj)/cuImage.%: vmlinux $(obj)/%.dtb $(wrapperbits)
	$(call if_changed,wrap,cuboot-$*,,$(obj)/$*.dtb)
362

363 364 365 366 367 368
$(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)

369 370
$(obj)/treeImage.initrd.%: vmlinux $(obj)/%.dtb $(wrapperbits)
	$(call if_changed,wrap,treeboot-$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image.gz)
371

372 373 374 375
$(obj)/treeImage.%: vmlinux $(obj)/%.dtb $(wrapperbits)
	$(call if_changed,wrap,treeboot-$*,,$(obj)/$*.dtb)

# Rule to build device tree blobs
376 377
$(obj)/%.dtb: $(src)/dts/%.dts FORCE
	$(call if_changed_dep,dtc)
378

379 380 381 382 383
# If there isn't a platform selected then just strip the vmlinux.
ifeq (,$(image-y))
image-y := vmlinux.strip
endif

384 385 386 387 388
$(obj)/zImage:		$(addprefix $(obj)/, $(image-y))
	@rm -f $@; ln $< $@
$(obj)/zImage.initrd:	$(addprefix $(obj)/, $(initrd-y))
	@rm -f $@; ln $< $@

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

392
# anything not in $(targets)
393 394
clean-files += $(image-) $(initrd-) cuImage.* dtbImage.* treeImage.* \
	zImage zImage.initrd zImage.chrp zImage.coff zImage.holly \
395
	zImage.miboot zImage.pmac zImage.pseries \
396
	zImage.maple simpleImage.* otheros.bld *.dtb
397 398 399 400 401 402

# 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))
403 404 405 406 407 408 409 410 411

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
412
dts-installed		:= $(patsubst $(dtstree)/%, $(DESTDIR)$(WRAPPER_DTSDIR)/%, $(wildcard $(dtstree)/*.dts))
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 440 441 442 443 444 445 446 447 448 449

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)