Makefile 4.0 KB
Newer Older
1 2 3 4 5 6 7 8 9 10
#
# Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#

UTS_MACHINE := arc

11 12 13 14
ifeq ($(CROSS_COMPILE),)
CROSS_COMPILE := arc-elf32-
endif

15 16 17 18
KBUILD_DEFCONFIG := fpga_defconfig

cflags-y	+= -mA7 -fno-common -pipe -fno-builtin -D__linux__

19 20
LINUXINCLUDE	+=  -include ${src}/arch/arc/include/asm/defines.h

21 22 23 24 25 26 27 28 29
ifdef CONFIG_ARC_CURR_IN_REG
# For a global register defintion, make sure it gets passed to every file
# We had a customer reported bug where some code built in kernel was NOT using
# any kernel headers, and missing the r25 global register
# Can't do unconditionally (like above) because of recursive include issues
# due to <linux/thread_info.h>
LINUXINCLUDE	+=  -include ${src}/arch/arc/include/asm/current.h
endif

30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
atleast_gcc44 :=  $(call cc-ifversion, -gt, 0402, y)
cflags-$(atleast_gcc44)			+= -fsection-anchors

cflags-$(CONFIG_ARC_HAS_LLSC)		+= -mlock
cflags-$(CONFIG_ARC_HAS_SWAPE)		+= -mswape
cflags-$(CONFIG_ARC_HAS_RTSC)		+= -mrtsc
cflags-$(CONFIG_ARC_DW2_UNWIND)		+= -fasynchronous-unwind-tables

ifndef CONFIG_CC_OPTIMIZE_FOR_SIZE
# Generic build system uses -O2, we want -O3
cflags-y  += -O3
endif

# small data is default for elf32 tool-chain. If not usable, disable it
# This also allows repurposing GP as scratch reg to gcc reg allocator
disable_small_data := y
cflags-$(disable_small_data)		+= -mno-sdata -fcall-used-gp

cflags-$(CONFIG_CPU_BIG_ENDIAN)		+= -mbig-endian
ldflags-$(CONFIG_CPU_BIG_ENDIAN)	+= -EB

# STAR 9000518362:
# arc-linux-uclibc-ld (buildroot) or arceb-elf32-ld (EZChip) don't accept
# --build-id w/o "-marclinux".
# Default arc-elf32-ld is OK
ldflags-y				+= -marclinux

ARC_LIBGCC				:= -mA7
cflags-$(CONFIG_ARC_HAS_HW_MPY)		+= -multcost=16

ifndef CONFIG_ARC_HAS_HW_MPY
	cflags-y	+= -mno-mpy

# newlib for ARC700 assumes MPY to be always present, which is generally true
# However, if someone really doesn't want MPY, we need to use the 600 ver
# which coupled with -mno-mpy will use mpy emulation
# With gcc 4.4.7, -mno-mpy is enough to make any other related adjustments,
# e.g. increased cost of MPY. With gcc 4.2.1 this had to be explicitly hinted

	ARC_LIBGCC		:= -marc600
	ifneq ($(atleast_gcc44),y)
		cflags-y	+= -multcost=30
	endif
endif

LIBGCC	:= $(shell $(CC) $(ARC_LIBGCC) $(cflags-y) --print-libgcc-file-name)

# Modules with short calls might break for calls into builtin-kernel
KBUILD_CFLAGS_MODULE	+= -mlong-calls

# Finally dump eveything into kernel build system
KBUILD_CFLAGS	+= $(cflags-y)
KBUILD_AFLAGS	+= $(KBUILD_CFLAGS)
LDFLAGS		+= $(ldflags-y)

head-y		:= arch/arc/kernel/head.o

# See arch/arc/Kbuild for content of core part of the kernel
core-y		+= arch/arc/

V
Vineet Gupta 已提交
90 91 92
# w/o this dtb won't embed into kernel binary
core-y		+= arch/arc/boot/dts/

93
core-$(CONFIG_ARC_PLAT_FPGA_LEGACY)	+= arch/arc/plat-arcfpga/
94
core-$(CONFIG_ARC_PLAT_TB10X)		+= arch/arc/plat-tb10x/
95

V
Vineet Gupta 已提交
96 97
drivers-$(CONFIG_OPROFILE)	+= arch/arc/oprofile/

98 99
libs-y		+= arch/arc/lib/ $(LIBGCC)

100 101
boot		:= arch/arc/boot

102
#default target for make without any arguements.
103
KBUILD_IMAGE	:= bootpImage
104 105 106 107

all:	$(KBUILD_IMAGE)
bootpImage: vmlinux

108 109 110
boot_targets += uImage uImage.bin uImage.gz

$(boot_targets): vmlinux
111 112
	$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@

V
Vineet Gupta 已提交
113 114 115 116 117 118
%.dtb %.dtb.S %.dtb.o: scripts
	$(Q)$(MAKE) $(build)=$(boot)/dts $(boot)/dts/$@

dtbs: scripts
	$(Q)$(MAKE) $(build)=$(boot)/dts dtbs

119 120 121 122 123 124 125 126 127 128 129 130
archclean:
	$(Q)$(MAKE) $(clean)=$(boot)

# Hacks to enable final link due to absence of link-time branch relexation
# and gcc choosing optimal(shorter) branches at -O3
#
# vineetg Feb 2010: -mlong-calls switched off for overall kernel build
# However lib/decompress_inflate.o (.init.text) calls
# zlib_inflate_workspacesize (.text) causing relocation errors.
# Thus forcing all exten calls in this file to be long calls
export CFLAGS_decompress_inflate.o = -mmedium-calls
export CFLAGS_initramfs.o = -mmedium-calls
V
Vineet Gupta 已提交
131 132 133
ifdef CONFIG_SMP
export CFLAGS_core.o = -mmedium-calls
endif