Blame view

kernel/linux-imx6_3.14.28/arch/arc/Makefile 4.27 KB
6b13f685e   김민수   BSP 최초 추가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
  #
  # 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
  
  ifeq ($(CROSS_COMPILE),)
  CROSS_COMPILE := arc-linux-uclibc-
  endif
  
  KBUILD_DEFCONFIG := fpga_defconfig
  
  cflags-y	+= -mA7 -fno-common -pipe -fno-builtin -D__linux__
  
  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 because of recursive include issues
  # due to <linux/thread_info.h>
  LINUXINCLUDE	+=  -include ${src}/arch/arc/include/asm/current.h
  endif
  
  upto_gcc42    :=  $(call cc-ifversion, -le, 0402, y)
  upto_gcc44    :=  $(call cc-ifversion, -le, 0404, y)
  atleast_gcc44 :=  $(call cc-ifversion, -ge, 0404, y)
  atleast_gcc48 :=  $(call cc-ifversion, -ge, 0408, 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
  
  # By default gcc 4.8 generates dwarf4 which kernel unwinder can't grok
  ifeq ($(atleast_gcc48),y)
  cflags-$(CONFIG_ARC_DW2_UNWIND)		+= -gdwarf-2
  endif
  
  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: (fixed with binutils shipping with gcc 4.8)
  # 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-$(upto_gcc44)			+= -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
  
  	ifeq ($(upto_gcc42),y)
  		ARC_LIBGCC	:= -marc600
  		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/
  
  # w/o this dtb won't embed into kernel binary
  core-y		+= arch/arc/boot/dts/
  
  core-$(CONFIG_ARC_PLAT_FPGA_LEGACY)	+= arch/arc/plat-arcfpga/
  core-$(CONFIG_ARC_PLAT_TB10X)		+= arch/arc/plat-tb10x/
  
  drivers-$(CONFIG_OPROFILE)	+= arch/arc/oprofile/
  
  libs-y		+= arch/arc/lib/ $(LIBGCC)
  
  boot		:= arch/arc/boot
  
  #default target for make without any arguements.
  KBUILD_IMAGE	:= bootpImage
  
  all:	$(KBUILD_IMAGE)
  bootpImage: vmlinux
  
  boot_targets += uImage uImage.bin uImage.gz
  
  $(boot_targets): vmlinux
  	$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
  
  %.dtb %.dtb.S %.dtb.o: scripts
  	$(Q)$(MAKE) $(build)=$(boot)/dts $(boot)/dts/$@
  
  dtbs: scripts
  	$(Q)$(MAKE) $(build)=$(boot)/dts dtbs
  
  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
  ifdef CONFIG_SMP
  export CFLAGS_core.o = -mmedium-calls
  endif