Makefile 7.51 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
Russell King's avatar
Russell King committed
11
LDFLAGS_BLOB	:=--format binary
12
AFLAGS_vmlinux.lds.o = -DTEXTADDR=$(TEXTADDR) -DDATAADDR=$(DATAADDR)
13
OBJCOPYFLAGS	:=-O binary -R .note -R .comment -S
Linus Torvalds's avatar
Linus Torvalds committed
14
GZFLAGS		:=-9
15 16 17
#CFLAGS		+=-pipe

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

19 20
ifeq ($(CONFIG_FRAME_POINTER),y)
CFLAGS		:=$(CFLAGS:-fomit-frame-pointer=-mapcs -mno-sched-prolog)
Linus Torvalds's avatar
Linus Torvalds committed
21 22
endif

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

Linus Torvalds's avatar
Linus Torvalds committed
27 28
# 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
29
#
Linus Torvalds's avatar
Linus Torvalds committed
30
apcs-$(CONFIG_CPU_32)		:=-mapcs-32
31
apcs-$(CONFIG_CPU_26)		:=-mapcs-26 -mcpu=arm3
Linus Torvalds's avatar
Linus Torvalds committed
32

Linus Torvalds's avatar
Linus Torvalds committed
33
# This selects which instruction set is used.
Russell King's avatar
Russell King committed
34 35 36 37 38 39 40
# Note that GCC is lame - it doesn't numerically define an
# architecture version macro, but instead defines a whole
# series of macros.
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
41

Linus Torvalds's avatar
Linus Torvalds committed
42
# This selects how we optimise for the processor.
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

53 54
# Force -mno-fpu to be passed to the assembler.  Some versions of gcc don't
# do this with -msoft-float
55 56
CFLAGS_BOOT	:=$(apcs-y) $(arch-y) $(tune-y) -mshort-load-bytes -msoft-float -Wa,-mno-fpu -Uarm
CFLAGS		+=$(apcs-y) $(arch-y) $(tune-y) -mshort-load-bytes -msoft-float -Wa,-mno-fpu -Uarm
57
AFLAGS		+=$(apcs-y) $(arch-y) -mno-fpu -msoft-float -Wa,-mno-fpu
Linus Torvalds's avatar
Linus Torvalds committed
58

Sam Ravnborg's avatar
Sam Ravnborg committed
59 60 61
#Default value
DATAADDR	:= .

Linus Torvalds's avatar
Linus Torvalds committed
62
ifeq ($(CONFIG_CPU_26),y)
Linus Torvalds's avatar
Linus Torvalds committed
63 64
PROCESSOR	:= armo
HEAD		:= arch/arm/mach-arc/head.o arch/arm/kernel/init_task.o
Russell King's avatar
Russell King committed
65
LDFLAGS_BLOB	+= --oformat elf26-littlearm
66
  ifeq ($(CONFIG_ROM_KERNEL),y)
Sam Ravnborg's avatar
Sam Ravnborg committed
67 68
    DATAADDR	 := 0x02080000
    textaddr-y	 := 0x03800000
69
  else
Sam Ravnborg's avatar
Sam Ravnborg committed
70
    textaddr-y	 := 0x02080000
71
  endif
Linus Torvalds's avatar
Linus Torvalds committed
72 73 74
endif

ifeq ($(CONFIG_CPU_32),y)
Sam Ravnborg's avatar
Sam Ravnborg committed
75
PROCESSOR	:= armv
Linus Torvalds's avatar
Linus Torvalds committed
76
HEAD		:= arch/arm/kernel/head.o arch/arm/kernel/init_task.o
Russell King's avatar
Russell King committed
77
LDFLAGS_BLOB	+= --oformat elf32-littlearm
Sam Ravnborg's avatar
Sam Ravnborg committed
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
textaddr-y	:= 0xC0008000
endif

 machine-$(CONFIG_ARCH_ARCA5K)	   := arc
 machine-$(CONFIG_ARCH_RPC)	   := rpc
 machine-$(CONFIG_ARCH_EBSA110)	   := ebsa110
 machine-$(CONFIG_ARCH_CLPS7500)   := clps7500
  incdir-$(CONFIG_ARCH_CLPS7500)   := cl7500
 machine-$(CONFIG_FOOTBRIDGE)	   := footbridge
  incdir-$(CONFIG_FOOTBRIDGE)	   := ebsa285
textaddr-$(CONFIG_ARCH_CO285)	   := 0x60008000
 machine-$(CONFIG_ARCH_CO285)	   := footbridge
  incdir-$(CONFIG_ARCH_CO285)	   := ebsa285
 machine-$(CONFIG_ARCH_FTVPCI)	   := ftvpci
  incdir-$(CONFIG_ARCH_FTVPCI)	   := nexuspci
 machine-$(CONFIG_ARCH_TBOX)	   := tbox
 machine-$(CONFIG_ARCH_SHARK)	   := shark
 machine-$(CONFIG_ARCH_SA1100)	   := sa1100
Linus Torvalds's avatar
Linus Torvalds committed
96
ifeq ($(CONFIG_ARCH_SA1100),y)
Linus Torvalds's avatar
Linus Torvalds committed
97
# SA1111 DMA bug: we don't want the kernel to live in precious DMA-able memory
Sam Ravnborg's avatar
Sam Ravnborg committed
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
textaddr-$(CONFIG_SA1111)	   := 0xc0208000
endif
 machine-$(CONFIG_ARCH_PXA)	   := pxa
 machine-$(CONFIG_ARCH_L7200)	   := l7200
 machine-$(CONFIG_ARCH_INTEGRATOR) := integrator
 machine-$(CONFIG_ARCH_CAMELOT)	   := epxa10db
textaddr-$(CONFIG_ARCH_CLPS711X)   := 0xc0028000
 machine-$(CONFIG_ARCH_CLPS711X)   := clps711x
textaddr-$(CONFIG_ARCH_FORTUNET)   := 0xc0008000
 machine-$(CONFIG_ARCH_ANAKIN)	   := anakin
 machine-$(CONFIG_ARCH_IOP310)	   := iop310
 machine-$(CONFIG_ARCH_ADIFCC)	   := adifcc

MACHINE  := $(machine-y)
TEXTADDR := $(textaddr-y)
ifeq ($(incdir-y),)
incdir-y := $(MACHINE)
endif
INCDIR   := $(incdir-y)
  
Linus Torvalds's avatar
Linus Torvalds committed
118
export	MACHINE PROCESSOR TEXTADDR GZFLAGS CFLAGS_BOOT
Linus Torvalds's avatar
Linus Torvalds committed
119

Linus Torvalds's avatar
Linus Torvalds committed
120 121 122
# Do we have FASTFPE?
FASTFPE		:=arch/arm/fastfpe
ifeq ($(FASTFPE),$(wildcard $(FASTFPE)))
123
FASTFPE_OBJ	:=$(FASTFPE)/
Linus Torvalds's avatar
Linus Torvalds committed
124 125
endif

Linus Torvalds's avatar
Linus Torvalds committed
126
# If we have a machine-specific directory, then include it in the build.
127 128 129 130
ifneq ($(MACHINE),)
core-y				+= arch/arm/mach-$(MACHINE)/
endif
core-y				+= arch/arm/kernel/ arch/arm/mm/
131 132
core-$(CONFIG_FPE_NWFPE)	+= arch/arm/nwfpe/
core-$(CONFIG_FPE_FASTFPE)	+= $(FASTFPE_OBJ)
Linus Torvalds's avatar
Linus Torvalds committed
133

134
drivers-$(CONFIG_ARCH_CLPS7500)	+= drivers/acorn/char/
135
drivers-$(CONFIG_ARCH_L7200)	+= drivers/acorn/char/
Linus Torvalds's avatar
Linus Torvalds committed
136

137
libs-y				+= arch/arm/lib/
Linus Torvalds's avatar
Linus Torvalds committed
138

Sam Ravnborg's avatar
Sam Ravnborg committed
139 140 141
# Default target when executing plain make
all: zImage

142
boot := arch/arm/boot
Linus Torvalds's avatar
Linus Torvalds committed
143

144 145 146
#	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
147

148
include/asm-arm/.arch: $(wildcard include/config/arch/*.h)
149
	@echo '  Making asm-arm/arch -> asm-arm/arch-$(INCDIR) symlink'
150 151 152 153 154
	@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)
155
	@echo '  Making asm-arm/proc -> asm-arm/proc-$(PROCESSOR) symlink'
156 157 158 159
	@rm -f include/asm-arm/proc
	@ln -sf proc-$(PROCESSOR) include/asm-arm/proc
	@touch $@

160 161
prepare: maketools

162
.PHONY: maketools FORCE
163
maketools: include/asm-arm/.arch include/asm-arm/.proc \
164
	   include/asm-arm/constants.h include/linux/version.h FORCE
165
	$(Q)$(MAKE) $(build)=arch/arm/tools include/asm-arm/mach-types.h
Sam Ravnborg's avatar
Sam Ravnborg committed
166 167 168

# Convert bzImage to zImage
bzImage: vmlinux
169
	$(Q)$(MAKE) $(build)=$(boot) $(boot)/zImage
Linus Torvalds's avatar
Linus Torvalds committed
170

171
zImage Image bootpImage: vmlinux
172
	$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
173

Sam Ravnborg's avatar
Sam Ravnborg committed
174
zinstall install: vmlinux
175
	$(Q)$(MAKE) $(build)=$(boot) $@
Linus Torvalds's avatar
Linus Torvalds committed
176

Linus Torvalds's avatar
Linus Torvalds committed
177
MRPROPER_FILES	+= \
178 179
	include/asm-arm/arch include/asm-arm/.arch \
	include/asm-arm/proc include/asm-arm/.proc \
Linus Torvalds's avatar
Linus Torvalds committed
180 181 182 183
	include/asm-arm/constants.h* \
	include/asm-arm/mach-types.h

# We use MRPROPER_FILES and CLEAN_FILES now
Sam Ravnborg's avatar
Sam Ravnborg committed
184
archclean:
185
	$(Q)$(MAKE) $(clean)=$(boot)
Linus Torvalds's avatar
Linus Torvalds committed
186 187

# My testing targets (that short circuit a few dependencies)
188 189 190 191 192
zImg:;	$(Q)$(MAKE) $(build)=$(boot) $(boot)/zImage
Img:;	$(Q)$(MAKE) $(build)=$(boot) $(boot)/Image
bp:;	$(Q)$(MAKE) $(build)=$(boot) $(boot)/bootpImage
i:;	$(Q)$(MAKE) $(build)=$(boot) install
zi:;	$(Q)$(MAKE) $(build)=$(boot) zinstall
Linus Torvalds's avatar
Linus Torvalds committed
193 194 195 196

#
# Configuration targets.  Use these to select a
# configuration for your architecture
Linus Torvalds's avatar
Linus Torvalds committed
197
%_config:
Linus Torvalds's avatar
Linus Torvalds committed
198 199 200
	@( \
	CFG=$(@:_config=); \
	if [ -f arch/arm/def-configs/$$CFG ]; then \
Linus Torvalds's avatar
Linus Torvalds committed
201
	  [ -f .config ] && mv -f .config .config.old; \
Linus Torvalds's avatar
Linus Torvalds committed
202
	  cp arch/arm/def-configs/$$CFG .config; \
Linus Torvalds's avatar
Linus Torvalds committed
203 204 205 206 207 208
	  echo "*** Default configuration for $$CFG installed"; \
	  echo "*** Next, you may run 'make oldconfig'"; \
	else \
	  echo "$$CFG does not exist"; \
	fi; \
	)
209 210 211 212

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

Sam Ravnborg's avatar
Sam Ravnborg committed
213
include/asm-$(ARCH)/constants.h: arch/$(ARCH)/kernel/asm-offsets.s
214
	@echo -n '  Generating $@'
Sam Ravnborg's avatar
Sam Ravnborg committed
215
	@$(generate-asm-offsets.h) < $< > $@.tmp
216
	@$(update-if-changed)
217 218 219 220 221 222 223 224 225 226 227 228

define archhelp
  echo  '* zImage        - Compressed kernel image (arch/$(ARCH)/boot/zImage)'
  echo  '  Image         - Uncompressed kernel image (arch/$(ARCH)/boot/Image)'
  echo  '  bootpImage    - Combined zImage and initial RAM disk' 
  echo  '  initrd        - Create an initial image'
  echo  '  install       - Install uncompressed kernel'
  echo  '  zinstall      - Install compressed kernel'
  echo  '                  Install using (your) ~/bin/installkernel or'
  echo  '                  (distribution) /sbin/installkernel or'
  echo  '                  install to $$(INSTALL_PATH) and run lilo'
endef