Makefile 18.8 KB
Newer Older
1
# SPDX-License-Identifier: GPL-2.0
L
Linus Torvalds 已提交
2 3 4 5 6 7 8 9 10 11 12 13 14
# 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
15 16
#	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 已提交
17 18 19 20
#	To make it easier to setup a cross compiler,
#	CROSS32_COMPILE is setup as a prefix just like CROSS_COMPILE
#	in the toplevel makefile.

21
all: $(obj)/zImage
L
Linus Torvalds 已提交
22

23
compress-$(CONFIG_KERNEL_GZIP) := CONFIG_KERNEL_GZIP
24
compress-$(CONFIG_KERNEL_XZ)   := CONFIG_KERNEL_XZ
25

26
BOOTCFLAGS    := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
27
		 -fno-strict-aliasing -Os -msoft-float -pipe \
28
		 -fomit-frame-pointer -fno-builtin -fPIC -nostdinc \
29 30
		 -D$(compress-y)

31
BOOTCC := $(CC)
32 33
ifdef CONFIG_PPC64_BOOT_WRAPPER
BOOTCFLAGS	+= -m64
34 35 36 37 38
else
BOOTCFLAGS	+= -m32
ifdef CROSS32_COMPILE
    BOOTCC := $(CROSS32_COMPILE)gcc
endif
39
endif
40 41 42

BOOTCFLAGS	+= -isystem $(shell $(BOOTCC) -print-file-name=include)

43 44
ifdef CONFIG_CPU_BIG_ENDIAN
BOOTCFLAGS	+= -mbig-endian
45 46 47
else
BOOTCFLAGS	+= -mlittle-endian
BOOTCFLAGS	+= $(call cc-option,-mabi=elfv2)
48 49
endif

50
BOOTAFLAGS	:= -D__ASSEMBLY__ $(BOOTCFLAGS) -traditional -nostdinc
51

52 53 54 55
ifdef CONFIG_DEBUG_INFO
BOOTCFLAGS	+= -g
endif

56 57 58 59
ifeq ($(call cc-option-yn, -fstack-protector),y)
BOOTCFLAGS	+= -fno-stack-protector
endif

60
BOOTCFLAGS	+= -I$(objtree)/$(obj) -I$(srctree)/$(obj)
L
Linus Torvalds 已提交
61

62
DTC_FLAGS	?= -p 1024
63

64 65
$(obj)/4xx.o: BOOTCFLAGS += -mcpu=405
$(obj)/ebony.o: BOOTCFLAGS += -mcpu=405
66
$(obj)/cuboot-hotfoot.o: BOOTCFLAGS += -mcpu=405
67 68
$(obj)/cuboot-taishan.o: BOOTCFLAGS += -mcpu=405
$(obj)/cuboot-katmai.o: BOOTCFLAGS += -mcpu=405
69
$(obj)/cuboot-acadia.o: BOOTCFLAGS += -mcpu=405
70
$(obj)/treeboot-walnut.o: BOOTCFLAGS += -mcpu=405
71
$(obj)/treeboot-iss4xx.o: BOOTCFLAGS += -mcpu=405
72
$(obj)/treeboot-currituck.o: BOOTCFLAGS += -mcpu=405
73
$(obj)/treeboot-akebono.o: BOOTCFLAGS += -mcpu=405
74
$(obj)/virtex405-head.o: BOOTAFLAGS += -mcpu=405
75

76 77 78 79 80 81 82 83 84
# 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
85 86 87
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
88

89 90 91 92 93 94 95 96 97
$(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)): \
98 99
	$(addprefix $(obj)/,$(zliblinuxheader-y)) \
	$(addprefix $(obj)/,$(zlibheader-y))
100

101 102 103
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

104
$(addprefix $(obj)/,$(libfdt) libfdt-wrapper.o simpleboot.o epapr.o opal.o): \
105 106
	$(addprefix $(obj)/,$(libfdtheader))

107
src-wlib-y := string.S crt0.S stdio.c decompress.c main.c \
108
		$(libfdt) libfdt-wrapper.c \
109
		ns16550.c serial.c simple_alloc.c div64.S util.S \
110
		elf_util.c $(zlib-y) devtree.c stdlib.c \
111
		oflib.c ofconsole.c cuboot.c
112

113
src-wlib-$(CONFIG_PPC_MPC52XX) += mpc52xx-psc.c
114
src-wlib-$(CONFIG_PPC64_BOOT_WRAPPER) += opal-calls.S opal.c
115 116 117
ifndef CONFIG_PPC64_BOOT_WRAPPER
src-wlib-y += crtsavres.S
endif
118 119
src-wlib-$(CONFIG_40x) += 4xx.c planetcore.c
src-wlib-$(CONFIG_44x) += 4xx.c ebony.c bamboo.c
120
src-wlib-$(CONFIG_PPC_8xx) += mpc8xx.c planetcore.c fsl-soc.c
121
src-wlib-$(CONFIG_PPC_82xx) += pq2.c fsl-soc.c planetcore.c
122
src-wlib-$(CONFIG_EMBEDDED6xx) += mpsc.c mv64x60.c mv64x60_i2c.c ugecon.c fsl-soc.c
123
src-wlib-$(CONFIG_XILINX_VIRTEX) += uartlite.c
124
src-wlib-$(CONFIG_CPM) += cpm-serial.c
125

126
src-plat-y := of.c epapr.c
127 128 129 130 131 132 133 134 135 136
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 \
137
				treeboot-akebono.c \
138
				simpleboot.c fixed-head.S virtex.c
139
src-plat-$(CONFIG_PPC_8xx) += cuboot-8xx.c fixed-head.S ep88xc.c redboot-8xx.c
140 141 142 143 144 145 146
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 \
147
					fixed-head.S mvme5100.c
148 149
src-plat-$(CONFIG_AMIGAONE) += cuboot-amigaone.c
src-plat-$(CONFIG_PPC_PS3) += ps3-head.S ps3-hvcall.S ps3.c
150
src-plat-$(CONFIG_EPAPR_BOOT) += epapr.c epapr-wrapper.c
151 152 153
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
154
src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
155 156 157

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

L
Linus Torvalds 已提交
160 161
src-boot := $(addprefix $(obj)/, $(src-boot))
obj-boot := $(addsuffix .o, $(basename $(src-boot)))
162 163
obj-wlib := $(addsuffix .o, $(basename $(addprefix $(obj)/, $(src-wlib))))
obj-plat := $(addsuffix .o, $(basename $(addprefix $(obj)/, $(src-plat))))
164
obj-plat: $(libfdt)
O
Olaf Hering 已提交
165

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

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

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

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

178 179 180
$(addprefix $(obj)/,$(zlib-decomp-y)): $(obj)/%: $(srctree)/lib/%
	$(call cmd,copy_kern_src)

181 182 183 184 185 186
quiet_cmd_copy_libfdt = COPY    $@
      cmd_copy_libfdt = cp $< $@

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

187
$(obj)/empty.c:
188
	$(Q)touch $@
189

190
$(obj)/zImage.coff.lds $(obj)/zImage.ps3.lds : $(obj)/%: $(srctree)/$(src)/%.S
191
	$(Q)cp $< $@
O
Olaf Hering 已提交
192

193
clean-files := $(zlib-) $(zlibheader-) $(zliblinuxheader-) \
194
		$(zlib-decomp-) $(libfdt) $(libfdtheader) \
195
		empty.c zImage.coff.lds zImage.ps3.lds zImage.lds
O
Olaf Hering 已提交
196

L
Linus Torvalds 已提交
197
quiet_cmd_bootcc = BOOTCC  $@
198
      cmd_bootcc = $(BOOTCC) -Wp,-MD,$(depfile) $(BOOTCFLAGS) -c -o $@ $<
L
Linus Torvalds 已提交
199 200

quiet_cmd_bootas = BOOTAS  $@
201
      cmd_bootas = $(BOOTCC) -Wp,-MD,$(depfile) $(BOOTAFLAGS) -c -o $@ $<
L
Linus Torvalds 已提交
202

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

206 207
$(obj-libfdt): $(obj)/%.o: $(srctree)/scripts/dtc/libfdt/%.c FORCE
	$(call if_changed_dep,bootcc)
M
Milton Miller 已提交
208
$(patsubst %.c,%.o, $(filter %.c, $(src-boot))): %.o: %.c FORCE
209
	$(Q)mkdir -p $(dir $@)
L
Linus Torvalds 已提交
210
	$(call if_changed_dep,bootcc)
M
Milton Miller 已提交
211
$(patsubst %.S,%.o, $(filter %.S, $(src-boot))): %.o: %.S FORCE
212
	$(Q)mkdir -p $(dir $@)
L
Linus Torvalds 已提交
213 214
	$(call if_changed_dep,bootas)

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

218
hostprogs-y	:= addnote hack-coff mktree
L
Linus Torvalds 已提交
219

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

224 225
dtstree		:= $(srctree)/$(src)/dts

226
wrapper		:=$(srctree)/$(src)/wrapper
227
wrapperbits	:= $(extra-y) $(addprefix $(obj)/,addnote hack-coff mktree) \
M
Milton Miller 已提交
228
			$(wrapper) FORCE
L
Linus Torvalds 已提交
229

230 231
#############
# Bits for building various flavours of zImage
L
Linus Torvalds 已提交
232

233
ifneq ($(CROSS32_COMPILE),)
234
CROSSWRAP := -C "$(CROSS32_COMPILE)"
235 236
else
ifneq ($(CROSS_COMPILE),)
237
CROSSWRAP := -C "$(CROSS_COMPILE)"
238 239
endif
endif
L
Linus Torvalds 已提交
240

241
compressor-$(CONFIG_KERNEL_GZIP) := gz
242
compressor-$(CONFIG_KERNEL_XZ)   := xz
243

244
# args (to if_changed): 1 = (this rule), 2 = platform, 3 = dts 4=dtb 5=initrd
245
quiet_cmd_wrap	= WRAP    $@
246 247 248
      cmd_wrap	=$(CONFIG_SHELL) $(wrapper) -Z $(compressor-y) -c -o $@ -p $2 \
		$(CROSSWRAP) $(if $3, -s $3)$(if $4, -d $4)$(if $5, -i $5) \
		vmlinux
249

250
image-$(CONFIG_PPC_PSERIES)		+= zImage.pseries
251
image-$(CONFIG_PPC_POWERNV)		+= zImage.pseries
252
image-$(CONFIG_PPC_MAPLE)		+= zImage.maple
253
image-$(CONFIG_PPC_IBM_CELL_BLADE)	+= zImage.pseries
254
image-$(CONFIG_PPC_PS3)			+= dtbImage.ps3
255
image-$(CONFIG_PPC_CHRP)		+= zImage.chrp
256
image-$(CONFIG_PPC_EFIKA)		+= zImage.chrp
257
image-$(CONFIG_PPC_PMAC)		+= zImage.pmac
258
image-$(CONFIG_PPC_HOLLY)		+= dtbImage.holly
259
image-$(CONFIG_DEFAULT_UIMAGE)		+= uImage
260
image-$(CONFIG_EPAPR_BOOT)		+= zImage.epapr
261

262 263 264 265 266
#
# 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.
267
# Boards with newish u-boot firmware can use the uImage target above
268 269 270
#

# Board ports in arch/powerpc/platform/40x/Kconfig
271
image-$(CONFIG_EP405)			+= dtbImage.ep405
272
image-$(CONFIG_HOTFOOT)			+= cuImage.hotfoot
273
image-$(CONFIG_WALNUT)			+= treeImage.walnut
274
image-$(CONFIG_ACADIA)			+= cuImage.acadia
275
image-$(CONFIG_OBS600)			+= uImage.obs600
276 277

# Board ports in arch/powerpc/platform/44x/Kconfig
278
image-$(CONFIG_EBONY)			+= treeImage.ebony cuImage.ebony
J
Josh Boyer 已提交
279
image-$(CONFIG_BAMBOO)			+= treeImage.bamboo cuImage.bamboo
280
image-$(CONFIG_SAM440EP)		+= cuImage.sam440ep
281
image-$(CONFIG_SEQUOIA)			+= cuImage.sequoia
282
image-$(CONFIG_RAINIER)			+= cuImage.rainier
283
image-$(CONFIG_TAISHAN)			+= cuImage.taishan
284
image-$(CONFIG_KATMAI)			+= cuImage.katmai
285
image-$(CONFIG_WARP)			+= cuImage.warp
286
image-$(CONFIG_YOSEMITE)		+= cuImage.yosemite
287 288
image-$(CONFIG_ISS4xx)			+= treeImage.iss4xx \
					   treeImage.iss4xx-mpic
289
image-$(CONFIG_CURRITUCK)			+= treeImage.currituck
290
image-$(CONFIG_AKEBONO)			+= treeImage.akebono
291

292
# Board ports in arch/powerpc/platform/8xx/Kconfig
293 294
image-$(CONFIG_MPC86XADS)		+= cuImage.mpc866ads
image-$(CONFIG_MPC885ADS)		+= cuImage.mpc885ads
295
image-$(CONFIG_PPC_EP88XC)		+= dtbImage.ep88xc
296
image-$(CONFIG_PPC_ADDER875)		+= cuImage.adder875-uboot \
297
					   dtbImage.adder875-redboot
298 299

# Board ports in arch/powerpc/platform/52xx/Kconfig
300 301 302
image-$(CONFIG_PPC_LITE5200)		+= cuImage.lite5200 lite5200.dtb
image-$(CONFIG_PPC_LITE5200)		+= cuImage.lite5200b lite5200b.dtb
image-$(CONFIG_PPC_MEDIA5200)		+= cuImage.media5200 media5200.dtb
303 304 305 306

# Board ports in arch/powerpc/platform/82xx/Kconfig
image-$(CONFIG_MPC8272_ADS)		+= cuImage.mpc8272ads
image-$(CONFIG_PQ2FADS)			+= cuImage.pq2fads
307
image-$(CONFIG_EP8248E)			+= dtbImage.ep8248e
308 309 310 311 312 313 314 315

# 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
316
image-$(CONFIG_ASP834x)			+= dtbImage.asp834x-redboot
317 318 319 320 321

# 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 \
322
					   cuImage.mpc8548cds_32b \
323 324 325 326 327 328
					   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
329
image-$(CONFIG_TQM8548)			+= cuImage.tqm8548
330 331
image-$(CONFIG_TQM8555)			+= cuImage.tqm8555
image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
332
image-$(CONFIG_SBC8548)			+= cuImage.sbc8548
333
image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
334

335 336 337
# Board ports in arch/powerpc/platform/86xx/Kconfig
image-$(CONFIG_MVME7100)                += dtbImage.mvme7100

338 339 340
# Board ports in arch/powerpc/platform/embedded6xx/Kconfig
image-$(CONFIG_STORCENTER)		+= cuImage.storcenter
image-$(CONFIG_MPC7448HPC2)		+= cuImage.mpc7448hpc2
R
Remi Machet 已提交
341
image-$(CONFIG_PPC_C2K)			+= cuImage.c2k
342
image-$(CONFIG_GAMECUBE)		+= dtbImage.gamecube
A
Albert Herranz 已提交
343
image-$(CONFIG_WII)			+= dtbImage.wii
344
image-$(CONFIG_MVME5100)		+= dtbImage.mvme5100
345

346 347 348
# Board port in arch/powerpc/platform/amigaone/Kconfig
image-$(CONFIG_AMIGAONE)		+= cuImage.amigaone

349 350
# For 32-bit powermacs, build the COFF and miboot images
# as well as the ELF images.
351 352 353 354
ifeq ($(CONFIG_PPC32),y)
image-$(CONFIG_PPC_PMAC)	+= zImage.coff zImage.miboot
endif

355 356 357
# Allow extra targets to be added to the defconfig
image-y	+= $(subst ",,$(CONFIG_EXTRA_TARGETS))

M
Michal Marek 已提交
358
initrd-  := $(patsubst zImage%, zImage.initrd%, $(image-))
359
initrd-y := $(patsubst zImage%, zImage.initrd%, \
360
		$(patsubst dtbImage%, dtbImage.initrd%, \
361 362
		$(patsubst simpleImage%, simpleImage.initrd%, \
		$(patsubst treeImage%, treeImage.initrd%, $(image-y)))))
363
initrd-y := $(filter-out $(image-y), $(initrd-y))
M
Milton Miller 已提交
364
targets	+= $(image-y) $(initrd-y)
365

366 367 368 369 370
$(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).
371
$(obj)/zImage.initrd.%: vmlinux $(wrapperbits) FORCE
372
	$(call if_changed,wrap,$*,,,$(obj)/ramdisk.image.gz)
373

374
$(addprefix $(obj)/, $(sort $(filter zImage.%, $(image-y)))): vmlinux $(wrapperbits) FORCE
375
	$(call if_changed,wrap,$(subst $(obj)/zImage.,,$@))
376

377
# dtbImage% - a dtbImage is a zImage with an embedded device tree blob
378
$(obj)/dtbImage.initrd.%: vmlinux $(wrapperbits) $(obj)/%.dtb FORCE
379
	$(call if_changed,wrap,$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image.gz)
380

381
$(obj)/dtbImage.%: vmlinux $(wrapperbits) $(obj)/%.dtb FORCE
382
	$(call if_changed,wrap,$*,,$(obj)/$*.dtb)
383

384 385 386 387 388
# 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 $@

389
$(obj)/uImage: vmlinux $(wrapperbits) FORCE
390 391
	$(call if_changed,wrap,uboot)

392
$(obj)/uImage.initrd.%: vmlinux $(obj)/%.dtb $(wrapperbits) FORCE
393 394
	$(call if_changed,wrap,uboot-$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image.gz)

395
$(obj)/uImage.%: vmlinux $(obj)/%.dtb $(wrapperbits) FORCE
396 397
	$(call if_changed,wrap,uboot-$*,,$(obj)/$*.dtb)

398
$(obj)/cuImage.initrd.%: vmlinux $(obj)/%.dtb $(wrapperbits) FORCE
399 400
	$(call if_changed,wrap,cuboot-$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image.gz)

401
$(obj)/cuImage.%: vmlinux $(obj)/%.dtb $(wrapperbits) FORCE
402
	$(call if_changed,wrap,cuboot-$*,,$(obj)/$*.dtb)
403

404
$(obj)/simpleImage.initrd.%: vmlinux $(obj)/%.dtb $(wrapperbits) FORCE
405 406
	$(call if_changed,wrap,simpleboot-$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image.gz)

407
$(obj)/simpleImage.%: vmlinux $(obj)/%.dtb $(wrapperbits) FORCE
408 409
	$(call if_changed,wrap,simpleboot-$*,,$(obj)/$*.dtb)

410
$(obj)/treeImage.initrd.%: vmlinux $(obj)/%.dtb $(wrapperbits) FORCE
411
	$(call if_changed,wrap,treeboot-$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image.gz)
412

413
$(obj)/treeImage.%: vmlinux $(obj)/%.dtb $(wrapperbits) FORCE
414 415 416
	$(call if_changed,wrap,treeboot-$*,,$(obj)/$*.dtb)

# Rule to build device tree blobs
417 418
$(obj)/%.dtb: $(src)/dts/%.dts FORCE
	$(call if_changed_dep,dtc)
419

420 421 422
$(obj)/%.dtb: $(src)/dts/fsl/%.dts FORCE
	$(call if_changed_dep,dtc)

423 424 425 426 427
# If there isn't a platform selected then just strip the vmlinux.
ifeq (,$(image-y))
image-y := vmlinux.strip
endif

428
$(obj)/zImage:		$(addprefix $(obj)/, $(image-y))
429
	$(Q)rm -f $@; ln $< $@
430
$(obj)/zImage.initrd:	$(addprefix $(obj)/, $(initrd-y))
431
	$(Q)rm -f $@; ln $< $@
432

433
# Only install the vmlinux
A
Akinobu Mita 已提交
434
install: $(CONFIGURE) $(addprefix $(obj)/, $(image-y))
435 436 437 438
	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))
439
	sh -x $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" vmlinux System.map "$(INSTALL_PATH)" $^
440

441
# anything not in $(targets)
442 443
clean-files += $(image-) $(initrd-) cuImage.* dtbImage.* treeImage.* \
	zImage zImage.initrd zImage.chrp zImage.coff zImage.holly \
444
	zImage.miboot zImage.pmac zImage.pseries \
445
	zImage.maple simpleImage.* otheros.bld
446 447

# clean up files cached by wrapper
448 449
clean-kernel-base := vmlinux.strip vmlinux.bin
clean-kernel := $(addsuffix .gz,$(clean-kernel-base))
450
clean-kernel += $(addsuffix .xz,$(clean-kernel-base))
451 452
# If not absolute clean-files are relative to $(obj).
clean-files += $(addprefix $(objtree)/, $(clean-kernel))
453 454 455 456 457 458 459 460 461

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
462
dts-installed		:= $(patsubst $(dtstree)/%, $(DESTDIR)$(WRAPPER_DTSDIR)/%, $(wildcard $(dtstree)/*.dts))
463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499

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)