Makefile 7.27 KB
Newer Older
Linus Torvalds's avatar
Linus Torvalds committed
1 2 3 4 5 6 7
#
# arch/arm/Makefile
#
# 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.
#
Linus Torvalds's avatar
Linus Torvalds committed
8
# Copyright (C) 1995-2001 by Russell King
Linus Torvalds's avatar
Linus Torvalds committed
9

10
LDFLAGS_vmlinux	:=-p -X -T arch/arm/vmlinux.lds
11
OBJCOPYFLAGS	:=-O binary -R .note -R .comment -S
Linus Torvalds's avatar
Linus Torvalds committed
12
GZFLAGS		:=-9
13 14 15
#CFLAGS		+=-pipe

CFLAGS		:=$(CFLAGS:-O2=-Os)
Linus Torvalds's avatar
Linus Torvalds committed
16

Linus Torvalds's avatar
Linus Torvalds committed
17
ifneq ($(CONFIG_NO_FRAME_POINTER),y)
18
CFLAGS		:=$(CFLAGS: -fomit-frame-pointer=)
Linus Torvalds's avatar
Linus Torvalds committed
19 20
endif

Linus Torvalds's avatar
Linus Torvalds committed
21
ifeq ($(CONFIG_DEBUG_INFO),y)
Linus Torvalds's avatar
Linus Torvalds committed
22
CFLAGS		+=-g
Linus Torvalds's avatar
Linus Torvalds committed
23 24
endif

Linus Torvalds's avatar
Linus Torvalds committed
25 26
# Select CPU dependent flags.  Note that order of declaration is important;
# the options further down the list override previous items.
Linus Torvalds's avatar
Linus Torvalds committed
27
#
Linus Torvalds's avatar
Linus Torvalds committed
28
apcs-$(CONFIG_CPU_32)		:=-mapcs-32
29
apcs-$(CONFIG_CPU_26)		:=-mapcs-26 -mcpu=arm3
Linus Torvalds's avatar
Linus Torvalds committed
30

Linus Torvalds's avatar
Linus Torvalds committed
31
# This selects which instruction set is used.
Russell King's avatar
Russell King committed
32 33 34
# Note that GCC is lame - it doesn't numerically define an
# architecture version macro, but instead defines a whole
# series of macros.
Linus Torvalds's avatar
Linus Torvalds committed
35
arch-y				:=
Russell King's avatar
Russell King committed
36 37 38 39
arch-$(CONFIG_CPU_32v3)		:=-D__LINUX_ARM_ARCH__=3 -march=armv3
arch-$(CONFIG_CPU_32v4)		:=-D__LINUX_ARM_ARCH__=4 -march=armv4
arch-$(CONFIG_CPU_32v5)		:=-D__LINUX_ARM_ARCH__=5 -march=armv5
arch-$(CONFIG_CPU_XSCALE)	:=-D__LINUX_ARM_ARCH__=5 -march=armv4 -Wa,-mxscale #-march=armv5te
Linus Torvalds's avatar
Linus Torvalds committed
40

Linus Torvalds's avatar
Linus Torvalds committed
41
# This selects how we optimise for the processor.
Linus Torvalds's avatar
Linus Torvalds committed
42
tune-y				:=
Linus Torvalds's avatar
Linus Torvalds committed
43 44 45 46
tune-$(CONFIG_CPU_ARM610)	:=-mtune=arm610
tune-$(CONFIG_CPU_ARM710)	:=-mtune=arm710
tune-$(CONFIG_CPU_ARM720T)	:=-mtune=arm7tdmi
tune-$(CONFIG_CPU_ARM920T)	:=-mtune=arm9tdmi
Linus Torvalds's avatar
Linus Torvalds committed
47
tune-$(CONFIG_CPU_ARM922T)	:=-mtune=arm9tdmi
Linus Torvalds's avatar
Linus Torvalds committed
48
tune-$(CONFIG_CPU_ARM926T)	:=-mtune=arm9tdmi
Linus Torvalds's avatar
Linus Torvalds committed
49 50
tune-$(CONFIG_CPU_SA110)	:=-mtune=strongarm110
tune-$(CONFIG_CPU_SA1100)	:=-mtune=strongarm1100
Linus Torvalds's avatar
Linus Torvalds committed
51
tune-$(CONFIG_CPU_XSCALE)	:=-mtune=strongarm #-mtune=xscale
Linus Torvalds's avatar
Linus Torvalds committed
52

Linus Torvalds's avatar
Linus Torvalds committed
53
CFLAGS_BOOT	:=$(apcs-y) $(arch-y) $(tune-y) -mshort-load-bytes -msoft-float
Linus Torvalds's avatar
Linus Torvalds committed
54
CFLAGS		+=$(apcs-y) $(arch-y) $(tune-y) -mshort-load-bytes -msoft-float
Linus Torvalds's avatar
Linus Torvalds committed
55
AFLAGS		+=$(apcs-y) $(arch-y) -mno-fpu -msoft-float
Linus Torvalds's avatar
Linus Torvalds committed
56

Linus Torvalds's avatar
Linus Torvalds committed
57
ifeq ($(CONFIG_CPU_26),y)
Linus Torvalds's avatar
Linus Torvalds committed
58 59
PROCESSOR	:= armo
HEAD		:= arch/arm/mach-arc/head.o arch/arm/kernel/init_task.o
Linus Torvalds's avatar
Linus Torvalds committed
60 61 62 63 64 65 66 67
  ifeq ($(CONFIG_ROM_KERNEL),y)
    DATAADDR	 = 0x02080000
    TEXTADDR	 = 0x03800000
    LDSCRIPT	 = arch/arm/vmlinux-armo-rom.lds.in
  else
    TEXTADDR	 = 0x02080000
    LDSCRIPT	 = arch/arm/vmlinux-armo.lds.in
  endif
Linus Torvalds's avatar
Linus Torvalds committed
68 69 70
endif

ifeq ($(CONFIG_CPU_32),y)
Linus Torvalds's avatar
Linus Torvalds committed
71
PROCESSOR	 = armv
Linus Torvalds's avatar
Linus Torvalds committed
72
HEAD		:= arch/arm/kernel/head.o arch/arm/kernel/init_task.o
Linus Torvalds's avatar
Linus Torvalds committed
73
TEXTADDR	 = 0xC0008000
Linus Torvalds's avatar
Linus Torvalds committed
74
LDSCRIPT	 = arch/arm/vmlinux-armv.lds.in
Linus Torvalds's avatar
Linus Torvalds committed
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
endif

ifeq ($(CONFIG_ARCH_ARCA5K),y)
MACHINE		 = arc
endif

ifeq ($(CONFIG_ARCH_RPC),y)
MACHINE		 = rpc
endif

ifeq ($(CONFIG_ARCH_EBSA110),y)
MACHINE		 = ebsa110
endif

ifeq ($(CONFIG_ARCH_CLPS7500),y)
MACHINE		 = clps7500
INCDIR		 = cl7500
endif

ifeq ($(CONFIG_FOOTBRIDGE),y)
MACHINE		 = footbridge
INCDIR		 = ebsa285
endif

ifeq ($(CONFIG_ARCH_CO285),y)
TEXTADDR	 = 0x60008000
MACHINE		 = footbridge
INCDIR		 = ebsa285
endif

Linus Torvalds's avatar
Linus Torvalds committed
105 106 107 108 109 110 111
ifeq ($(CONFIG_ARCH_FTVPCI),y)
MACHINE		 = ftvpci
INCDIR		 = nexuspci
endif

ifeq ($(CONFIG_ARCH_TBOX),y)
MACHINE		 = tbox
Linus Torvalds's avatar
Linus Torvalds committed
112 113 114 115 116 117 118
endif

ifeq ($(CONFIG_ARCH_SHARK),y)
MACHINE		 = shark
endif

ifeq ($(CONFIG_ARCH_SA1100),y)
Linus Torvalds's avatar
Linus Torvalds committed
119 120 121 122
ifeq ($(CONFIG_SA1111),y)
# SA1111 DMA bug: we don't want the kernel to live in precious DMA-able memory
TEXTADDR	 = 0xc0208000
endif
Linus Torvalds's avatar
Linus Torvalds committed
123 124 125
MACHINE		 = sa1100
endif

126 127 128 129
ifeq ($(CONFIG_ARCH_PXA),y)
MACHINE		 = pxa
endif

Linus Torvalds's avatar
Linus Torvalds committed
130 131 132 133 134 135 136 137
ifeq ($(CONFIG_ARCH_L7200),y)
MACHINE		 = l7200
endif

ifeq ($(CONFIG_ARCH_INTEGRATOR),y)
MACHINE		 = integrator
endif

Linus Torvalds's avatar
Linus Torvalds committed
138 139 140 141
ifeq ($(CONFIG_ARCH_CAMELOT),y)
MACHINE          = epxa10db
endif

Linus Torvalds's avatar
Linus Torvalds committed
142
ifeq ($(CONFIG_ARCH_CLPS711X),y)
Linus Torvalds's avatar
Linus Torvalds committed
143
TEXTADDR	 = 0xc0028000
Linus Torvalds's avatar
Linus Torvalds committed
144 145 146
MACHINE		 = clps711x
endif

147 148 149 150
ifeq ($(CONFIG_ARCH_FORTUNET),y)
TEXTADDR	 = 0xc0008000
endif

Linus Torvalds's avatar
Linus Torvalds committed
151 152 153 154
ifeq ($(CONFIG_ARCH_ANAKIN),y)
MACHINE		 = anakin
endif

Linus Torvalds's avatar
Linus Torvalds committed
155 156 157 158 159 160 161 162 163
ifeq ($(CONFIG_ARCH_IOP310),y)
MACHINE		 = iop310
endif

ifeq ($(CONFIG_ARCH_ADIFCC),y)
MACHINE		= adifcc
endif

export	MACHINE PROCESSOR TEXTADDR GZFLAGS CFLAGS_BOOT
Linus Torvalds's avatar
Linus Torvalds committed
164

Linus Torvalds's avatar
Linus Torvalds committed
165 166 167
# Only set INCDIR if its not already defined above
# Grr, ?= doesn't work as all the other assignment operators do.  Make bug?
ifeq ($(origin INCDIR), undefined)
Linus Torvalds's avatar
Linus Torvalds committed
168
INCDIR		:=$(MACHINE)
Linus Torvalds's avatar
Linus Torvalds committed
169 170
endif

Linus Torvalds's avatar
Linus Torvalds committed
171 172 173 174
ifeq ($(origin DATAADDR), undefined)
DATAADDR	:= .
endif

Linus Torvalds's avatar
Linus Torvalds committed
175 176 177 178 179
# Do we have FASTFPE?
FASTFPE		:=arch/arm/fastfpe
ifeq ($(FASTFPE),$(wildcard $(FASTFPE)))
SUBDIRS		+=$(FASTFPE)
FASTFPE_OBJ	:=$(FASTFPE)/fast-math-emu.o
Linus Torvalds's avatar
Linus Torvalds committed
180 181
endif

Linus Torvalds's avatar
Linus Torvalds committed
182 183 184 185 186 187
# If we have a machine-specific directory, then include it in the build.
SUBDIRS		+=arch/arm/mach-$(MACHINE) \
		  arch/arm/kernel arch/arm/mm arch/arm/lib arch/arm/nwfpe
CORE_FILES	:=arch/arm/mach-$(MACHINE)/$(MACHINE).o \
		  arch/arm/kernel/kernel.o arch/arm/mm/mm.o $(CORE_FILES)
LIBS		:=arch/arm/lib/lib.a $(LIBS)
Linus Torvalds's avatar
Linus Torvalds committed
188

Linus Torvalds's avatar
Linus Torvalds committed
189
ifeq ($(CONFIG_FPE_NWFPE),y)
Linus Torvalds's avatar
Linus Torvalds committed
190
LIBS		:=arch/arm/nwfpe/math-emu.o $(LIBS)
Linus Torvalds's avatar
Linus Torvalds committed
191
endif
Linus Torvalds's avatar
Linus Torvalds committed
192

Linus Torvalds's avatar
Linus Torvalds committed
193
ifeq ($(CONFIG_FPE_FASTFPE),y)
Linus Torvalds's avatar
Linus Torvalds committed
194
LIBS		:=$(FASTFPE_OBJ) $(LIBS)
Linus Torvalds's avatar
Linus Torvalds committed
195
endif
Linus Torvalds's avatar
Linus Torvalds committed
196

Linus Torvalds's avatar
Linus Torvalds committed
197
ifeq ($(findstring y,$(CONFIG_ARCH_CLPS7500) $(CONFIG_ARCH_L7200)),y)
Linus Torvalds's avatar
Linus Torvalds committed
198
SUBDIRS		+=drivers/acorn/char
199
DRIVERS		+=drivers/acorn/char/built-in.o
Linus Torvalds's avatar
Linus Torvalds committed
200 201
endif

Linus Torvalds's avatar
Linus Torvalds committed
202 203
MAKEBOOT	 =$(MAKE) -C arch/$(ARCH)/boot
MAKETOOLS	 =$(MAKE) -C arch/$(ARCH)/tools
Linus Torvalds's avatar
Linus Torvalds committed
204

205 206 207
#	Update machine arch and proc symlinks if something which affects
#	them changed.  We use .arch and .proc to indicate when they were
#	updated last, otherwise make uses the target directory mtime.
Linus Torvalds's avatar
Linus Torvalds committed
208

209
include/asm-arm/.arch: $(wildcard include/config/arch/*.h)
210
	@echo '  Making asm-arm/arch -> asm-arm/arch-$(INCDIR) symlink'
211 212 213 214 215
	@rm -f include/asm-arm/arch
	@ln -sf arch-$(INCDIR) include/asm-arm/arch
	@touch $@

include/asm-arm/.proc: $(wildcard include/config/cpu/32.h) $(wildcard include/config/cpu/26.h)
216
	@echo '  Making asm-arm/proc -> asm-arm/proc-$(PROCESSOR) symlink'
217 218 219 220
	@rm -f include/asm-arm/proc
	@ln -sf proc-$(PROCESSOR) include/asm-arm/proc
	@touch $@

221 222 223 224 225
prepare: maketools

.PHONY: maketools
maketools: include/asm-arm/.arch include/asm-arm/.proc \
	 include/asm-arm/constants.h include/linux/version.h FORCE
226
	@$(MAKETOOLS)
Linus Torvalds's avatar
Linus Torvalds committed
227 228 229

vmlinux: arch/arm/vmlinux.lds

230 231 232 233
arch/arm/vmlinux.lds: arch/arm/Makefile $(LDSCRIPT) \
	$(wildcard include/config/cpu/32.h) \
	$(wildcard include/config/cpu/26.h) \
	$(wildcard include/config/arch/*.h)
234
	@echo '  Generating $@'
Linus Torvalds's avatar
Linus Torvalds committed
235
	@sed 's/TEXTADDR/$(TEXTADDR)/;s/DATAADDR/$(DATAADDR)/' $(LDSCRIPT) >$@
Linus Torvalds's avatar
Linus Torvalds committed
236 237 238 239

bzImage zImage zinstall Image bootpImage install: vmlinux
	@$(MAKEBOOT) $@

Linus Torvalds's avatar
Linus Torvalds committed
240 241 242 243
CLEAN_FILES	+= \
	arch/arm/vmlinux.lds

MRPROPER_FILES	+= \
244 245
	include/asm-arm/arch include/asm-arm/.arch \
	include/asm-arm/proc include/asm-arm/.proc \
Linus Torvalds's avatar
Linus Torvalds committed
246 247 248 249
	include/asm-arm/constants.h* \
	include/asm-arm/mach-types.h

# We use MRPROPER_FILES and CLEAN_FILES now
250
archmrproper: FORCE
Linus Torvalds's avatar
Linus Torvalds committed
251
	@/bin/true
Linus Torvalds's avatar
Linus Torvalds committed
252

253
archclean: FORCE
Linus Torvalds's avatar
Linus Torvalds committed
254 255 256 257 258 259 260
	@$(MAKEBOOT) clean

# My testing targets (that short circuit a few dependencies)
zImg:;	@$(MAKEBOOT) zImage
Img:;	@$(MAKEBOOT) Image
i:;	@$(MAKEBOOT) install
zi:;	@$(MAKEBOOT) zinstall
Linus Torvalds's avatar
Linus Torvalds committed
261
bp:;	@$(MAKEBOOT) bootpImage
Linus Torvalds's avatar
Linus Torvalds committed
262 263 264 265

#
# Configuration targets.  Use these to select a
# configuration for your architecture
Linus Torvalds's avatar
Linus Torvalds committed
266
%_config:
Linus Torvalds's avatar
Linus Torvalds committed
267 268 269
	@( \
	CFG=$(@:_config=); \
	if [ -f arch/arm/def-configs/$$CFG ]; then \
Linus Torvalds's avatar
Linus Torvalds committed
270
	  [ -f .config ] && mv -f .config .config.old; \
Linus Torvalds's avatar
Linus Torvalds committed
271
	  cp arch/arm/def-configs/$$CFG .config; \
Linus Torvalds's avatar
Linus Torvalds committed
272 273 274 275 276 277
	  echo "*** Default configuration for $$CFG installed"; \
	  echo "*** Next, you may run 'make oldconfig'"; \
	else \
	  echo "$$CFG does not exist"; \
	fi; \
	)
278 279 280 281 282 283 284 285 286 287

arch/$(ARCH)/kernel/asm-offsets.s: include/asm include/linux/version.h \
				   include/config/MARKER

include/asm-$(ARCH)/constants.h.tmp: arch/$(ARCH)/kernel/asm-offsets.s
	@$(generate-asm-offsets.h) < $< > $@

include/asm-$(ARCH)/constants.h: include/asm-$(ARCH)/constants.h.tmp
	@echo -n '  Generating $@'
	@$(update-if-changed)