linux/arch/arc/Makefile
<<
>>
Prefs
   1#
   2# Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
   3#
   4# This program is free software; you can redistribute it and/or modify
   5# it under the terms of the GNU General Public License version 2 as
   6# published by the Free Software Foundation.
   7#
   8
   9UTS_MACHINE := arc
  10
  11ifeq ($(CROSS_COMPILE),)
  12CROSS_COMPILE := arc-linux-uclibc-
  13endif
  14
  15KBUILD_DEFCONFIG := fpga_defconfig
  16
  17cflags-y        += -mA7 -fno-common -pipe -fno-builtin -D__linux__
  18
  19ifdef CONFIG_ARC_CURR_IN_REG
  20# For a global register defintion, make sure it gets passed to every file
  21# We had a customer reported bug where some code built in kernel was NOT using
  22# any kernel headers, and missing the r25 global register
  23# Can't do unconditionally because of recursive include issues
  24# due to <linux/thread_info.h>
  25LINUXINCLUDE    +=  -include ${src}/arch/arc/include/asm/current.h
  26endif
  27
  28upto_gcc42    :=  $(call cc-ifversion, -le, 0402, y)
  29upto_gcc44    :=  $(call cc-ifversion, -le, 0404, y)
  30atleast_gcc44 :=  $(call cc-ifversion, -ge, 0404, y)
  31atleast_gcc48 :=  $(call cc-ifversion, -ge, 0408, y)
  32
  33cflags-$(atleast_gcc44)                 += -fsection-anchors
  34
  35cflags-$(CONFIG_ARC_HAS_LLSC)           += -mlock
  36cflags-$(CONFIG_ARC_HAS_SWAPE)          += -mswape
  37cflags-$(CONFIG_ARC_HAS_RTSC)           += -mrtsc
  38cflags-$(CONFIG_ARC_DW2_UNWIND)         += -fasynchronous-unwind-tables
  39
  40# By default gcc 4.8 generates dwarf4 which kernel unwinder can't grok
  41ifeq ($(atleast_gcc48),y)
  42cflags-$(CONFIG_ARC_DW2_UNWIND)         += -gdwarf-2
  43endif
  44
  45ifndef CONFIG_CC_OPTIMIZE_FOR_SIZE
  46# Generic build system uses -O2, we want -O3
  47cflags-y  += -O3
  48endif
  49
  50# small data is default for elf32 tool-chain. If not usable, disable it
  51# This also allows repurposing GP as scratch reg to gcc reg allocator
  52disable_small_data := y
  53cflags-$(disable_small_data)            += -mno-sdata -fcall-used-gp
  54
  55cflags-$(CONFIG_CPU_BIG_ENDIAN)         += -mbig-endian
  56ldflags-$(CONFIG_CPU_BIG_ENDIAN)        += -EB
  57
  58# STAR 9000518362: (fixed with binutils shipping with gcc 4.8)
  59# arc-linux-uclibc-ld (buildroot) or arceb-elf32-ld (EZChip) don't accept
  60# --build-id w/o "-marclinux". Default arc-elf32-ld is OK
  61ldflags-$(upto_gcc44)                   += -marclinux
  62
  63ARC_LIBGCC                              := -mA7
  64cflags-$(CONFIG_ARC_HAS_HW_MPY)         += -multcost=16
  65
  66ifndef CONFIG_ARC_HAS_HW_MPY
  67        cflags-y        += -mno-mpy
  68
  69# newlib for ARC700 assumes MPY to be always present, which is generally true
  70# However, if someone really doesn't want MPY, we need to use the 600 ver
  71# which coupled with -mno-mpy will use mpy emulation
  72# With gcc 4.4.7, -mno-mpy is enough to make any other related adjustments,
  73# e.g. increased cost of MPY. With gcc 4.2.1 this had to be explicitly hinted
  74
  75        ifeq ($(upto_gcc42),y)
  76                ARC_LIBGCC      := -marc600
  77                cflags-y        += -multcost=30
  78        endif
  79endif
  80
  81LIBGCC  := $(shell $(CC) $(ARC_LIBGCC) $(cflags-y) --print-libgcc-file-name)
  82
  83# Modules with short calls might break for calls into builtin-kernel
  84KBUILD_CFLAGS_MODULE    += -mlong-calls
  85
  86# Finally dump eveything into kernel build system
  87KBUILD_CFLAGS   += $(cflags-y)
  88KBUILD_AFLAGS   += $(KBUILD_CFLAGS)
  89LDFLAGS         += $(ldflags-y)
  90
  91head-y          := arch/arc/kernel/head.o
  92
  93# See arch/arc/Kbuild for content of core part of the kernel
  94core-y          += arch/arc/
  95
  96# w/o this dtb won't embed into kernel binary
  97core-y          += arch/arc/boot/dts/
  98
  99core-$(CONFIG_ARC_PLAT_FPGA_LEGACY)     += arch/arc/plat-arcfpga/
 100core-$(CONFIG_ARC_PLAT_TB10X)           += arch/arc/plat-tb10x/
 101
 102drivers-$(CONFIG_OPROFILE)      += arch/arc/oprofile/
 103
 104libs-y          += arch/arc/lib/ $(LIBGCC)
 105
 106boot            := arch/arc/boot
 107
 108#default target for make without any arguements.
 109KBUILD_IMAGE    := bootpImage
 110
 111all:    $(KBUILD_IMAGE)
 112bootpImage: vmlinux
 113
 114boot_targets += uImage uImage.bin uImage.gz
 115
 116$(boot_targets): vmlinux
 117        $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
 118
 119%.dtb %.dtb.S %.dtb.o: scripts
 120        $(Q)$(MAKE) $(build)=$(boot)/dts $(boot)/dts/$@
 121
 122dtbs: scripts
 123        $(Q)$(MAKE) $(build)=$(boot)/dts dtbs
 124
 125archclean:
 126        $(Q)$(MAKE) $(clean)=$(boot)
 127
 128# Hacks to enable final link due to absence of link-time branch relexation
 129# and gcc choosing optimal(shorter) branches at -O3
 130#
 131# vineetg Feb 2010: -mlong-calls switched off for overall kernel build
 132# However lib/decompress_inflate.o (.init.text) calls
 133# zlib_inflate_workspacesize (.text) causing relocation errors.
 134# Thus forcing all exten calls in this file to be long calls
 135export CFLAGS_decompress_inflate.o = -mmedium-calls
 136export CFLAGS_initramfs.o = -mmedium-calls
 137ifdef CONFIG_SMP
 138export CFLAGS_core.o = -mmedium-calls
 139endif
 140