Makefile 16.6 KB
Newer Older
L
Linus Torvalds 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14
#
# This file is subject to the terms and conditions of the GNU General Public
# License.  See the file "COPYING" in the main directory of this archive
# for more details.
#
# Copyright (C) 1994, 95, 96, 2003 by Ralf Baechle
# DECStation modifications by Paul M. Antoine, 1996
# Copyright (C) 2002, 2003, 2004  Maciej W. Rozycki
#
# This file is included by the global makefile so that you can add your own
# architecture-specific flags and dependencies. Remember to do have actions
# for "archclean" cleaning up for this architecture.
#

M
Matt Redfearn 已提交
15 16 17
archscripts: scripts_basic
	$(Q)$(MAKE) $(build)=arch/mips/boot/tools relocs

A
Adrian Bunk 已提交
18 19
KBUILD_DEFCONFIG := ip22_defconfig

L
Linus Torvalds 已提交
20 21 22 23
#
# Select the object file format to substitute into the linker script.
#
ifdef CONFIG_CPU_LITTLE_ENDIAN
24 25
32bit-tool-archpref	= mipsel
64bit-tool-archpref	= mips64el
L
Linus Torvalds 已提交
26 27 28 29 30
32bit-bfd		= elf32-tradlittlemips
64bit-bfd		= elf64-tradlittlemips
32bit-emul		= elf32ltsmip
64bit-emul		= elf64ltsmip
else
31 32
32bit-tool-archpref	= mips
64bit-tool-archpref	= mips64
L
Linus Torvalds 已提交
33 34 35 36 37 38
32bit-bfd		= elf32-tradbigmips
64bit-bfd		= elf64-tradbigmips
32bit-emul		= elf32btsmip
64bit-emul		= elf64btsmip
endif

39
ifdef CONFIG_32BIT
40
tool-archpref		= $(32bit-tool-archpref)
L
Linus Torvalds 已提交
41 42
UTS_MACHINE		:= mips
endif
43
ifdef CONFIG_64BIT
44
tool-archpref		= $(64bit-tool-archpref)
L
Linus Torvalds 已提交
45 46 47
UTS_MACHINE		:= mips64
endif

48 49
ifneq ($(SUBARCH),$(ARCH))
  ifeq ($(CROSS_COMPILE),)
50
    CROSS_COMPILE := $(call cc-cross-prefix, $(tool-archpref)-linux-  $(tool-archpref)-linux-gnu-  $(tool-archpref)-unknown-linux-gnu-)
51
  endif
L
Linus Torvalds 已提交
52 53
endif

54 55 56 57 58 59 60
ifdef CONFIG_FUNCTION_GRAPH_TRACER
  ifndef KBUILD_MCOUNT_RA_ADDRESS
    ifeq ($(call cc-option-yn,-mmcount-ra-address), y)
      cflags-y += -mmcount-ra-address -DKBUILD_MCOUNT_RA_ADDRESS
    endif
  endif
endif
61
cflags-y += $(call cc-option, -mno-check-zero-division)
62

R
Ralf Baechle 已提交
63
ifdef CONFIG_32BIT
L
Linus Torvalds 已提交
64 65 66
ld-emul			= $(32bit-emul)
vmlinux-32		= vmlinux
vmlinux-64		= vmlinux.64
R
Ralf Baechle 已提交
67 68

cflags-y		+= -mabi=32
R
Ralf Baechle 已提交
69
endif
L
Linus Torvalds 已提交
70

R
Ralf Baechle 已提交
71 72 73 74 75
ifdef CONFIG_64BIT
ld-emul			= $(64bit-emul)
vmlinux-32		= vmlinux.32
vmlinux-64		= vmlinux

R
Ralf Baechle 已提交
76
cflags-y		+= -mabi=64
L
Linus Torvalds 已提交
77 78
endif

79 80
all-$(CONFIG_BOOT_ELF32)	:= $(vmlinux-32)
all-$(CONFIG_BOOT_ELF64)	:= $(vmlinux-64)
81
all-$(CONFIG_SYS_SUPPORTS_ZBOOT)+= vmlinuz
R
Ralf Baechle 已提交
82

L
Linus Torvalds 已提交
83 84 85 86 87 88 89 90 91 92 93
#
# GCC uses -G 0 -mabicalls -fpic as default.  We don't want PIC in the kernel
# code since it only slows down the whole thing.  At some point we might make
# use of global pointer optimizations but their use of $28 conflicts with
# the current pointer optimization.
#
# The DECStation requires an ECOFF kernel for remote booting, other MIPS
# machines may also.  Since BFD is incredibly buggy with respect to
# crossformat linking we rely on the elf2ecoff tool for format conversion.
#
cflags-y			+= -G 0 -mno-abicalls -fno-pic -pipe
R
Ralf Baechle 已提交
94
cflags-y			+= -msoft-float
T
Thiemo Seufer 已提交
95
LDFLAGS_vmlinux			+= -G 0 -static -n -nostdlib
96 97
KBUILD_AFLAGS_MODULE		+= -mlong-calls
KBUILD_CFLAGS_MODULE		+= -mlong-calls
L
Linus Torvalds 已提交
98

99 100 101 102
ifeq ($(CONFIG_RELOCATABLE),y)
LDFLAGS_vmlinux			+= --emit-relocs
endif

103 104 105 106 107 108 109 110 111
#
# pass -msoft-float to GAS if it supports it.  However on newer binutils
# (specifically newer than 2.24.51.20140728) we then also need to explicitly
# set ".set hardfloat" in all files which manipulate floating point registers.
#
ifneq ($(call as-option,-Wa$(comma)-msoft-float,),)
	cflags-y		+= -DGAS_HAS_SET_HARDFLOAT -Wa,-msoft-float
endif

112 113
cflags-y += -ffreestanding

114 115 116 117 118 119
#
# We explicitly add the endianness specifier if needed, this allows
# to compile kernels with a toolchain for the other endianness. We
# carefully avoid to add it redundantly because gcc 3.3/3.4 complains
# when fed the toolchain default!
#
L
Lucas De Marchi 已提交
120
# Certain gcc versions up to gcc 4.1.1 (probably 4.2-subversion as of
121
# 2006-10-10 don't properly change the predefined symbols if -EB / -EL
122 123 124 125 126 127 128 129 130
# are used, so we kludge that here.  A bug has been filed at
# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29413.
#
undef-all += -UMIPSEB -U_MIPSEB -U__MIPSEB -U__MIPSEB__
undef-all += -UMIPSEL -U_MIPSEL -U__MIPSEL -U__MIPSEL__
predef-be += -DMIPSEB -D_MIPSEB -D__MIPSEB -D__MIPSEB__
predef-le += -DMIPSEL -D_MIPSEL -D__MIPSEL -D__MIPSEL__
cflags-$(CONFIG_CPU_BIG_ENDIAN)		+= $(shell $(CC) -dumpmachine |grep -q 'mips.*el-.*' && echo -EB $(undef-all) $(predef-be))
cflags-$(CONFIG_CPU_LITTLE_ENDIAN)	+= $(shell $(CC) -dumpmachine |grep -q 'mips.*el-.*' || echo -EL $(undef-all) $(predef-le))
131

132 133
cflags-$(CONFIG_SB1XXX_CORELIS)	+= $(call cc-option,-mno-sched-prolog) \
				   -fno-omit-frame-pointer
L
Linus Torvalds 已提交
134 135 136
#
# CPU-dependent compiler/assembler options for optimization.
#
R
Ralf Baechle 已提交
137 138 139 140 141 142 143
cflags-$(CONFIG_CPU_R3000)	+= -march=r3000
cflags-$(CONFIG_CPU_TX39XX)	+= -march=r3900
cflags-$(CONFIG_CPU_R6000)	+= -march=r6000 -Wa,--trap
cflags-$(CONFIG_CPU_R4300)	+= -march=r4300 -Wa,--trap
cflags-$(CONFIG_CPU_VR41XX)	+= -march=r4100 -Wa,--trap
cflags-$(CONFIG_CPU_R4X00)	+= -march=r4600 -Wa,--trap
cflags-$(CONFIG_CPU_TX49XX)	+= -march=r4600 -Wa,--trap
144
cflags-$(CONFIG_CPU_MIPS32_R1)	+= $(call cc-option,-march=mips32,-mips32 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS32) \
R
Ralf Baechle 已提交
145
			-Wa,-mips32 -Wa,--trap
146
cflags-$(CONFIG_CPU_MIPS32_R2)	+= $(call cc-option,-march=mips32r2,-mips32r2 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS32) \
R
Ralf Baechle 已提交
147
			-Wa,-mips32r2 -Wa,--trap
148
cflags-$(CONFIG_CPU_MIPS32_R6)	+= -march=mips32r6 -Wa,--trap
149
cflags-$(CONFIG_CPU_MIPS64_R1)	+= $(call cc-option,-march=mips64,-mips64 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS64) \
R
Ralf Baechle 已提交
150
			-Wa,-mips64 -Wa,--trap
151
cflags-$(CONFIG_CPU_MIPS64_R2)	+= $(call cc-option,-march=mips64r2,-mips64r2 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS64) \
R
Ralf Baechle 已提交
152
			-Wa,-mips64r2 -Wa,--trap
153
cflags-$(CONFIG_CPU_MIPS64_R6)	+= -march=mips64r6 -Wa,--trap
R
Ralf Baechle 已提交
154
cflags-$(CONFIG_CPU_R5000)	+= -march=r5000 -Wa,--trap
155
cflags-$(CONFIG_CPU_R5432)	+= $(call cc-option,-march=r5400,-march=r5000) \
L
Linus Torvalds 已提交
156
			-Wa,--trap
157 158
cflags-$(CONFIG_CPU_R5500)	+= $(call cc-option,-march=r5500,-march=r5000) \
			-Wa,--trap
159
cflags-$(CONFIG_CPU_NEVADA)	+= $(call cc-option,-march=rm5200,-march=r5000) \
L
Linus Torvalds 已提交
160
			-Wa,--trap
R
Ralf Baechle 已提交
161
cflags-$(CONFIG_CPU_RM7000)	+= $(call cc-option,-march=rm7000,-march=r5000) \
L
Linus Torvalds 已提交
162
			-Wa,--trap
163
cflags-$(CONFIG_CPU_SB1)	+= $(call cc-option,-march=sb1,-march=r5000) \
L
Linus Torvalds 已提交
164
			-Wa,--trap
165 166
cflags-$(CONFIG_CPU_SB1)	+= $(call cc-option,-mno-mdmx)
cflags-$(CONFIG_CPU_SB1)	+= $(call cc-option,-mno-mips3d)
R
Ralf Baechle 已提交
167 168
cflags-$(CONFIG_CPU_R8000)	+= -march=r8000 -Wa,--trap
cflags-$(CONFIG_CPU_R10000)	+= $(call cc-option,-march=r10000,-march=r8000) \
L
Linus Torvalds 已提交
169
			-Wa,--trap
170 171 172 173
cflags-$(CONFIG_CPU_CAVIUM_OCTEON) += $(call cc-option,-march=octeon) -Wa,--trap
ifeq (,$(findstring march=octeon, $(cflags-$(CONFIG_CPU_CAVIUM_OCTEON))))
cflags-$(CONFIG_CPU_CAVIUM_OCTEON) += -Wa,-march=octeon
endif
174
cflags-$(CONFIG_CAVIUM_CN63XXP1) += -Wa,-mfix-cn63xxp1
175
cflags-$(CONFIG_CPU_BMIPS)	+= -march=mips32 -Wa,-mips32 -Wa,--trap
L
Linus Torvalds 已提交
176

177 178 179 180
cflags-$(CONFIG_CPU_R4000_WORKAROUNDS)	+= $(call cc-option,-mfix-r4000,)
cflags-$(CONFIG_CPU_R4400_WORKAROUNDS)	+= $(call cc-option,-mfix-r4400,)
cflags-$(CONFIG_CPU_DADDI_WORKAROUNDS)	+= $(call cc-option,-mno-daddi,)

181 182 183 184 185 186 187 188 189
# For smartmips configurations, there are hundreds of warnings due to ISA overrides
# in assembly and header files. smartmips is only supported for MIPS32r1 onwards
# and there is no support for 64-bit. Various '.set mips2' or '.set mips3' or
# similar directives in the kernel will spam the build logs with the following warnings:
# Warning: the `smartmips' extension requires MIPS32 revision 1 or greater
# or
# Warning: the 64-bit MIPS architecture does not support the `smartmips' extension
# Pass -Wa,--no-warn to disable all assembler warnings until the kernel code has
# been fixed properly.
190 191 192 193 194 195 196 197 198
mips-cflags				:= $(cflags-y)
ifeq ($(CONFIG_CPU_HAS_SMARTMIPS),y)
smartmips-ase				:= $(call cc-option-yn,$(mips-cflags) -msmartmips)
cflags-$(smartmips-ase)			+= -msmartmips -Wa,--no-warn
endif
ifeq ($(CONFIG_CPU_MICROMIPS),y)
micromips-ase				:= $(call cc-option-yn,$(mips-cflags) -mmicromips)
cflags-$(micromips-ase)			+= -mmicromips
endif
199
ifeq ($(CONFIG_CPU_HAS_MSA),y)
200
toolchain-msa				:= $(call cc-option-yn,$(mips-cflags) -mhard-float -mfp64 -Wa$(comma)-mmsa)
201 202
cflags-$(toolchain-msa)			+= -DTOOLCHAIN_SUPPORTS_MSA
endif
203 204
toolchain-virt				:= $(call cc-option-yn,$(mips-cflags) -mvirt)
cflags-$(toolchain-virt)		+= -DTOOLCHAIN_SUPPORTS_VIRT
205

L
Linus Torvalds 已提交
206 207 208
#
# Firmware support
#
209 210 211
libs-$(CONFIG_FW_ARC)		+= arch/mips/fw/arc/
libs-$(CONFIG_FW_CFE)		+= arch/mips/fw/cfe/
libs-$(CONFIG_FW_SNIPROM)	+= arch/mips/fw/sni/
212
libs-y				+= arch/mips/fw/lib/
L
Linus Torvalds 已提交
213

214 215 216 217 218 219 220 221 222
#
# Kernel compression
#
ifdef SYS_SUPPORTS_ZBOOT
COMPRESSION_FNAME		= vmlinuz
else
COMPRESSION_FNAME		= vmlinux
endif

L
Linus Torvalds 已提交
223 224 225
#
# Board-dependent options and extra files
#
226
include arch/mips/Kbuild.platforms
227

228
ifdef CONFIG_PHYSICAL_START
R
Ralf Baechle 已提交
229
load-y					= $(CONFIG_PHYSICAL_START)
230
endif
231 232
entry-y				= 0x$(shell $(NM) vmlinux 2>/dev/null \
					| grep "\bkernel_entry\b" | cut -f1 -d \ )
233

234
cflags-y			+= -I$(srctree)/arch/mips/include/asm/mach-generic
L
Linus Torvalds 已提交
235 236
drivers-$(CONFIG_PCI)		+= arch/mips/pci/

237 238 239 240
#
# Automatically detect the build format. By default we choose
# the elf format according to the load address.
# We can always force a build with a 64-bits symbol format by
241
# passing 'KBUILD_SYM32=no' option to the make's command line.
242 243
#
ifdef CONFIG_64BIT
244
  ifndef KBUILD_SYM32
245
    ifeq ($(shell expr $(load-y) \< 0xffffffff80000000), 0)
246
      KBUILD_SYM32 = y
247 248 249
    endif
  endif

250 251 252 253 254
  ifeq ($(KBUILD_SYM32)$(call cc-option-yn,-msym32), yy)
    cflags-y += -msym32 -DKBUILD_64BIT_SYM32
  else
    ifeq ($(CONFIG_CPU_DADDI_WORKAROUNDS), y)
      $(error CONFIG_CPU_DADDI_WORKAROUNDS unsupported without -msym32)
255
    endif
256 257 258
  endif
endif

259
KBUILD_AFLAGS	+= $(cflags-y)
260
KBUILD_CFLAGS	+= $(cflags-y)
261 262
KBUILD_CPPFLAGS += -DVMLINUX_LOAD_ADDRESS=$(load-y)
KBUILD_CPPFLAGS += -DDATAOFFSET=$(if $(dataoffset-y),$(dataoffset-y),0)
L
Linus Torvalds 已提交
263

264
bootvars-y	= VMLINUX_LOAD_ADDRESS=$(load-y) \
265
		  VMLINUX_ENTRY_ADDRESS=$(entry-y) \
266
		  PLATFORM="$(platform-y)"
267 268 269 270 271 272
ifdef CONFIG_32BIT
bootvars-y	+= ADDR_BITS=32
endif
ifdef CONFIG_64BIT
bootvars-y	+= ADDR_BITS=64
endif
273

L
Linus Torvalds 已提交
274 275
LDFLAGS			+= -m $(ld-emul)

R
Ralf Baechle 已提交
276
ifdef CONFIG_MIPS
J
Jean Delvare 已提交
277
CHECKFLAGS += $(shell $(CC) $(KBUILD_CFLAGS) -dM -E -x c /dev/null | \
278
	egrep -vw '__GNUC_(|MINOR_|PATCHLEVEL_)_' | \
279
	sed -e "s/^\#define /-D'/" -e "s/ /'='/" -e "s/$$/'/" -e 's/\$$/&&/g')
280 281 282
ifdef CONFIG_64BIT
CHECKFLAGS		+= -m64
endif
R
Ralf Baechle 已提交
283 284
endif

L
Linus Torvalds 已提交
285 286
OBJCOPYFLAGS		+= --remove-section=.reginfo

T
Thomas Gleixner 已提交
287
head-y := arch/mips/kernel/head.o
L
Linus Torvalds 已提交
288 289

libs-y			+= arch/mips/lib/
290
libs-y			+= arch/mips/math-emu/
L
Linus Torvalds 已提交
291

S
Sam Ravnborg 已提交
292 293
# See arch/mips/Kbuild for content of core part of the kernel
core-y += arch/mips/
L
Linus Torvalds 已提交
294 295 296

drivers-$(CONFIG_OPROFILE)	+= arch/mips/oprofile/

W
Wu Zhangjin 已提交
297 298 299
# suspend and hibernation support
drivers-$(CONFIG_PM)	+= arch/mips/power/

300 301 302 303
# boot image targets (arch/mips/boot/)
boot-y			:= vmlinux.bin
boot-y			+= vmlinux.ecoff
boot-y			+= vmlinux.srec
J
James Hogan 已提交
304 305
ifeq ($(shell expr $(load-y) \< 0xffffffff80000000 2> /dev/null), 0)
boot-y			+= uImage
306 307
boot-y			+= uImage.bin
boot-y			+= uImage.bz2
J
James Hogan 已提交
308
boot-y			+= uImage.gz
309 310
boot-y			+= uImage.lzma
boot-y			+= uImage.lzo
J
James Hogan 已提交
311
endif
312 313 314 315 316
boot-y			+= vmlinux.itb
boot-y			+= vmlinux.gz.itb
boot-y			+= vmlinux.bz2.itb
boot-y			+= vmlinux.lzma.itb
boot-y			+= vmlinux.lzo.itb
317 318 319 320 321 322 323

# compressed boot image targets (arch/mips/boot/compressed/)
bootz-y			:= vmlinuz
bootz-y			+= vmlinuz.bin
bootz-y			+= vmlinuz.ecoff
bootz-y			+= vmlinuz.srec

324 325
ifdef CONFIG_LASAT
rom.bin rom.sw: vmlinux
326 327
	$(Q)$(MAKE) $(build)=arch/mips/lasat/image \
		$(bootvars-y) $@
328 329
endif

330 331 332 333
CMD_RELOCS = arch/mips/boot/tools/relocs
quiet_cmd_relocs = RELOCS  $<
      cmd_relocs = $(CMD_RELOCS) $<

L
Linus Torvalds 已提交
334 335 336 337 338
#
# Some machines like the Indy need 32-bit ELF binaries for booting purposes.
# Other need ECOFF, so we build a 32-bit ELF binary for them which we then
# convert to ECOFF using elf2ecoff.
#
339 340
quiet_cmd_32 = OBJCOPY $@
	cmd_32 = $(OBJCOPY) -O $(32bit-bfd) $(OBJCOPYFLAGS) $< $@
L
Linus Torvalds 已提交
341
vmlinux.32: vmlinux
342 343 344 345 346
ifeq ($(CONFIG_RELOCATABLE)$(CONFIG_64BIT),yy)
# Currently, objcopy fails to handle the relocations in the elf64
# So the relocs tool must be run here to remove them first
	$(call cmd,relocs)
endif
347
	$(call cmd,32)
L
Linus Torvalds 已提交
348 349 350 351 352

#
# The 64-bit ELF tools are pretty broken so at this time we generate 64-bit
# ELF files from 32-bit files by conversion.
#
353 354
quiet_cmd_64 = OBJCOPY $@
	cmd_64 = $(OBJCOPY) -O $(64bit-bfd) $(OBJCOPYFLAGS) $< $@
L
Linus Torvalds 已提交
355
vmlinux.64: vmlinux
356
	$(call cmd,64)
L
Linus Torvalds 已提交
357

358
all:	$(all-y)
L
Linus Torvalds 已提交
359

360
# boot
361
$(boot-y): $(vmlinux-32) FORCE
362 363 364
ifeq ($(CONFIG_RELOCATABLE)$(CONFIG_32BIT),yy)
	$(call cmd,relocs)
endif
365 366
	$(Q)$(MAKE) $(build)=arch/mips/boot VMLINUX=$(vmlinux-32) \
		$(bootvars-y) arch/mips/boot/$@
L
Linus Torvalds 已提交
367

368
ifdef CONFIG_SYS_SUPPORTS_ZBOOT
369
# boot/compressed
370
$(bootz-y): $(vmlinux-32) FORCE
371
	$(Q)$(MAKE) $(build)=arch/mips/boot/compressed \
372
		$(bootvars-y) 32bit-bfd=$(32bit-bfd) $@
373 374 375 376 377
else
vmlinuz: FORCE
	@echo '   CONFIG_SYS_SUPPORTS_ZBOOT is not enabled'
	/bin/false
endif
378 379


S
Sam Ravnborg 已提交
380
CLEAN_FILES += vmlinux.32 vmlinux.64
L
Linus Torvalds 已提交
381

382 383 384 385 386 387
# device-trees
core-$(CONFIG_BUILTIN_DTB) += arch/mips/boot/dts/

%.dtb %.dtb.S %.dtb.o: | scripts
	$(Q)$(MAKE) $(build)=arch/mips/boot/dts arch/mips/boot/dts/$@

388 389
PHONY += dtbs
dtbs: scripts
390
	$(Q)$(MAKE) $(build)=arch/mips/boot/dts
391

392 393 394
PHONY += dtbs_install
dtbs_install:
	$(Q)$(MAKE) $(dtbinst)=arch/mips/boot/dts
395

396 397 398
archprepare:
ifdef CONFIG_MIPS32_N32
	@echo '  Checking missing-syscalls for N32'
399
	$(Q)$(MAKE) $(build)=. missing-syscalls missing_syscalls_flags="-mabi=n32"
400 401 402
endif
ifdef CONFIG_MIPS32_O32
	@echo '  Checking missing-syscalls for O32'
403
	$(Q)$(MAKE) $(build)=. missing-syscalls missing_syscalls_flags="-mabi=32"
404 405
endif

406 407
install:
	$(Q)install -D -m 755 vmlinux $(INSTALL_PATH)/vmlinux-$(KERNELRELEASE)
408
ifdef CONFIG_SYS_SUPPORTS_ZBOOT
409
	$(Q)install -D -m 755 vmlinuz $(INSTALL_PATH)/vmlinuz-$(KERNELRELEASE)
410
endif
411 412 413
	$(Q)install -D -m 644 .config $(INSTALL_PATH)/config-$(KERNELRELEASE)
	$(Q)install -D -m 644 System.map $(INSTALL_PATH)/System.map-$(KERNELRELEASE)

L
Linus Torvalds 已提交
414
archclean:
S
Sam Ravnborg 已提交
415 416
	$(Q)$(MAKE) $(clean)=arch/mips/boot
	$(Q)$(MAKE) $(clean)=arch/mips/boot/compressed
M
Matt Redfearn 已提交
417
	$(Q)$(MAKE) $(clean)=arch/mips/boot/tools
S
Sam Ravnborg 已提交
418
	$(Q)$(MAKE) $(clean)=arch/mips/lasat
L
Linus Torvalds 已提交
419

R
Ralf Baechle 已提交
420
define archhelp
421
	echo '  install              - install kernel into $(INSTALL_PATH)'
R
Ralf Baechle 已提交
422 423 424
	echo '  vmlinux.ecoff        - ECOFF boot image'
	echo '  vmlinux.bin          - Raw binary boot image'
	echo '  vmlinux.srec         - SREC boot image'
425
	echo '  vmlinux.32           - 64-bit boot image wrapped in 32bits (IP22/IP32)'
426 427 428 429
	echo '  vmlinuz              - Compressed boot(zboot) image'
	echo '  vmlinuz.ecoff        - ECOFF zboot image'
	echo '  vmlinuz.bin          - Raw binary zboot image'
	echo '  vmlinuz.srec         - SREC zboot image'
J
James Hogan 已提交
430
	echo '  uImage               - U-Boot image'
431 432
	echo '  uImage.bin           - U-Boot image (uncompressed)'
	echo '  uImage.bz2           - U-Boot image (bz2)'
J
James Hogan 已提交
433
	echo '  uImage.gz            - U-Boot image (gzip)'
434 435
	echo '  uImage.lzma          - U-Boot image (lzma)'
	echo '  uImage.lzo           - U-Boot image (lzo)'
436
	echo '  dtbs                 - Device-tree blobs for enabled boards'
437
	echo '  dtbs_install         - Install dtbs to $(INSTALL_DTBS_PATH)'
R
Ralf Baechle 已提交
438
	echo
L
Lucas De Marchi 已提交
439
	echo '  These will be default as appropriate for a configured platform.'
440 441 442 443 444 445 446
	echo
	echo '  If you are targeting a system supported by generic kernels you may'
	echo '  configure the kernel for a given architecture target like so:'
	echo
	echo '  {micro32,32,64}{r1,r2,r6}{el,}_defconfig <BOARDS="list of boards">'
	echo
	echo '  Otherwise, the following default configurations are available:'
R
Ralf Baechle 已提交
447
endef
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 482 483 484 485 486 487 488 489 490

generic_config_dir = $(srctree)/arch/$(ARCH)/configs/generic
generic_defconfigs :=

#
# If the user generates a generic kernel configuration without specifying a
# list of boards to include the config fragments for, default to including all
# available board config fragments.
#
ifeq ($(BOARDS),)
BOARDS = $(patsubst board-%.config,%,$(notdir $(wildcard $(generic_config_dir)/board-*.config)))
endif

#
# Generic kernel configurations which merge generic_defconfig with the
# appropriate config fragments from arch/mips/configs/generic/, resulting in
# the ability to easily configure the kernel for a given architecture,
# endianness & set of boards without duplicating the needed configuration in
# hundreds of defconfig files.
#
define gen_generic_defconfigs
$(foreach bits,$(1),$(foreach rev,$(2),$(foreach endian,$(3),
target := $(bits)$(rev)$(filter el,$(endian))_defconfig
generic_defconfigs += $$(target)
$$(target): $(generic_config_dir)/$(bits)$(rev).config
$$(target): $(generic_config_dir)/$(endian).config
)))
endef

$(eval $(call gen_generic_defconfigs,32 64,r1 r2 r6,eb el))
$(eval $(call gen_generic_defconfigs,micro32,r2,eb el))

.PHONY: $(generic_defconfigs)
$(generic_defconfigs):
	$(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh \
		-m -O $(objtree) $(srctree)/arch/$(ARCH)/configs/generic_defconfig $^ \
		$(foreach board,$(BOARDS),$(generic_config_dir)/board-$(board).config)
	$(Q)$(MAKE) olddefconfig

#
# Prevent generic merge_config rules attempting to merge single fragments
#
$(generic_config_dir)/%.config: ;
491 492 493 494 495 496 497 498 499 500 501 502 503

#
# Legacy defconfig compatibility - these targets used to be real defconfigs but
# now that the boards have been converted to use the generic kernel they are
# wrappers around the generic rules above.
#
.PHONY: sead3_defconfig
sead3_defconfig:
	$(Q)$(MAKE) 32r2el_defconfig BOARDS=sead-3

.PHONY: sead3micro_defconfig
sead3micro_defconfig:
	$(Q)$(MAKE) micro32r2el_defconfig BOARDS=sead-3