Makefile 17.6 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
# the kernel's version of zlib pulls in a lot of other kernel headers
# which we don't provide inside the wrapper.
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
71

72 73 74
$(addprefix $(obj)/,$(zlib-y) cuboot-c2k.o gunzip_util.o main.o): \
	$(addprefix $(obj)/,$(zliblinuxheader-y)) \
	$(addprefix $(obj)/,$(zlibheader-y))
75

76 77 78
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

79
$(addprefix $(obj)/,$(libfdt) libfdt-wrapper.o simpleboot.o epapr.o opal.o): \
80 81
	$(addprefix $(obj)/,$(libfdtheader))

82
src-wlib-y := string.S crt0.S crtsavres.S stdio.c main.c \
83
		$(libfdt) libfdt-wrapper.c \
84
		ns16550.c serial.c simple_alloc.c div64.S util.S \
85
		gunzip_util.c elf_util.c $(zlib-y) devtree.c stdlib.c \
86
		oflib.c ofconsole.c cuboot.c mpsc.c cpm-serial.c \
87
		uartlite.c mpc52xx-psc.c opal.c opal-calls.S
88 89
src-wlib-$(CONFIG_40x) += 4xx.c planetcore.c
src-wlib-$(CONFIG_44x) += 4xx.c ebony.c bamboo.c
90
src-wlib-$(CONFIG_8xx) += mpc8xx.c planetcore.c fsl-soc.c
91
src-wlib-$(CONFIG_PPC_82xx) += pq2.c fsl-soc.c planetcore.c
92
src-wlib-$(CONFIG_EMBEDDED6xx) += mv64x60.c mv64x60_i2c.c ugecon.c fsl-soc.c
93

94
src-plat-y := of.c epapr.c
95 96 97 98 99 100 101 102 103 104
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 \
105
				treeboot-akebono.c \
106 107 108 109 110 111 112 113 114
				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 \
115
					fixed-head.S mvme5100.c
116 117
src-plat-$(CONFIG_AMIGAONE) += cuboot-amigaone.c
src-plat-$(CONFIG_PPC_PS3) += ps3-head.S ps3-hvcall.S ps3.c
118
src-plat-$(CONFIG_EPAPR_BOOT) += epapr.c epapr-wrapper.c
119 120 121
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
122
src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
123 124 125

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

L
Linus Torvalds 已提交
128 129
src-boot := $(addprefix $(obj)/, $(src-boot))
obj-boot := $(addsuffix .o, $(basename $(src-boot)))
130 131
obj-wlib := $(addsuffix .o, $(basename $(addprefix $(obj)/, $(src-wlib))))
obj-plat := $(addsuffix .o, $(basename $(addprefix $(obj)/, $(src-plat))))
132
obj-plat: $(libfdt)
O
Olaf Hering 已提交
133

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

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

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

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

146 147 148 149 150 151
quiet_cmd_copy_libfdt = COPY    $@
      cmd_copy_libfdt = cp $< $@

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

152
$(obj)/empty.c:
153
	$(Q)touch $@
154

155 156 157 158 159
$(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
160
	$(Q)cp $< $@
O
Olaf Hering 已提交
161

162
clean-files := $(zlib-) $(zlibheader-) $(zliblinuxheader-) \
163
		$(libfdt) $(libfdtheader) \
164
		empty.c zImage.coff.lds zImage.ps3.lds zImage.lds
O
Olaf Hering 已提交
165

L
Linus Torvalds 已提交
166 167 168 169 170 171
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 $@ $<

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

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

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

187
hostprogs-y	:= addnote hack-coff mktree
L
Linus Torvalds 已提交
188

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

193 194
dtstree		:= $(srctree)/$(src)/dts

195
wrapper		:=$(srctree)/$(src)/wrapper
196
wrapperbits	:= $(extra-y) $(addprefix $(obj)/,addnote hack-coff mktree) \
M
Milton Miller 已提交
197
			$(wrapper) FORCE
L
Linus Torvalds 已提交
198

199 200
#############
# Bits for building various flavours of zImage
L
Linus Torvalds 已提交
201

202
ifneq ($(CROSS32_COMPILE),)
203
CROSSWRAP := -C "$(CROSS32_COMPILE)"
204 205
else
ifneq ($(CROSS_COMPILE),)
206
CROSSWRAP := -C "$(CROSS_COMPILE)"
207 208
endif
endif
L
Linus Torvalds 已提交
209

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

215
image-$(CONFIG_PPC_PSERIES)		+= zImage.pseries
216
image-$(CONFIG_PPC_POWERNV)		+= zImage.pseries
217
image-$(CONFIG_PPC_MAPLE)		+= zImage.maple
218
image-$(CONFIG_PPC_IBM_CELL_BLADE)	+= zImage.pseries
219
image-$(CONFIG_PPC_PS3)			+= dtbImage.ps3
220
image-$(CONFIG_PPC_CHRP)		+= zImage.chrp
221
image-$(CONFIG_PPC_EFIKA)		+= zImage.chrp
222
image-$(CONFIG_PPC_PMAC)		+= zImage.pmac
223
image-$(CONFIG_PPC_HOLLY)		+= dtbImage.holly
224
image-$(CONFIG_DEFAULT_UIMAGE)		+= uImage
225
image-$(CONFIG_EPAPR_BOOT)		+= zImage.epapr
226

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

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

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

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

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

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

# 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
281
image-$(CONFIG_ASP834x)			+= dtbImage.asp834x-redboot
282 283 284 285 286

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

300 301 302
# Board ports in arch/powerpc/platform/86xx/Kconfig
image-$(CONFIG_MVME7100)                += dtbImage.mvme7100

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

311 312 313
# Board port in arch/powerpc/platform/amigaone/Kconfig
image-$(CONFIG_AMIGAONE)		+= cuImage.amigaone

314 315
# For 32-bit powermacs, build the COFF and miboot images
# as well as the ELF images.
316 317 318 319
ifeq ($(CONFIG_PPC32),y)
image-$(CONFIG_PPC_PMAC)	+= zImage.coff zImage.miboot
endif

320 321 322
# Allow extra targets to be added to the defconfig
image-y	+= $(subst ",,$(CONFIG_EXTRA_TARGETS))

M
Michal Marek 已提交
323
initrd-  := $(patsubst zImage%, zImage.initrd%, $(image-))
324
initrd-y := $(patsubst zImage%, zImage.initrd%, \
325
		$(patsubst dtbImage%, dtbImage.initrd%, \
326 327
		$(patsubst simpleImage%, simpleImage.initrd%, \
		$(patsubst treeImage%, treeImage.initrd%, $(image-y)))))
328
initrd-y := $(filter-out $(image-y), $(initrd-y))
M
Milton Miller 已提交
329
targets	+= $(image-y) $(initrd-y)
330

331 332 333 334 335
$(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).
336 337
$(obj)/zImage.initrd.%: vmlinux $(wrapperbits)
	$(call if_changed,wrap,$*,,,$(obj)/ramdisk.image.gz)
338

339 340
$(addprefix $(obj)/, $(sort $(filter zImage.%, $(image-y)))): vmlinux $(wrapperbits)
	$(call if_changed,wrap,$(subst $(obj)/zImage.,,$@))
341

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

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

349 350 351 352 353
# 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 $@

354 355 356
$(obj)/uImage: vmlinux $(wrapperbits)
	$(call if_changed,wrap,uboot)

357 358 359 360 361 362
$(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)

363 364 365
$(obj)/cuImage.initrd.%: vmlinux $(obj)/%.dtb $(wrapperbits)
	$(call if_changed,wrap,cuboot-$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image.gz)

366 367
$(obj)/cuImage.%: vmlinux $(obj)/%.dtb $(wrapperbits)
	$(call if_changed,wrap,cuboot-$*,,$(obj)/$*.dtb)
368

369 370 371 372 373 374
$(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)

375 376
$(obj)/treeImage.initrd.%: vmlinux $(obj)/%.dtb $(wrapperbits)
	$(call if_changed,wrap,treeboot-$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image.gz)
377

378 379 380 381
$(obj)/treeImage.%: vmlinux $(obj)/%.dtb $(wrapperbits)
	$(call if_changed,wrap,treeboot-$*,,$(obj)/$*.dtb)

# Rule to build device tree blobs
382 383
$(obj)/%.dtb: $(src)/dts/%.dts FORCE
	$(call if_changed_dep,dtc)
384

385 386 387
$(obj)/%.dtb: $(src)/dts/fsl/%.dts FORCE
	$(call if_changed_dep,dtc)

388 389 390 391 392
# If there isn't a platform selected then just strip the vmlinux.
ifeq (,$(image-y))
image-y := vmlinux.strip
endif

393
$(obj)/zImage:		$(addprefix $(obj)/, $(image-y))
394
	$(Q)rm -f $@; ln $< $@
395
$(obj)/zImage.initrd:	$(addprefix $(obj)/, $(initrd-y))
396
	$(Q)rm -f $@; ln $< $@
397

398
# Only install the vmlinux
A
Akinobu Mita 已提交
399
install: $(CONFIGURE) $(addprefix $(obj)/, $(image-y))
400 401 402 403
	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))
404
	sh -x $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" vmlinux System.map "$(INSTALL_PATH)" $^
405

406
# anything not in $(targets)
407 408
clean-files += $(image-) $(initrd-) cuImage.* dtbImage.* treeImage.* \
	zImage zImage.initrd zImage.chrp zImage.coff zImage.holly \
409
	zImage.miboot zImage.pmac zImage.pseries \
410
	zImage.maple simpleImage.* otheros.bld *.dtb
411 412 413 414 415 416

# 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))
417 418 419 420 421 422 423 424 425

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
426
dts-installed		:= $(patsubst $(dtstree)/%, $(DESTDIR)$(WRAPPER_DTSDIR)/%, $(wildcard $(dtstree)/*.dts))
427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463

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)