Makefile 11.3 KB
Newer Older
L
Linus Torvalds 已提交
1 2 3
#
# arch/arm/Makefile
#
4 5 6
# This file is included by the global makefile so that you can add your own
# architecture-specific flags and dependencies.
#
L
Linus Torvalds 已提交
7 8 9 10 11 12
# 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) 1995-2001 by Russell King

13 14 15
# Ensure linker flags are correct
LDFLAGS		:=

L
Linus Torvalds 已提交
16
LDFLAGS_vmlinux	:=-p --no-undefined -X
17 18 19
ifeq ($(CONFIG_CPU_ENDIAN_BE8),y)
LDFLAGS_vmlinux	+= --be8
endif
20

21
OBJCOPYFLAGS	:=-O binary -R .comment -S
L
Linus Torvalds 已提交
22
GZFLAGS		:=-9
23
#KBUILD_CFLAGS	+=-pipe
L
Linus Torvalds 已提交
24

25 26 27
# Never generate .eh_frame
KBUILD_CFLAGS	+= $(call cc-option,-fno-dwarf2-cfi-asm)

L
Linus Torvalds 已提交
28 29 30 31
# Do not use arch/arm/defconfig - it's always outdated.
# Select a platform tht is kept up-to-date
KBUILD_DEFCONFIG := versatile_defconfig

32
# defines filename extension depending memory management type.
33 34
ifeq ($(CONFIG_MMU),)
MMUEXT		:= -nommu
35
KBUILD_CFLAGS	+= $(call cc-option,-mno-unaligned-access)
36 37
endif

L
Linus Torvalds 已提交
38
ifeq ($(CONFIG_FRAME_POINTER),y)
39
KBUILD_CFLAGS	+=-fno-omit-frame-pointer -mapcs -mno-sched-prolog
L
Linus Torvalds 已提交
40 41
endif

42 43 44 45
ifeq ($(CONFIG_CC_STACKPROTECTOR),y)
KBUILD_CFLAGS	+=-fstack-protector
endif

L
Linus Torvalds 已提交
46
ifeq ($(CONFIG_CPU_BIG_ENDIAN),y)
47
KBUILD_CPPFLAGS	+= -mbig-endian
L
Linus Torvalds 已提交
48 49 50
AS		+= -EB
LD		+= -EB
else
51
KBUILD_CPPFLAGS	+= -mlittle-endian
L
Linus Torvalds 已提交
52 53 54 55 56 57 58 59 60 61
AS		+= -EL
LD		+= -EL
endif

comma = ,

# This selects which instruction set is used.
# Note that GCC does not numerically define an architecture version
# macro, but instead defines a whole series of macros which makes
# testing for a specific architecture or later rather impossible.
62
arch-$(CONFIG_CPU_32v7M)	=-D__LINUX_ARM_ARCH__=7 -march=armv7-m -Wa,-march=armv7-m
63 64
arch-$(CONFIG_CPU_32v7)		=-D__LINUX_ARM_ARCH__=7 $(call cc-option,-march=armv7-a,-march=armv5t -Wa$(comma)-march=armv7-a)
arch-$(CONFIG_CPU_32v6)		=-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6,-march=armv5t -Wa$(comma)-march=armv6)
65 66 67
# Only override the compiler option if ARMv6. The ARMv6K extensions are
# always available in ARMv7
ifeq ($(CONFIG_CPU_32v6),y)
68
arch-$(CONFIG_CPU_32v6K)	=-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6k,-march=armv5t -Wa$(comma)-march=armv6k)
69
endif
70 71 72 73 74 75 76
arch-$(CONFIG_CPU_32v5)		=-D__LINUX_ARM_ARCH__=5 $(call cc-option,-march=armv5te,-march=armv4t)
arch-$(CONFIG_CPU_32v4T)	=-D__LINUX_ARM_ARCH__=4 -march=armv4t
arch-$(CONFIG_CPU_32v4)		=-D__LINUX_ARM_ARCH__=4 -march=armv4
arch-$(CONFIG_CPU_32v3)		=-D__LINUX_ARM_ARCH__=3 -march=armv3

# Evaluate arch cc-option calls now
arch-y := $(arch-y)
L
Linus Torvalds 已提交
77 78

# This selects how we optimise for the processor.
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
tune-$(CONFIG_CPU_ARM7TDMI)	=-mtune=arm7tdmi
tune-$(CONFIG_CPU_ARM720T)	=-mtune=arm7tdmi
tune-$(CONFIG_CPU_ARM740T)	=-mtune=arm7tdmi
tune-$(CONFIG_CPU_ARM9TDMI)	=-mtune=arm9tdmi
tune-$(CONFIG_CPU_ARM940T)	=-mtune=arm9tdmi
tune-$(CONFIG_CPU_ARM946E)	=$(call cc-option,-mtune=arm9e,-mtune=arm9tdmi)
tune-$(CONFIG_CPU_ARM920T)	=-mtune=arm9tdmi
tune-$(CONFIG_CPU_ARM922T)	=-mtune=arm9tdmi
tune-$(CONFIG_CPU_ARM925T)	=-mtune=arm9tdmi
tune-$(CONFIG_CPU_ARM926T)	=-mtune=arm9tdmi
tune-$(CONFIG_CPU_FA526)	=-mtune=arm9tdmi
tune-$(CONFIG_CPU_SA110)	=-mtune=strongarm110
tune-$(CONFIG_CPU_SA1100)	=-mtune=strongarm1100
tune-$(CONFIG_CPU_XSCALE)	=$(call cc-option,-mtune=xscale,-mtune=strongarm110) -Wa,-mcpu=xscale
tune-$(CONFIG_CPU_XSC3)		=$(call cc-option,-mtune=xscale,-mtune=strongarm110) -Wa,-mcpu=xscale
tune-$(CONFIG_CPU_FEROCEON)	=$(call cc-option,-mtune=marvell-f,-mtune=xscale)
tune-$(CONFIG_CPU_V6)		=$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm)
tune-$(CONFIG_CPU_V6K)		=$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm)

# Evaluate tune cc-option calls now
tune-y := $(tune-y)
L
Linus Torvalds 已提交
100

101
ifeq ($(CONFIG_AEABI),y)
102
CFLAGS_ABI	:=-mabi=aapcs-linux -mno-thumb-interwork
103
else
104
CFLAGS_ABI	:=$(call cc-option,-mapcs-32,-mabi=apcs-gnu) $(call cc-option,-mno-thumb-interwork,)
105 106
endif

107 108 109 110
ifeq ($(CONFIG_ARM_UNWIND),y)
CFLAGS_ABI	+=-funwind-tables
endif

111
ifeq ($(CONFIG_THUMB2_KERNEL),y)
112
AFLAGS_AUTOIT	:=$(call as-option,-Wa$(comma)-mimplicit-it=always,-Wa$(comma)-mauto-it)
113
AFLAGS_NOWARN	:=$(call as-option,-Wa$(comma)-mno-warn-deprecated,-Wa$(comma)-W)
114 115
CFLAGS_ISA	:=-mthumb $(AFLAGS_AUTOIT) $(AFLAGS_NOWARN)
AFLAGS_ISA	:=$(CFLAGS_ISA) -Wa$(comma)-mthumb
116 117 118 119
# Work around buggy relocation from gas if requested:
ifeq ($(CONFIG_THUMB2_AVOID_R_ARM_THM_JUMP11),y)
CFLAGS_MODULE	+=-fno-optimize-sibling-calls
endif
120 121 122
else
CFLAGS_ISA	:=$(call cc-option,-marm,)
AFLAGS_ISA	:=$(CFLAGS_ISA)
123 124
endif

125
# Need -Uarm for gcc < 3.x
126 127
KBUILD_CFLAGS	+=$(CFLAGS_ABI) $(CFLAGS_ISA) $(arch-y) $(tune-y) $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) -msoft-float -Uarm
KBUILD_AFLAGS	+=$(CFLAGS_ABI) $(AFLAGS_ISA) $(arch-y) $(tune-y) -include asm/unified.h -msoft-float
L
Linus Torvalds 已提交
128 129 130 131

CHECKFLAGS	+= -D__arm__

#Default value
T
Thomas Gleixner 已提交
132
head-y		:= arch/arm/kernel/head$(MMUEXT).o
133
textofs-y	:= 0x00008000
134
textofs-$(CONFIG_ARCH_CLPS711X) := 0x00028000
135 136
# We don't want the htc bootloader to corrupt kernel during resume
textofs-$(CONFIG_PM_H1940)      := 0x00108000
L
Linus Torvalds 已提交
137
# SA1111 DMA bug: we don't want the kernel to live in precious DMA-able memory
138 139
ifeq ($(CONFIG_ARCH_SA1100),y)
textofs-$(CONFIG_SA1111) := 0x00208000
L
Linus Torvalds 已提交
140
endif
141 142 143
textofs-$(CONFIG_ARCH_MSM7X30) := 0x00208000
textofs-$(CONFIG_ARCH_MSM8X60) := 0x00208000
textofs-$(CONFIG_ARCH_MSM8960) := 0x00208000
144 145 146

# Machine directory name.  This list is sorted alphanumerically
# by CONFIG_* macro name.
R
Rob Herring 已提交
147
machine-$(CONFIG_ARCH_AT91)		+= at91
148
machine-$(CONFIG_ARCH_BCM)		+= bcm
149
machine-$(CONFIG_ARCH_BCM2835)		+= bcm2835
R
Rob Herring 已提交
150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181
machine-$(CONFIG_ARCH_CLPS711X)		+= clps711x
machine-$(CONFIG_ARCH_CNS3XXX)		+= cns3xxx
machine-$(CONFIG_ARCH_DAVINCI)		+= davinci
machine-$(CONFIG_ARCH_DOVE)		+= dove
machine-$(CONFIG_ARCH_EBSA110)		+= ebsa110
machine-$(CONFIG_ARCH_EP93XX)		+= ep93xx
machine-$(CONFIG_ARCH_GEMINI)		+= gemini
machine-$(CONFIG_ARCH_HIGHBANK)		+= highbank
machine-$(CONFIG_ARCH_INTEGRATOR)	+= integrator
machine-$(CONFIG_ARCH_IOP13XX)		+= iop13xx
machine-$(CONFIG_ARCH_IOP32X)		+= iop32x
machine-$(CONFIG_ARCH_IOP33X)		+= iop33x
machine-$(CONFIG_ARCH_IXP4XX)		+= ixp4xx
machine-$(CONFIG_ARCH_KIRKWOOD)		+= kirkwood
machine-$(CONFIG_ARCH_KS8695)		+= ks8695
machine-$(CONFIG_ARCH_LPC32XX)		+= lpc32xx
machine-$(CONFIG_ARCH_MMP)		+= mmp
machine-$(CONFIG_ARCH_MSM)		+= msm
machine-$(CONFIG_ARCH_MV78XX0)		+= mv78xx0
machine-$(CONFIG_ARCH_MXC)		+= imx
machine-$(CONFIG_ARCH_MXS)		+= mxs
machine-$(CONFIG_ARCH_MVEBU)		+= mvebu
machine-$(CONFIG_ARCH_NETX)		+= netx
machine-$(CONFIG_ARCH_NOMADIK)		+= nomadik
machine-$(CONFIG_ARCH_OMAP1)		+= omap1
machine-$(CONFIG_ARCH_OMAP2PLUS)	+= omap2
machine-$(CONFIG_ARCH_ORION5X)		+= orion5x
machine-$(CONFIG_ARCH_PICOXCELL)	+= picoxcell
machine-$(CONFIG_ARCH_PRIMA2)		+= prima2
machine-$(CONFIG_ARCH_PXA)		+= pxa
machine-$(CONFIG_ARCH_REALVIEW)		+= realview
machine-$(CONFIG_ARCH_RPC)		+= rpc
182
machine-$(CONFIG_ARCH_S3C24XX)		+= s3c24xx
R
Rob Herring 已提交
183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199
machine-$(CONFIG_ARCH_S3C64XX)		+= s3c64xx
machine-$(CONFIG_ARCH_S5P64X0)		+= s5p64x0
machine-$(CONFIG_ARCH_S5PC100)		+= s5pc100
machine-$(CONFIG_ARCH_S5PV210)		+= s5pv210
machine-$(CONFIG_ARCH_EXYNOS)		+= exynos
machine-$(CONFIG_ARCH_SA1100)		+= sa1100
machine-$(CONFIG_ARCH_SHARK)		+= shark
machine-$(CONFIG_ARCH_SHMOBILE) 	+= shmobile
machine-$(CONFIG_ARCH_TEGRA)		+= tegra
machine-$(CONFIG_ARCH_U300)		+= u300
machine-$(CONFIG_ARCH_U8500)		+= ux500
machine-$(CONFIG_ARCH_VERSATILE)	+= versatile
machine-$(CONFIG_ARCH_VEXPRESS)		+= vexpress
machine-$(CONFIG_ARCH_VT8500)		+= vt8500
machine-$(CONFIG_ARCH_W90X900)		+= w90x900
machine-$(CONFIG_FOOTBRIDGE)		+= footbridge
machine-$(CONFIG_ARCH_SOCFPGA)		+= socfpga
200
machine-$(CONFIG_PLAT_SPEAR)		+= spear
201
machine-$(CONFIG_ARCH_VIRT)		+= virt
R
Rob Herring 已提交
202
machine-$(CONFIG_ARCH_ZYNQ)		+= zynq
203
machine-$(CONFIG_ARCH_SUNXI)		+= sunxi
204 205 206

# Platform directory name.  This list is sorted alphanumerically
# by CONFIG_* macro name.
R
Rob Herring 已提交
207 208 209 210 211
plat-$(CONFIG_ARCH_OMAP)	+= omap
plat-$(CONFIG_ARCH_S3C64XX)	+= samsung
plat-$(CONFIG_PLAT_IOP)		+= iop
plat-$(CONFIG_PLAT_ORION)	+= orion
plat-$(CONFIG_PLAT_PXA)		+= pxa
212
plat-$(CONFIG_PLAT_S3C24XX)	+= samsung
R
Rob Herring 已提交
213 214
plat-$(CONFIG_PLAT_S5P)		+= samsung
plat-$(CONFIG_PLAT_VERSATILE)	+= versatile
L
Linus Torvalds 已提交
215 216 217 218 219 220 221 222

ifeq ($(CONFIG_ARCH_EBSA110),y)
# This is what happens if you forget the IOCS16 line.
# PCMCIA cards stop working.
CFLAGS_3c589_cs.o :=-DISA_SIXTEEN_BIT_PERIPHERAL
export CFLAGS_3c589_cs.o
endif

223 224
# The byte offset of the kernel image in RAM from the start of RAM.
TEXT_OFFSET := $(textofs-y)
L
Linus Torvalds 已提交
225

226
# The first directory contains additional information for the boot setup code
L
Linus Torvalds 已提交
227
ifneq ($(machine-y),)
228
MACHINE  := arch/arm/mach-$(word 1,$(machine-y))/
L
Linus Torvalds 已提交
229 230 231
else
MACHINE  :=
endif
R
Rob Herring 已提交
232 233 234
ifeq ($(CONFIG_ARCH_MULTIPLATFORM),y)
MACHINE  :=
endif
235

236 237 238
machdirs := $(patsubst %,arch/arm/mach-%/,$(machine-y))
platdirs := $(patsubst %,arch/arm/plat-%/,$(plat-y))

R
Rob Herring 已提交
239
ifneq ($(CONFIG_ARCH_MULTIPLATFORM),y)
240 241 242 243 244
ifeq ($(KBUILD_SRC),)
KBUILD_CPPFLAGS += $(patsubst %,-I%include,$(machdirs) $(platdirs))
else
KBUILD_CPPFLAGS += $(patsubst %,-I$(srctree)/%include,$(machdirs) $(platdirs))
endif
R
Rob Herring 已提交
245
endif
246

247
export	TEXT_OFFSET GZFLAGS MMUEXT
L
Linus Torvalds 已提交
248 249 250 251 252 253 254 255 256 257

# Do we have FASTFPE?
FASTFPE		:=arch/arm/fastfpe
ifeq ($(FASTFPE),$(wildcard $(FASTFPE)))
FASTFPE_OBJ	:=$(FASTFPE)/
endif

core-$(CONFIG_FPE_NWFPE)	+= arch/arm/nwfpe/
core-$(CONFIG_FPE_FASTFPE)	+= $(FASTFPE_OBJ)
core-$(CONFIG_VFP)		+= arch/arm/vfp/
S
Stefano Stabellini 已提交
258
core-$(CONFIG_XEN)		+= arch/arm/xen/
259
core-$(CONFIG_KVM_ARM_HOST) 	+= arch/arm/kvm/
L
Linus Torvalds 已提交
260

261 262
# If we have a machine-specific directory, then include it in the build.
core-y				+= arch/arm/kernel/ arch/arm/mm/ arch/arm/common/
263
core-y				+= arch/arm/net/
264
core-y				+= arch/arm/crypto/
265 266
core-y				+= $(machdirs) $(platdirs)

L
Linus Torvalds 已提交
267 268
drivers-$(CONFIG_OPROFILE)      += arch/arm/oprofile/

269
libs-y				:= arch/arm/lib/ $(libs-y)
L
Linus Torvalds 已提交
270 271 272

# Default target when executing plain make
ifeq ($(CONFIG_XIP_KERNEL),y)
273
KBUILD_IMAGE := xipImage
L
Linus Torvalds 已提交
274
else
275
KBUILD_IMAGE := zImage
L
Linus Torvalds 已提交
276 277
endif

278 279 280 281 282 283
# Build the DT binary blobs if we have OF configured
ifeq ($(CONFIG_USE_OF),y)
KBUILD_DTBS := dtbs
endif

all:	$(KBUILD_IMAGE) $(KBUILD_DTBS)
284

L
Linus Torvalds 已提交
285 286
boot := arch/arm/boot

287 288
archprepare:
	$(Q)$(MAKE) $(build)=arch/arm/tools include/generated/mach-types.h
L
Linus Torvalds 已提交
289 290 291 292 293 294 295

# Convert bzImage to zImage
bzImage: zImage

zImage Image xipImage bootpImage uImage: vmlinux
	$(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/$@

296
zinstall uinstall install: vmlinux
L
Linus Torvalds 已提交
297 298
	$(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $@

299
%.dtb: | scripts
300
	$(Q)$(MAKE) $(build)=$(boot)/dts MACHINE=$(MACHINE) $(boot)/dts/$@
R
Rob Herring 已提交
301

302
PHONY += dtbs
303
dtbs: scripts
304
	$(Q)$(MAKE) $(build)=$(boot)/dts MACHINE=$(MACHINE) dtbs
R
Rob Herring 已提交
305

L
Linus Torvalds 已提交
306 307 308 309 310 311 312 313 314 315 316 317 318
# We use MRPROPER_FILES and CLEAN_FILES now
archclean:
	$(Q)$(MAKE) $(clean)=$(boot)

# My testing targets (bypasses dependencies)
bp:;	$(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/bootpImage
i zi:;	$(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $@


define archhelp
  echo  '* zImage        - Compressed kernel image (arch/$(ARCH)/boot/zImage)'
  echo  '  Image         - Uncompressed kernel image (arch/$(ARCH)/boot/Image)'
  echo  '* xipImage      - XIP kernel image, if configured (arch/$(ARCH)/boot/xipImage)'
319
  echo  '  uImage        - U-Boot wrapped zImage'
320
  echo  '  bootpImage    - Combined zImage and initial RAM disk'
L
Linus Torvalds 已提交
321
  echo  '                  (supply initrd image via make variable INITRD=<path>)'
322
  echo  '* dtbs          - Build device tree blobs for enabled boards'
L
Linus Torvalds 已提交
323 324
  echo  '  install       - Install uncompressed kernel'
  echo  '  zinstall      - Install compressed kernel'
325
  echo  '  uinstall      - Install U-Boot wrapped compressed kernel'
326 327
  echo  '                  Install using (your) ~/bin/$(INSTALLKERNEL) or'
  echo  '                  (distribution) /sbin/$(INSTALLKERNEL) or'
L
Linus Torvalds 已提交
328 329
  echo  '                  install to $$(INSTALL_PATH) and run lilo'
endef