Makefile 18.3 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 71 72 73 74
# The pre-boot decompressors pull in a lot of kernel headers and other source
# files. This creates a bit of a dependency headache since we need to copy
# these files into the build dir, fix up any includes and ensure that dependent
# files are copied in the right order.

# these need to be seperate variables because they are copied out of different
# directories in the kernel tree. Sure you COULd merge them, but it's a
# cure-is-worse-than-disease situation.
zlib-decomp-$(CONFIG_KERNEL_GZIP) := decompress_inflate.c
75 76 77
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
78

79 80 81 82 83 84 85 86 87
$(addprefix $(obj)/, decompress.o): \
	$(addprefix $(obj)/,$(zlib-decomp-y))

$(addprefix $(obj)/, $(zlib-decomp-y)): \
	$(addprefix $(obj)/,$(zliblinuxheader-y)) \
	$(addprefix $(obj)/,$(zlibheader-y)) \
	$(addprefix $(obj)/,$(zlib-y))

$(addprefix $(obj)/,$(zlib-y)): \
88 89
	$(addprefix $(obj)/,$(zliblinuxheader-y)) \
	$(addprefix $(obj)/,$(zlibheader-y))
90

91 92 93
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

94
$(addprefix $(obj)/,$(libfdt) libfdt-wrapper.o simpleboot.o epapr.o opal.o): \
95 96
	$(addprefix $(obj)/,$(libfdtheader))

97
src-wlib-y := string.S crt0.S crtsavres.S stdio.c decompress.c main.c \
98
		$(libfdt) libfdt-wrapper.c \
99
		ns16550.c serial.c simple_alloc.c div64.S util.S \
100
		elf_util.c $(zlib-y) devtree.c stdlib.c \
101
		oflib.c ofconsole.c cuboot.c mpsc.c cpm-serial.c \
102
		uartlite.c mpc52xx-psc.c opal.c opal-calls.S
103 104
src-wlib-$(CONFIG_40x) += 4xx.c planetcore.c
src-wlib-$(CONFIG_44x) += 4xx.c ebony.c bamboo.c
105
src-wlib-$(CONFIG_8xx) += mpc8xx.c planetcore.c fsl-soc.c
106
src-wlib-$(CONFIG_PPC_82xx) += pq2.c fsl-soc.c planetcore.c
107
src-wlib-$(CONFIG_EMBEDDED6xx) += mv64x60.c mv64x60_i2c.c ugecon.c fsl-soc.c
108

109
src-plat-y := of.c epapr.c
110 111 112 113 114 115 116 117 118 119
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 \
120
				treeboot-akebono.c \
121 122 123 124 125 126 127 128 129
				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 \
130
					fixed-head.S mvme5100.c
131 132
src-plat-$(CONFIG_AMIGAONE) += cuboot-amigaone.c
src-plat-$(CONFIG_PPC_PS3) += ps3-head.S ps3-hvcall.S ps3.c
133
src-plat-$(CONFIG_EPAPR_BOOT) += epapr.c epapr-wrapper.c
134 135 136
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
137
src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
138 139 140

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

L
Linus Torvalds 已提交
143 144
src-boot := $(addprefix $(obj)/, $(src-boot))
obj-boot := $(addsuffix .o, $(basename $(src-boot)))
145 146
obj-wlib := $(addsuffix .o, $(basename $(addprefix $(obj)/, $(src-wlib))))
obj-plat := $(addsuffix .o, $(basename $(addprefix $(obj)/, $(src-plat))))
147
obj-plat: $(libfdt)
O
Olaf Hering 已提交
148

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

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

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

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

161 162 163
$(addprefix $(obj)/,$(zlib-decomp-y)): $(obj)/%: $(srctree)/lib/%
	$(call cmd,copy_kern_src)

164 165 166 167 168 169
quiet_cmd_copy_libfdt = COPY    $@
      cmd_copy_libfdt = cp $< $@

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

170
$(obj)/empty.c:
171
	$(Q)touch $@
172

173 174 175 176 177
$(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
178
	$(Q)cp $< $@
O
Olaf Hering 已提交
179

180
clean-files := $(zlib-) $(zlibheader-) $(zliblinuxheader-) \
181
		$(zlib-decomp-) $(libfdt) $(libfdtheader) \
182
		empty.c zImage.coff.lds zImage.ps3.lds zImage.lds
O
Olaf Hering 已提交
183

L
Linus Torvalds 已提交
184 185 186 187 188 189
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 $@ $<

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

193 194
$(obj-libfdt): $(obj)/%.o: $(srctree)/scripts/dtc/libfdt/%.c FORCE
	$(call if_changed_dep,bootcc)
M
Milton Miller 已提交
195
$(patsubst %.c,%.o, $(filter %.c, $(src-boot))): %.o: %.c FORCE
196
	$(Q)mkdir -p $(dir $@)
L
Linus Torvalds 已提交
197
	$(call if_changed_dep,bootcc)
M
Milton Miller 已提交
198
$(patsubst %.S,%.o, $(filter %.S, $(src-boot))): %.o: %.S FORCE
199
	$(Q)mkdir -p $(dir $@)
L
Linus Torvalds 已提交
200 201
	$(call if_changed_dep,bootas)

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

205
hostprogs-y	:= addnote hack-coff mktree
L
Linus Torvalds 已提交
206

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

211 212
dtstree		:= $(srctree)/$(src)/dts

213
wrapper		:=$(srctree)/$(src)/wrapper
214
wrapperbits	:= $(extra-y) $(addprefix $(obj)/,addnote hack-coff mktree) \
M
Milton Miller 已提交
215
			$(wrapper) FORCE
L
Linus Torvalds 已提交
216

217 218
#############
# Bits for building various flavours of zImage
L
Linus Torvalds 已提交
219

220
ifneq ($(CROSS32_COMPILE),)
221
CROSSWRAP := -C "$(CROSS32_COMPILE)"
222 223
else
ifneq ($(CROSS_COMPILE),)
224
CROSSWRAP := -C "$(CROSS_COMPILE)"
225 226
endif
endif
L
Linus Torvalds 已提交
227

228
# args (to if_changed): 1 = (this rule), 2 = platform, 3 = dts 4=dtb 5=initrd
229
quiet_cmd_wrap	= WRAP    $@
230 231
      cmd_wrap	=$(CONFIG_SHELL) $(wrapper) -c -o $@ -p $2 $(CROSSWRAP) \
		$(if $3, -s $3)$(if $4, -d $4)$(if $5, -i $5) vmlinux
232

233
image-$(CONFIG_PPC_PSERIES)		+= zImage.pseries
234
image-$(CONFIG_PPC_POWERNV)		+= zImage.pseries
235
image-$(CONFIG_PPC_MAPLE)		+= zImage.maple
236
image-$(CONFIG_PPC_IBM_CELL_BLADE)	+= zImage.pseries
237
image-$(CONFIG_PPC_PS3)			+= dtbImage.ps3
238
image-$(CONFIG_PPC_CHRP)		+= zImage.chrp
239
image-$(CONFIG_PPC_EFIKA)		+= zImage.chrp
240
image-$(CONFIG_PPC_PMAC)		+= zImage.pmac
241
image-$(CONFIG_PPC_HOLLY)		+= dtbImage.holly
242
image-$(CONFIG_DEFAULT_UIMAGE)		+= uImage
243
image-$(CONFIG_EPAPR_BOOT)		+= zImage.epapr
244

245 246 247 248 249
#
# 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.
250
# Boards with newish u-boot firmware can use the uImage target above
251 252 253
#

# Board ports in arch/powerpc/platform/40x/Kconfig
254
image-$(CONFIG_EP405)			+= dtbImage.ep405
255
image-$(CONFIG_HOTFOOT)			+= cuImage.hotfoot
256
image-$(CONFIG_WALNUT)			+= treeImage.walnut
257
image-$(CONFIG_ACADIA)			+= cuImage.acadia
258
image-$(CONFIG_OBS600)			+= uImage.obs600
259 260

# Board ports in arch/powerpc/platform/44x/Kconfig
261
image-$(CONFIG_EBONY)			+= treeImage.ebony cuImage.ebony
J
Josh Boyer 已提交
262
image-$(CONFIG_BAMBOO)			+= treeImage.bamboo cuImage.bamboo
263
image-$(CONFIG_SAM440EP)		+= cuImage.sam440ep
264
image-$(CONFIG_SEQUOIA)			+= cuImage.sequoia
265
image-$(CONFIG_RAINIER)			+= cuImage.rainier
266
image-$(CONFIG_TAISHAN)			+= cuImage.taishan
267
image-$(CONFIG_KATMAI)			+= cuImage.katmai
268
image-$(CONFIG_WARP)			+= cuImage.warp
269
image-$(CONFIG_YOSEMITE)		+= cuImage.yosemite
270 271
image-$(CONFIG_ISS4xx)			+= treeImage.iss4xx \
					   treeImage.iss4xx-mpic
272
image-$(CONFIG_CURRITUCK)			+= treeImage.currituck
273
image-$(CONFIG_AKEBONO)			+= treeImage.akebono
274

275
# Board ports in arch/powerpc/platform/8xx/Kconfig
276 277
image-$(CONFIG_MPC86XADS)		+= cuImage.mpc866ads
image-$(CONFIG_MPC885ADS)		+= cuImage.mpc885ads
278
image-$(CONFIG_PPC_EP88XC)		+= dtbImage.ep88xc
279
image-$(CONFIG_PPC_ADDER875)		+= cuImage.adder875-uboot \
280
					   dtbImage.adder875-redboot
281 282

# Board ports in arch/powerpc/platform/52xx/Kconfig
283 284 285
image-$(CONFIG_PPC_LITE5200)		+= cuImage.lite5200 lite5200.dtb
image-$(CONFIG_PPC_LITE5200)		+= cuImage.lite5200b lite5200b.dtb
image-$(CONFIG_PPC_MEDIA5200)		+= cuImage.media5200 media5200.dtb
286 287 288 289

# Board ports in arch/powerpc/platform/82xx/Kconfig
image-$(CONFIG_MPC8272_ADS)		+= cuImage.mpc8272ads
image-$(CONFIG_PQ2FADS)			+= cuImage.pq2fads
290
image-$(CONFIG_EP8248E)			+= dtbImage.ep8248e
291 292 293 294 295 296 297 298

# 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
299
image-$(CONFIG_ASP834x)			+= dtbImage.asp834x-redboot
300 301 302 303 304

# 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 \
305
					   cuImage.mpc8548cds_32b \
306 307 308 309 310 311
					   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
312
image-$(CONFIG_TQM8548)			+= cuImage.tqm8548
313 314
image-$(CONFIG_TQM8555)			+= cuImage.tqm8555
image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
315
image-$(CONFIG_SBC8548)			+= cuImage.sbc8548
316
image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
317

318 319 320
# Board ports in arch/powerpc/platform/86xx/Kconfig
image-$(CONFIG_MVME7100)                += dtbImage.mvme7100

321 322 323
# Board ports in arch/powerpc/platform/embedded6xx/Kconfig
image-$(CONFIG_STORCENTER)		+= cuImage.storcenter
image-$(CONFIG_MPC7448HPC2)		+= cuImage.mpc7448hpc2
R
Remi Machet 已提交
324
image-$(CONFIG_PPC_C2K)			+= cuImage.c2k
325
image-$(CONFIG_GAMECUBE)		+= dtbImage.gamecube
A
Albert Herranz 已提交
326
image-$(CONFIG_WII)			+= dtbImage.wii
327
image-$(CONFIG_MVME5100)		+= dtbImage.mvme5100
328

329 330 331
# Board port in arch/powerpc/platform/amigaone/Kconfig
image-$(CONFIG_AMIGAONE)		+= cuImage.amigaone

332 333
# For 32-bit powermacs, build the COFF and miboot images
# as well as the ELF images.
334 335 336 337
ifeq ($(CONFIG_PPC32),y)
image-$(CONFIG_PPC_PMAC)	+= zImage.coff zImage.miboot
endif

338 339 340
# Allow extra targets to be added to the defconfig
image-y	+= $(subst ",,$(CONFIG_EXTRA_TARGETS))

M
Michal Marek 已提交
341
initrd-  := $(patsubst zImage%, zImage.initrd%, $(image-))
342
initrd-y := $(patsubst zImage%, zImage.initrd%, \
343
		$(patsubst dtbImage%, dtbImage.initrd%, \
344 345
		$(patsubst simpleImage%, simpleImage.initrd%, \
		$(patsubst treeImage%, treeImage.initrd%, $(image-y)))))
346
initrd-y := $(filter-out $(image-y), $(initrd-y))
M
Milton Miller 已提交
347
targets	+= $(image-y) $(initrd-y)
348

349 350 351 352 353
$(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).
354 355
$(obj)/zImage.initrd.%: vmlinux $(wrapperbits)
	$(call if_changed,wrap,$*,,,$(obj)/ramdisk.image.gz)
356

357 358
$(addprefix $(obj)/, $(sort $(filter zImage.%, $(image-y)))): vmlinux $(wrapperbits)
	$(call if_changed,wrap,$(subst $(obj)/zImage.,,$@))
359

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

364 365
$(obj)/dtbImage.%: vmlinux $(wrapperbits) $(obj)/%.dtb
	$(call if_changed,wrap,$*,,$(obj)/$*.dtb)
366

367 368 369 370 371
# 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 $@

372 373 374
$(obj)/uImage: vmlinux $(wrapperbits)
	$(call if_changed,wrap,uboot)

375 376 377 378 379 380
$(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)

381 382 383
$(obj)/cuImage.initrd.%: vmlinux $(obj)/%.dtb $(wrapperbits)
	$(call if_changed,wrap,cuboot-$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image.gz)

384 385
$(obj)/cuImage.%: vmlinux $(obj)/%.dtb $(wrapperbits)
	$(call if_changed,wrap,cuboot-$*,,$(obj)/$*.dtb)
386

387 388 389 390 391 392
$(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)

393 394
$(obj)/treeImage.initrd.%: vmlinux $(obj)/%.dtb $(wrapperbits)
	$(call if_changed,wrap,treeboot-$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image.gz)
395

396 397 398 399
$(obj)/treeImage.%: vmlinux $(obj)/%.dtb $(wrapperbits)
	$(call if_changed,wrap,treeboot-$*,,$(obj)/$*.dtb)

# Rule to build device tree blobs
400 401
$(obj)/%.dtb: $(src)/dts/%.dts FORCE
	$(call if_changed_dep,dtc)
402

403 404 405
$(obj)/%.dtb: $(src)/dts/fsl/%.dts FORCE
	$(call if_changed_dep,dtc)

406 407 408 409 410
# If there isn't a platform selected then just strip the vmlinux.
ifeq (,$(image-y))
image-y := vmlinux.strip
endif

411
$(obj)/zImage:		$(addprefix $(obj)/, $(image-y))
412
	$(Q)rm -f $@; ln $< $@
413
$(obj)/zImage.initrd:	$(addprefix $(obj)/, $(initrd-y))
414
	$(Q)rm -f $@; ln $< $@
415

416
# Only install the vmlinux
A
Akinobu Mita 已提交
417
install: $(CONFIGURE) $(addprefix $(obj)/, $(image-y))
418 419 420 421
	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))
422
	sh -x $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" vmlinux System.map "$(INSTALL_PATH)" $^
423

424
# anything not in $(targets)
425 426
clean-files += $(image-) $(initrd-) cuImage.* dtbImage.* treeImage.* \
	zImage zImage.initrd zImage.chrp zImage.coff zImage.holly \
427
	zImage.miboot zImage.pmac zImage.pseries \
428
	zImage.maple simpleImage.* otheros.bld *.dtb
429 430

# clean up files cached by wrapper
431 432
clean-kernel-base := vmlinux.strip vmlinux.bin
clean-kernel := $(addsuffix .gz,$(clean-kernel-base))
433 434
# If not absolute clean-files are relative to $(obj).
clean-files += $(addprefix $(objtree)/, $(clean-kernel))
435 436 437 438 439 440 441 442 443

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
444
dts-installed		:= $(patsubst $(dtstree)/%, $(DESTDIR)$(WRAPPER_DTSDIR)/%, $(wildcard $(dtstree)/*.dts))
445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481

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)