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
24
# Explicitly specifiy 32-bit ARM ISA since toolchain default can be -mthumb:
25
KBUILD_CFLAGS	+=$(call cc-option,-marm,)
L
Linus Torvalds 已提交
26

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

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

34
# defines filename extension depending memory management type.
35 36 37 38
ifeq ($(CONFIG_MMU),)
MMUEXT		:= -nommu
endif

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

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

L
Linus Torvalds 已提交
47
ifeq ($(CONFIG_CPU_BIG_ENDIAN),y)
48
KBUILD_CPPFLAGS	+= -mbig-endian
L
Linus Torvalds 已提交
49 50 51
AS		+= -EB
LD		+= -EB
else
52
KBUILD_CPPFLAGS	+= -mlittle-endian
L
Linus Torvalds 已提交
53 54 55 56 57 58 59 60 61 62
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.
63
arch-$(CONFIG_CPU_32v7)		:=-D__LINUX_ARM_ARCH__=7 $(call cc-option,-march=armv7-a,-march=armv5t -Wa$(comma)-march=armv7-a)
L
Linus Torvalds 已提交
64
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
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
L
Linus Torvalds 已提交
72 73 74 75
arch-$(CONFIG_CPU_32v4)		:=-D__LINUX_ARM_ARCH__=4 -march=armv4
arch-$(CONFIG_CPU_32v3)		:=-D__LINUX_ARM_ARCH__=3 -march=armv3

# This selects how we optimise for the processor.
76
tune-$(CONFIG_CPU_ARM7TDMI)	:=-mtune=arm7tdmi
L
Linus Torvalds 已提交
77
tune-$(CONFIG_CPU_ARM720T)	:=-mtune=arm7tdmi
78
tune-$(CONFIG_CPU_ARM740T)	:=-mtune=arm7tdmi
79
tune-$(CONFIG_CPU_ARM9TDMI)	:=-mtune=arm9tdmi
80
tune-$(CONFIG_CPU_ARM940T)	:=-mtune=arm9tdmi
81
tune-$(CONFIG_CPU_ARM946E)	:=$(call cc-option,-mtune=arm9e,-mtune=arm9tdmi)
L
Linus Torvalds 已提交
82 83 84 85
tune-$(CONFIG_CPU_ARM920T)	:=-mtune=arm9tdmi
tune-$(CONFIG_CPU_ARM922T)	:=-mtune=arm9tdmi
tune-$(CONFIG_CPU_ARM925T)	:=-mtune=arm9tdmi
tune-$(CONFIG_CPU_ARM926T)	:=-mtune=arm9tdmi
P
Paulius Zaleckas 已提交
86
tune-$(CONFIG_CPU_FA526)	:=-mtune=arm9tdmi
L
Linus Torvalds 已提交
87 88 89
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
90
tune-$(CONFIG_CPU_XSC3)		:=$(call cc-option,-mtune=xscale,-mtune=strongarm110) -Wa,-mcpu=xscale
91
tune-$(CONFIG_CPU_FEROCEON)	:=$(call cc-option,-mtune=marvell-f,-mtune=xscale)
92
tune-$(CONFIG_CPU_V6)		:=$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm)
93
tune-$(CONFIG_CPU_V6K)		:=$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm)
L
Linus Torvalds 已提交
94

95
ifeq ($(CONFIG_AEABI),y)
96
CFLAGS_ABI	:=-mabi=aapcs-linux -mno-thumb-interwork
97
else
98
CFLAGS_ABI	:=$(call cc-option,-mapcs-32,-mabi=apcs-gnu) $(call cc-option,-mno-thumb-interwork,)
99 100
endif

101 102 103 104
ifeq ($(CONFIG_ARM_UNWIND),y)
CFLAGS_ABI	+=-funwind-tables
endif

105
ifeq ($(CONFIG_THUMB2_KERNEL),y)
106
AFLAGS_AUTOIT	:=$(call as-option,-Wa$(comma)-mimplicit-it=always,-Wa$(comma)-mauto-it)
107 108 109
AFLAGS_NOWARN	:=$(call as-option,-Wa$(comma)-mno-warn-deprecated,-Wa$(comma)-W)
CFLAGS_THUMB2	:=-mthumb $(AFLAGS_AUTOIT) $(AFLAGS_NOWARN)
AFLAGS_THUMB2	:=$(CFLAGS_THUMB2) -Wa$(comma)-mthumb
110 111 112 113
# Work around buggy relocation from gas if requested:
ifeq ($(CONFIG_THUMB2_AVOID_R_ARM_THM_JUMP11),y)
CFLAGS_MODULE	+=-fno-optimize-sibling-calls
endif
114 115
endif

116
# Need -Uarm for gcc < 3.x
117 118
KBUILD_CFLAGS	+=$(CFLAGS_ABI) $(CFLAGS_THUMB2) $(arch-y) $(tune-y) $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) -msoft-float -Uarm
KBUILD_AFLAGS	+=$(CFLAGS_ABI) $(AFLAGS_THUMB2) $(arch-y) $(tune-y) -include asm/unified.h -msoft-float
L
Linus Torvalds 已提交
119 120 121 122

CHECKFLAGS	+= -D__arm__

#Default value
T
Thomas Gleixner 已提交
123
head-y		:= arch/arm/kernel/head$(MMUEXT).o
124
textofs-y	:= 0x00008000
125
textofs-$(CONFIG_ARCH_CLPS711X) := 0x00028000
126 127
# We don't want the htc bootloader to corrupt kernel during resume
textofs-$(CONFIG_PM_H1940)      := 0x00108000
L
Linus Torvalds 已提交
128
# SA1111 DMA bug: we don't want the kernel to live in precious DMA-able memory
129 130
ifeq ($(CONFIG_ARCH_SA1100),y)
textofs-$(CONFIG_SA1111) := 0x00208000
L
Linus Torvalds 已提交
131
endif
132 133 134
textofs-$(CONFIG_ARCH_MSM7X30) := 0x00208000
textofs-$(CONFIG_ARCH_MSM8X60) := 0x00208000
textofs-$(CONFIG_ARCH_MSM8960) := 0x00208000
135 136 137

# Machine directory name.  This list is sorted alphanumerically
# by CONFIG_* macro name.
R
Rob Herring 已提交
138
machine-$(CONFIG_ARCH_AT91)		+= at91
139
machine-$(CONFIG_ARCH_BCM2835)		+= bcm2835
R
Rob Herring 已提交
140 141 142 143 144 145 146 147 148 149 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 182 183 184 185 186 187 188 189 190 191 192 193 194
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_H720X)		+= h720x
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
machine-$(CONFIG_ARCH_S3C24XX)		+= s3c24xx s3c2412 s3c2440
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
machine-$(CONFIG_ARCH_SPEAR13XX)	+= spear13xx
machine-$(CONFIG_ARCH_SPEAR3XX)		+= spear3xx
machine-$(CONFIG_MACH_SPEAR600)		+= spear6xx
machine-$(CONFIG_ARCH_ZYNQ)		+= zynq
195 196 197

# Platform directory name.  This list is sorted alphanumerically
# by CONFIG_* macro name.
R
Rob Herring 已提交
198 199 200 201 202 203 204 205 206 207 208 209
plat-$(CONFIG_ARCH_MXC)		+= mxc
plat-$(CONFIG_ARCH_OMAP)	+= omap
plat-$(CONFIG_ARCH_S3C64XX)	+= samsung
plat-$(CONFIG_ARCH_ZYNQ)	+= versatile
plat-$(CONFIG_PLAT_IOP)		+= iop
plat-$(CONFIG_PLAT_NOMADIK)	+= nomadik
plat-$(CONFIG_PLAT_ORION)	+= orion
plat-$(CONFIG_PLAT_PXA)		+= pxa
plat-$(CONFIG_PLAT_S3C24XX)	+= s3c24xx samsung
plat-$(CONFIG_PLAT_S5P)		+= samsung
plat-$(CONFIG_PLAT_SPEAR)	+= spear
plat-$(CONFIG_PLAT_VERSATILE)	+= versatile
L
Linus Torvalds 已提交
210 211 212 213 214 215 216 217

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

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

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

231 232 233
machdirs := $(patsubst %,arch/arm/mach-%/,$(machine-y))
platdirs := $(patsubst %,arch/arm/plat-%/,$(plat-y))

R
Rob Herring 已提交
234
ifneq ($(CONFIG_ARCH_MULTIPLATFORM),y)
235 236 237 238 239
ifeq ($(KBUILD_SRC),)
KBUILD_CPPFLAGS += $(patsubst %,-I%include,$(machdirs) $(platdirs))
else
KBUILD_CPPFLAGS += $(patsubst %,-I$(srctree)/%include,$(machdirs) $(platdirs))
endif
R
Rob Herring 已提交
240
endif
241

242
export	TEXT_OFFSET GZFLAGS MMUEXT
L
Linus Torvalds 已提交
243 244 245 246 247 248 249 250 251 252

# 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 已提交
253
core-$(CONFIG_XEN)		+= arch/arm/xen/
L
Linus Torvalds 已提交
254

255 256
# If we have a machine-specific directory, then include it in the build.
core-y				+= arch/arm/kernel/ arch/arm/mm/ arch/arm/common/
257
core-y				+= arch/arm/net/
258
core-y				+= arch/arm/crypto/
259 260
core-y				+= $(machdirs) $(platdirs)

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

263
libs-y				:= arch/arm/lib/ $(libs-y)
L
Linus Torvalds 已提交
264 265 266

# Default target when executing plain make
ifeq ($(CONFIG_XIP_KERNEL),y)
267
KBUILD_IMAGE := xipImage
L
Linus Torvalds 已提交
268
else
269
KBUILD_IMAGE := zImage
L
Linus Torvalds 已提交
270 271
endif

272 273 274 275 276 277
# Build the DT binary blobs if we have OF configured
ifeq ($(CONFIG_USE_OF),y)
KBUILD_DTBS := dtbs
endif

all:	$(KBUILD_IMAGE) $(KBUILD_DTBS)
278

L
Linus Torvalds 已提交
279 280
boot := arch/arm/boot

281 282
archprepare:
	$(Q)$(MAKE) $(build)=arch/arm/tools include/generated/mach-types.h
L
Linus Torvalds 已提交
283 284 285 286 287 288 289

# Convert bzImage to zImage
bzImage: zImage

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

290
zinstall uinstall install: vmlinux
L
Linus Torvalds 已提交
291 292
	$(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $@

293
%.dtb: scripts
R
Rob Herring 已提交
294 295
	$(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/$@

296
dtbs: scripts
R
Rob Herring 已提交
297 298
	$(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/$@

L
Linus Torvalds 已提交
299 300 301 302 303 304 305 306 307 308 309 310 311
# 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)'
312
  echo  '  uImage        - U-Boot wrapped zImage'
L
Linus Torvalds 已提交
313 314
  echo  '  bootpImage    - Combined zImage and initial RAM disk' 
  echo  '                  (supply initrd image via make variable INITRD=<path>)'
315
  echo  '* dtbs          - Build device tree blobs for enabled boards'
L
Linus Torvalds 已提交
316 317
  echo  '  install       - Install uncompressed kernel'
  echo  '  zinstall      - Install compressed kernel'
318
  echo  '  uinstall      - Install U-Boot wrapped compressed kernel'
319 320
  echo  '                  Install using (your) ~/bin/$(INSTALLKERNEL) or'
  echo  '                  (distribution) /sbin/$(INSTALLKERNEL) or'
L
Linus Torvalds 已提交
321 322
  echo  '                  install to $$(INSTALL_PATH) and run lilo'
endef