linux-old/arch/arm/Makefile
<<
>>
Prefs
   1#
   2# arch/arm/Makefile
   3#
   4# This file is subject to the terms and conditions of the GNU General Public
   5# License.  See the file "COPYING" in the main directory of this archive
   6# for more details.
   7#
   8# Copyright (C) 1995-2001 by Russell King
   9
  10LINKFLAGS       :=-p -X -T arch/arm/vmlinux.lds
  11OBJCOPYFLAGS    :=-O binary -R .note -R .comment -S
  12GZFLAGS         :=-9
  13CFLAGS          +=-Uarm -fno-common -pipe
  14
  15ifeq ($(CONFIG_FRAME_POINTER),y)
  16CFLAGS          :=$(CFLAGS:-fomit-frame-pointer=-mapcs -mno-sched-prolog)
  17endif
  18
  19CFLAGS          :=$(CFLAGS:-O2=-Os)
  20
  21ifeq ($(CONFIG_DEBUG_INFO),y)
  22CFLAGS          +=-g
  23endif
  24
  25# Select CPU dependent flags.  Note that order of declaration is important;
  26# the options further down the list override previous items.
  27#
  28# Note!  For APCS-26 YOU MUST HAVE AN APCS-26 LIBGCC.A
  29#
  30apcs-y                          :=-mapcs-32
  31apcs-$(CONFIG_CPU_26)           :=-mapcs-26 -mcpu=arm3 -Os
  32
  33# This selects which instruction set is used.
  34# Note that GCC is lame - it doesn't numerically define an
  35# architecture version macro, but instead defines a whole
  36# series of macros.
  37arch-y                          :=
  38arch-$(CONFIG_CPU_32v3)         :=-D__LINUX_ARM_ARCH__=3 -march=armv3
  39arch-$(CONFIG_CPU_32v4)         :=-D__LINUX_ARM_ARCH__=4 -march=armv4
  40arch-$(CONFIG_CPU_32v5)         :=-D__LINUX_ARM_ARCH__=5 -march=armv5
  41
  42# This selects how we optimise for the processor.
  43tune-y                          :=
  44tune-$(CONFIG_CPU_ARM610)       :=-mtune=arm610
  45tune-$(CONFIG_CPU_ARM710)       :=-mtune=arm710
  46tune-$(CONFIG_CPU_ARM720T)      :=-mtune=arm7tdmi
  47tune-$(CONFIG_CPU_ARM920T)      :=-mtune=arm9tdmi
  48tune-$(CONFIG_CPU_ARM922T)      :=-mtune=arm9tdmi
  49tune-$(CONFIG_CPU_ARM926T)      :=-mtune=arm9tdmi
  50tune-$(CONFIG_CPU_SA110)        :=-mtune=strongarm110
  51tune-$(CONFIG_CPU_SA1100)       :=-mtune=strongarm1100
  52
  53CFLAGS_BOOT     :=$(apcs-y) $(arch-y) $(tune-y) -mshort-load-bytes -msoft-float -Uarm
  54CFLAGS          +=$(apcs-y) $(arch-y) $(tune-y) -mshort-load-bytes -msoft-float -Uarm
  55AFLAGS          +=$(apcs-y) $(arch-y) -mno-fpu -msoft-float
  56
  57ifeq ($(CONFIG_CPU_26),y)
  58PROCESSOR       := armo
  59  ifeq ($(CONFIG_ROM_KERNEL),y)
  60    DATAADDR     = 0x02080000
  61    TEXTADDR     = 0x03800000
  62    LDSCRIPT     = arch/arm/vmlinux-armo-rom.lds.in
  63  else
  64    TEXTADDR     = 0x02080000
  65    LDSCRIPT     = arch/arm/vmlinux-armo.lds.in
  66  endif
  67endif
  68
  69ifeq ($(CONFIG_CPU_32),y)
  70PROCESSOR        = armv
  71TEXTADDR         = 0xC0008000
  72LDSCRIPT         = arch/arm/vmlinux-armv.lds.in
  73endif
  74
  75ifeq ($(CONFIG_ARCH_ARCA5K),y)
  76MACHINE          = arc
  77endif
  78
  79ifeq ($(CONFIG_ARCH_RPC),y)
  80MACHINE          = rpc
  81endif
  82
  83ifeq ($(CONFIG_ARCH_EBSA110),y)
  84MACHINE          = ebsa110
  85CFLAGS_3c589_cs :=-DISA_SIXTEEN_BIT_PERIPHERAL
  86export CFLAGS_3c589_cs
  87endif
  88
  89ifeq ($(CONFIG_ARCH_CLPS7500),y)
  90MACHINE          = clps7500
  91INCDIR           = cl7500
  92endif
  93
  94ifeq ($(CONFIG_ARCH_RISCSTATION),y)
  95MACHINE          = riscstation
  96endif
  97
  98ifeq ($(CONFIG_FOOTBRIDGE),y)
  99MACHINE          = footbridge
 100INCDIR           = ebsa285
 101endif
 102
 103ifeq ($(CONFIG_ARCH_CO285),y)
 104TEXTADDR         = 0x60008000
 105MACHINE          = footbridge
 106INCDIR           = ebsa285
 107endif
 108
 109ifeq ($(CONFIG_ARCH_FTVPCI),y)
 110MACHINE          = ftvpci
 111INCDIR           = nexuspci
 112endif
 113
 114ifeq ($(CONFIG_ARCH_TBOX),y)
 115MACHINE          = tbox
 116endif
 117
 118ifeq ($(CONFIG_ARCH_SHARK),y)
 119MACHINE          = shark
 120endif
 121
 122ifeq ($(CONFIG_ARCH_SA1100),y)
 123ifeq ($(CONFIG_SA1111),y)
 124# SA1111 DMA bug: we don't want the kernel to live in precious DMA-able memory
 125TEXTADDR         = 0xc0208000
 126endif
 127MACHINE          = sa1100
 128endif
 129
 130ifeq ($(CONFIG_ARCH_L7200),y)
 131MACHINE          = l7200
 132endif
 133
 134ifeq ($(CONFIG_ARCH_INTEGRATOR),y)
 135MACHINE          = integrator
 136endif
 137
 138ifeq ($(CONFIG_ARCH_AT91RM9200),y)
 139MACHINE          = at91rm9200
 140endif
 141
 142ifeq ($(CONFIG_ARCH_MX1ADS),y)
 143MACHINE          = mx1ads
 144endif
 145
 146ifeq ($(CONFIG_ARCH_CAMELOT),y)
 147MACHINE          = epxa
 148endif
 149
 150ifeq ($(CONFIG_ARCH_CLPS711X),y)
 151TEXTADDR         = 0xc0028000
 152MACHINE          = clps711x
 153endif
 154
 155ifeq ($(CONFIG_ARCH_FORTUNET),y)
 156TEXTADDR         = 0xc0208000
 157endif
 158
 159ifeq ($(CONFIG_ARCH_ANAKIN),y)
 160MACHINE          = anakin
 161endif
 162
 163ifeq ($(CONFIG_ARCH_OMAHA),y)
 164MACHINE                = omaha
 165endif
 166
 167export  MACHINE PROCESSOR TEXTADDR GZFLAGS CFLAGS_BOOT OBJCOPYFLAGS
 168
 169# Only set INCDIR if its not already defined above
 170# Grr, ?= doesn't work as all the other assignment operators do.  Make bug?
 171ifeq ($(origin INCDIR), undefined)
 172INCDIR          :=$(MACHINE)
 173endif
 174
 175ifeq ($(origin DATAADDR), undefined)
 176DATAADDR        := .
 177endif
 178
 179# If we have a machine-specific directory, then include it in the build.
 180MACHDIR         := arch/arm/mach-$(MACHINE)
 181ifeq ($(MACHDIR),$(wildcard $(MACHDIR)))
 182SUBDIRS         += $(MACHDIR)
 183CORE_FILES      := $(MACHDIR)/$(MACHINE).o $(CORE_FILES)
 184endif
 185
 186HEAD            :=arch/arm/kernel/head-$(PROCESSOR).o \
 187                  arch/arm/kernel/init_task.o
 188SUBDIRS         +=arch/arm/kernel arch/arm/mm arch/arm/lib arch/arm/nwfpe
 189CORE_FILES      :=arch/arm/kernel/kernel.o arch/arm/mm/mm.o $(CORE_FILES)
 190LIBS            :=arch/arm/lib/lib.a $(LIBS)
 191
 192ifeq ($(CONFIG_FPE_NWFPE),y)
 193LIBS            :=arch/arm/nwfpe/math-emu.o $(LIBS)
 194endif
 195
 196# Only include fastfpe if it is part of the kernel tree.
 197FASTFPE         :=arch/arm/fastfpe
 198ifeq ($(FASTFPE),$(wildcard $(FASTFPE)))
 199SUBDIRS         +=$(FASTFPE)
 200ifeq ($(CONFIG_FPE_FASTFPE),y)
 201LIBS            :=arch/arm/fastfpe/fast-math-emu.o $(LIBS)
 202endif
 203endif
 204
 205ifeq ($(findstring y,$(CONFIG_USB_OHCI_SA1111) $(CONFIG_USB_OHCI_AT91)),y)
 206   SUBDIRS      +=arch/arm/common
 207   CORE_FILES   +=arch/arm/common/nopci.o
 208endif
 209
 210ifeq ($(findstring y,$(CONFIG_ARCH_CLPS7500) $(CONFIG_ARCH_L7200)),y)
 211SUBDIRS         +=drivers/acorn/char
 212DRIVERS         +=drivers/acorn/char/acorn-char.o
 213endif
 214
 215ifeq ($(CONFIG_ARCH_RISCSTATION),y)
 216SUBDIRS         +=drivers/acorn/char
 217DRIVERS         +=drivers/acorn/char/acorn-char.o
 218endif
 219
 220MAKEBOOT         =$(MAKE) -C arch/$(ARCH)/boot
 221MAKETOOLS        =$(MAKE) -C arch/$(ARCH)/tools
 222
 223# The following is a hack to get 'constants.h' up
 224# to date before starting compilation
 225
 226$(patsubst %,_dir_%, $(SUBDIRS)): maketools
 227$(patsubst %,_modsubdir_%,$(MOD_DIRS)): maketools
 228
 229symlinks: include/asm-arm/.arch include/asm-arm/.proc
 230
 231#       Update machine arch and proc symlinks if something which affects
 232#       them changed.  We use .arch and .proc to indicate when they were
 233#       updated last, otherwise make uses the target directory mtime.
 234
 235include/asm-arm/.arch: $(wildcard include/config/arch/*.h)
 236ifneq ("$(INCDIR)","")
 237        @echo '  Making asm-arm/arch -> asm-arm/arch-$(INCDIR) symlink'
 238        @rm -f include/asm-arm/arch
 239        @ln -sf arch-$(INCDIR) include/asm-arm/arch
 240        @touch $@
 241else
 242        @echo '  No architecture defined.  You may want to use a pre-packaged config.  make a5k_config, ebsa110_config, footbridge_config, etc.'
 243endif
 244
 245include/asm-arm/.proc: $(wildcard include/config/cpu/32.h) $(wildcard include/config/cpu/26.h)
 246ifneq ("$(INCDIR)","")
 247        @echo '  Making asm-arm/proc -> asm-arm/proc-$(PROCESSOR) symlink'
 248        @rm -f include/asm-arm/proc
 249        @ln -sf proc-$(PROCESSOR) include/asm-arm/proc
 250        @touch $@
 251else
 252        @echo '  No architecture defined.  You may want to use a pre-packaged config.  make a5k_config, ebsa110_config, footbridge_config, etc.'
 253endif
 254
 255.PHONY: maketools
 256maketools: include/asm-arm/.arch include/asm-arm/.proc \
 257        include/asm-arm/constants.h include/linux/version.h checkbin
 258        @$(MAKETOOLS)
 259
 260vmlinux: arch/arm/vmlinux.lds
 261
 262arch/arm/vmlinux.lds: arch/arm/Makefile $(LDSCRIPT) \
 263        $(wildcard include/config/cpu/32.h) \
 264        $(wildcard include/config/cpu/26.h) \
 265        $(wildcard include/config/arch/*.h)
 266        @echo '  Generating $@'
 267        @sed 's/TEXTADDR/$(TEXTADDR)/;s/DATAADDR/$(DATAADDR)/' $(LDSCRIPT) >$@
 268
 269arch/arm/kernel arch/arm/mm arch/arm/lib: dummy
 270        $(MAKE) CFLAGS="$(CFLAGS) $(CFLAGS_KERNEL)" $(subst $@, _dir_$@, $@)
 271
 272bzImage zImage zinstall Image bootpImage install: vmlinux
 273        @$(MAKEBOOT) $@
 274
 275CLEAN_FILES     += \
 276        arch/arm/vmlinux.lds
 277
 278MRPROPER_FILES  += \
 279        arch/arm/tools/constants.h* \
 280        include/asm-arm/arch include/asm-arm/.arch \
 281        include/asm-arm/proc include/asm-arm/.proc \
 282        include/asm-arm/constants.h* \
 283        include/asm-arm/mach-types.h
 284
 285# We use MRPROPER_FILES and CLEAN_FILES now
 286archmrproper: FORCE
 287        @/bin/true
 288
 289archclean: FORCE
 290        @$(MAKEBOOT) clean
 291
 292archdep: scripts/mkdep symlinks
 293        @$(MAKETOOLS) dep
 294        @$(MAKEBOOT) dep
 295
 296# Ensure this is ld "2.9.5" or later
 297NEW_LINKER      := $(shell $(LD) --gc-sections --version >/dev/null 2>&1; echo $$?)
 298
 299ifneq ($(NEW_LINKER),0)
 300checkbin: FORCE
 301        @echo '*** ${VERSION}.${PATCHLEVEL} kernels no longer build correctly with old versions of binutils.'
 302        @echo '*** Please upgrade your binutils to 2.9.5.'
 303        @false
 304else
 305checkbin: FORCE
 306        @true
 307endif
 308
 309.PHONY: FORCE
 310
 311# My testing targets (that short circuit a few dependencies)
 312zImg:;  @$(MAKEBOOT) zImage
 313Img:;   @$(MAKEBOOT) Image
 314i:;     @$(MAKEBOOT) install
 315zi:;    @$(MAKEBOOT) zinstall
 316bp:;    @$(MAKEBOOT) bootpImage
 317
 318#
 319# Configuration targets.  Use these to select a
 320# configuration for your architecture
 321%_config:
 322        @( \
 323        CFG=$(@:_config=); \
 324        if [ -f arch/arm/def-configs/$$CFG ]; then \
 325          [ -f .config ] && mv -f .config .config.old; \
 326          cp arch/arm/def-configs/$$CFG .config; \
 327          echo "*** Default configuration for $$CFG installed"; \
 328          echo "*** Next, you may run 'make oldconfig'"; \
 329        else \
 330          echo "$$CFG does not exist"; \
 331        fi; \
 332        )
 333
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.