xref: /utopia/UTPA2-700.0.x/mxlib/cfg_tool.mk (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1
2################################################################################
3#
4# Copyright (c) 2008-2009 MStar Semiconductor, Inc.
5# All rights reserved.
6#
7# Unless otherwise stipulated in writing, any and all information contained
8# herein regardless in any format shall remain the sole proprietary of
9# MStar Semiconductor Inc. and be kept in strict confidence
10# ("MStar Confidential Information") by the recipient.
11# Any unauthorized act including without limitation unauthorized disclosure,
12# copying, use, reproduction, sale, distribution, modification, disassembling,
13# reverse engineering and compiling of the contents of MStar Confidential
14# Information is unlawful and strictly prohibited. MStar hereby reserves the
15# rights to any and all damages, losses, costs and expenses resulting therefrom.
16#
17#
18# Makefile used for configuring toolchain
19#
20# Required ENV
21#       $(ROOT) e.g //utopia/
22#
23# Supported TOOLCHAIN
24#       mips-linux-gnu
25#       mips-sde-elf
26#       mips2_fp_le
27#       aeon
28#       mipsisa32-elf (OBSOLETE)
29#
30# Effected ENV
31#       CFG_STDLIB_DIR =
32#       CFG_LINT       =
33#       CFG_CC_OPTS    +=
34#       CFG_LD_OPTS    +=
35#       CFG_AS_OPTS    +=
36#
37################################################################################
38
39
40# **********************************************
41# Tool Chain Configuration
42# **********************************************
43
44ifeq ($(TOOLCHAIN),mips-sde-elf)
45CFG_STDLIB_DIR = $(ROOT)/tools/mips-sde-elf/EL_mips32r2_msoft-float
46CFG_CC_OPTS += -$(ENDIAN) -mips32r2 -gdwarf-2 -G0
47
48ifeq ($(FPU_ENABLE), 1)
49CFG_CC_OPTS += -mhard-float
50CFG_LD_OPTS += -$(ENDIAN) -mhard-float
51else
52CFG_CC_OPTS += -msoft-float
53CFG_LD_OPTS += -$(ENDIAN) -msoft-float
54endif
55
56CFG_AS_OPTS += -$(ENDIAN) -mips32 -gdwarf2
57CFG_LINT    = $(ROOT)/tools/lint/mips-sde-elf_include
58CFG_TOOLCHAIN_VER = 4.3.2
59endif
60
61
62#### OBSOLETE ####
63ifeq ($(TOOLCHAIN),mipsisa32-elf)
64CFG_STDLIB_DIR = $(ROOT)/tools/mipsisa32-elf/EL_mips32r2_msoft-float
65ifeq ($(FPU_ENABLE), 1)
66CFG_CC_OPTS += -$(ENDIAN) -mips32 -gdwarf-2 -mhard-float -G0
67else
68CFG_CC_OPTS += -$(ENDIAN) -mips32 -gdwarf-2 -msoft-float -G0
69endif
70CFG_LD_OPTS += -$(ENDIAN)
71CFG_AS_OPTS += -$(ENDIAN) -mips32 -gdwarf2
72CFG_LINT    = $(ROOT)/tools/lint/mipsisa32-elf_include
73CFG_TOOLCHAIN_VER =
74endif
75#### OBSOLETE ####
76
77
78ifeq ($(TOOLCHAIN),mips2_fp_le)
79CFG_STDLIB_DIR =
80CFG_CC_OPTS += -mips32 -fPIC -G0
81CFG_LD_OPTS += -$(ENDIAN) -fPIC
82CFG_AS_OPTS += -$(ENDIAN) -mips32
83CFG_LINT    =
84ifeq ($(BLT_TYPE),debug)
85CFG_CC_OPTS += -gdwarf-2
86CFG_AS_OPTS += -gdwarf2
87endif
88CFG_TOOLCHAIN_VER =
89endif
90
91ifeq ($(TOOLCHAIN),arm-eabi)
92ifeq ($(PLATFORM), android)
93# All flags in project/xxx_android_x.x/Makefile
94else
95ifeq ($(CHIP),kaiser)
96CFG_STDLIB_DIR =
97CFG_CC_OPTS +=  -$(ENDIAN) -gdwarf-2 -march=armv7-a
98CFG_LD_OPTS +=  -$(ENDIAN) -Wl,--fix-cortex-a9
99CFG_AS_OPTS += -$(ENDIAN) -gdwarf-2 -march=armv7-a
100ifeq ($(FPU_ENABLE), 1)
101CFG_CC_OPTS += -mfpu=neon -mfloat-abi=softfp
102else
103CFG_CC_OPTS += -mfpu=neon -mfloat-abi=soft
104endif
105CFG_TOOLCHAIN_VER =
106endif
107endif
108endif
109
110ifeq ($(TOOLCHAIN), arm-unknown-linux-gnueabi)
111ifeq ($(PLATFORM), android)
112# All flags in project/xxx_googletv_x.x/Makefile
113else
114CFG_STDLIB_DIR =
115CFG_CC_OPTS +=  -$(ENDIAN)
116CFG_LD_OPTS +=  -$(ENDIAN)
117CFG_AS_OPTS += -$(ENDIAN) -march=armv7-a -mfpu=neon
118ifeq ($(FPU_ENABLE), 1)
119CFG_CC_OPTS += -mfloat-abi=softfp
120else
121CFG_CC_OPTS += -mfloat-abi=soft
122endif
123CFG_TOOLCHAIN_VER = 4.5.3
124endif
125endif
126
127
128ifeq ($(TOOLCHAIN),armv7a-cros-linux-gnueabi)
129CFG_STDLIB_DIR =
130CFG_CC_OPTS +=  -$(ENDIAN) -gdwarf-2 -fPIC -march=armv7-a
131CFG_LD_OPTS +=  -$(ENDIAN) -fPIC
132CFG_AS_OPTS +=  -$(ENDIAN) -gdwarf2 -march=armv7-a
133ifeq ($(FPU_ENABLE), 1)
134CFG_CC_OPTS += -mfpu=neon -mfloat-abi=hard
135else
136CFG_CC_OPTS += -mfpu=vfpv3 -mfloat-abi=soft
137endif
138endif
139
140
141ifeq ($(TOOLCHAIN),arm-none-eabi)
142CFG_STDLIB_DIR =
143CFG_CC_OPTS += -$(ENDIAN) -gdwarf-2 -fPIC -march=armv7-a
144ifeq ($(OS_TYPE),ecos)
145CFG_CC_OPTS += -fno-short-enums
146endif
147CFG_LD_OPTS += -$(ENDIAN) -fPIC
148CFG_AS_OPTS += -$(ENDIAN) -gdwarf2 -march=armv7-a
149ifeq ($(FPU_ENABLE), 1)
150CFG_CC_OPTS += -mfpu=neon -mfloat-abi=softfp
151else
152CFG_CC_OPTS += -mfpu=neon -mfloat-abi=soft
153CFG_TOOLCHAIN_VER =
154endif
155endif
156
157ifeq ($(TOOLCHAIN),arm-linux-gnueabihf)
158CFG_STDLIB_DIR =
159CFG_CC_OPTS +=  -$(ENDIAN) -gdwarf-2 -fPIC -march=armv7-a
160CFG_LD_OPTS +=  -$(ENDIAN) -fPIC
161CFG_AS_OPTS +=  -$(ENDIAN) -gdwarf2 -march=armv7-a
162CFG_CC_EXTRA_OPTS += -fno-peephole2 -Wno-unused-but-set-variable
163export PATH   :=  /tools/arm/MStar/linaro-4.9.3-2014.11-arm-linux-gnueabihf/bin/:$(PATH)
164CFG_CC_OPTS += -mfpu=neon -mfloat-abi=hard
165CFG_TOOLCHAIN_VER =
166endif
167
168ifeq ($(TOOLCHAIN),arm-none-linux-gnueabi)
169ifeq ($(CHIP), $(filter $(CHIP), eagle eiffel))
170CFG_STDLIB_DIR =
171CFG_CC_OPTS +=  -$(ENDIAN) -gdwarf-2 -fPIC -march=armv7-a
172CFG_LD_OPTS +=  -$(ENDIAN) -fPIC
173CFG_AS_OPTS +=  -$(ENDIAN) -gdwarf2 -march=armv7-a
174ifeq ($(FPU_ENABLE), 1)
175CFG_CC_OPTS += -mfpu=neon -mfloat-abi=softfp
176else
177CFG_CC_OPTS += -mfpu=vfpv3 -mfloat-abi=soft
178endif
179CFG_TOOLCHAIN_VER = 4.5.1
180else
181
182ifeq ($(CHIP),kaiser)
183CFG_STDLIB_DIR =
184CFG_CC_OPTS +=  -$(ENDIAN) -gdwarf-2 -fPIC -march=armv7-a -mcpu=cortex-a9
185CFG_LD_OPTS +=  -$(ENDIAN) -fPIC
186CFG_AS_OPTS +=  -$(ENDIAN) -gdwarf2 -march=armv7-a -mcpu=cortex-a9
187ifeq ($(FPU_ENABLE), 1)
188CFG_CC_OPTS += -mfpu=neon -mfloat-abi=softfp
189else
190CFG_CC_OPTS += -mfpu=vfpv3 -mfloat-abi=soft
191endif
192CFG_TOOLCHAIN_VER =
193else
194
195ifeq ($(CHIP), $(filter $(CHIP), einstein nike madison miami napoli einstein3 monaco clippers muji munich celtics monet manhattan messi maserati maxim kano k6 curry k6lite k7u M7821 M7621 mustang))
196CFG_STDLIB_DIR =
197CFG_CC_OPTS +=  -$(ENDIAN) -gdwarf-2 -fPIC -march=armv7-a
198CFG_LD_OPTS +=  -$(ENDIAN) -fPIC
199CFG_AS_OPTS +=  -$(ENDIAN) -gdwarf2 -march=armv7-a
200CFG_CC_EXTRA_OPTS += -fno-peephole2 -Wno-unused-but-set-variable
201export PATH   :=  /tools/arm/arm-2012.09/bin/:/tools/arm/Google/armv7a-491/bin/:$(PATH)
202ifeq ($(FPU_ENABLE), 1)
203CFG_CC_OPTS += -mfpu=neon -mfloat-abi=softfp
204else
205CFG_CC_OPTS += -mfpu=vfpv3 -mfloat-abi=soft
206endif
207CFG_TOOLCHAIN_VER =
208else
209
210CFG_STDLIB_DIR =
211CFG_CC_OPTS +=  -$(ENDIAN) -gdwarf-2 -fPIC -march=armv7-a -mfpu=vfpv3
212CFG_LD_OPTS +=  -$(ENDIAN) -fPIC
213CFG_AS_OPTS +=  -$(ENDIAN) -gdwarf2 -march=armv7-a -mfpu=vfpv3
214ifeq ($(FPU_ENABLE), 1)
215CFG_CC_OPTS += -mfloat-abi=softfp
216else
217CFG_CC_OPTS += -mfloat-abi=soft
218endif
219CFG_TOOLCHAIN_VER = 4.5.1
220endif
221endif
222endif
223endif
224
225ifeq ($(TOOLCHAIN), aarch64-none-elf)
226CFG_STDLIB_DIR =
227CFG_CC_OPTS += -$(ENDIAN) -gdwarf-2 -fPIC -march=armv8-a -mabi=lp64 -Werror=int-to-pointer-cast -Werror=pointer-to-int-cast -Wno-unused-but-set-variable
228CFG_LD_OPTS += -$(ENDIAN) -fPIC
229CFG_AS_OPTS += -$(ENDIAN) -gdwarf2 -march=armv8-a -mabi=lp64 -mcpu=cortex-a53
230ifeq ($(FPU_ENABLE), 1)
231CFG_CC_OPTS += -mcpu=cortex-a53+fp
232else
233CFG_CC_OPTS += -mcpu=cortex-a53
234CFG_TOOLCHAIN_VER =
235endif
236endif
237
238ifeq ($(TOOLCHAIN), aarch64-linux-gnu)
239ifeq ($(CHIP), $(filter $(CHIP), muji manhattan messi maserati maxim kano k6 curry k7u M7821 M7621))
240CFG_STDLIB_DIR =
241CFG_CC_OPTS += -$(ENDIAN) -gdwarf-2 -fPIC -march=armv8-a -mabi=lp64 -Werror=int-to-pointer-cast -Werror=pointer-to-int-cast -Wno-unused-but-set-variable
242CFG_LD_OPTS += -$(ENDIAN) -fPIC  -Wl,-fix-cortex-a53-843419
243CFG_AS_OPTS += -$(ENDIAN) -gdwarf2 -march=armv8-a -mabi=lp64 -mcpu=cortex-a53
244export PATH   :=  /tools/arm/MStar/linaro-aarch64_linux-2014.09_843419-patched/bin/:$(PATH)
245ifeq ($(FPU_ENABLE), 1)
246CFG_CC_OPTS += -mcpu=cortex-a53+fp
247else
248CFG_CC_OPTS += -mcpu=cortex-a53
249CFG_TOOLCHAIN_VER =
250endif
251else
252CFG_STDLIB_DIR =
253CFG_CC_OPTS += -$(ENDIAN) -gdwarf-2 -fPIC -march=armv8-a -mabi=lp64 -Werror=int-to-pointer-cast -Werror=pointer-to-int-cast -Wno-unused-but-set-variable
254CFG_LD_OPTS += -$(ENDIAN) -fPIC
255CFG_AS_OPTS += -$(ENDIAN) -gdwarf2 -march=armv8-a -mabi=lp64 -mcpu=cortex-a53
256ifeq ($(FPU_ENABLE), 1)
257CFG_CC_OPTS += -mcpu=cortex-a53+fp
258else
259CFG_CC_OPTS += -mcpu=cortex-a53
260CFG_TOOLCHAIN_VER =
261endif
262endif
263endif
264
265ifeq ($(TOOLCHAIN_ALIAS), mips-linux-gnu-uclibc)
266TOOLCHAIN  = mips-linux-gnu
267ifeq ($(TOOLCHAIN),mips-linux-gnu)
268ifeq ($(PLATFORM), android)
269CFG_STDLIB_DIR =
270CFG_CC_OPTS += -$(ENDIAN) -fPIC -march=mips32r2 -mtune=mips32r2 -mips32r2 -G0 -muclibc
271CFG_LD_OPTS += -$(ENDIAN) -fPIC -muclibc
272CFG_AS_OPTS += -$(ENDIAN) -march=mips32r2 -mtune=mips32r2 -mips32r2
273#CFG_LINT    =
274ifeq ($(FPU_ENABLE), 1)
275CFG_CC_OPTS += -mhard-float
276else
277CFG_CC_OPTS += -msoft-float
278endif
279CFG_TOOLCHAIN_VER = 4.4.3
280
281else # PLATFORM != android
282CFG_STDLIB_DIR =
283CFG_CC_OPTS += -$(ENDIAN) -gdwarf-2 -fPIC -G0 -muclibc
284CFG_LD_OPTS += -$(ENDIAN) -fPIC -muclibc
285CFG_AS_OPTS += -$(ENDIAN) -gdwarf2
286CFG_LINT    = $(ROOT)/tools/lint/mips-linux-gnu_include
287ifeq ($(MIPS16_ENABLE), 1)
288CFG_CC_OPTS += -mips16 -D__MIPS16E__
289CFG_AS_OPTS += -mips16 -D__MIPS16E__
290else
291CFG_CC_OPTS += -mips32
292CFG_AS_OPTS += -mips32
293endif
294ifeq ($(FPU_ENABLE), 1)
295CFG_CC_OPTS += -mhard-float
296else
297CFG_CC_OPTS += -msoft-float
298endif
299CFG_TOOLCHAIN_VER =
300endif
301endif
302
303else # TOOLCHAIN_ALIAS != mips-linux-gnu-uclibc
304ifeq ($(TOOLCHAIN),mips-linux-gnu)
305ifeq ($(PLATFORM), android)
306CFG_STDLIB_DIR =
307CFG_CC_OPTS += -$(ENDIAN) -fPIC -march=mips32r2 -mtune=mips32r2 -mips32r2 -G0
308CFG_LD_OPTS += -$(ENDIAN) -fPIC
309CFG_AS_OPTS += -$(ENDIAN) -march=mips32r2 -mtune=mips32r2 -mips32r2
310#CFG_LINT    =
311ifeq ($(FPU_ENABLE), 1)
312CFG_CC_OPTS += -mhard-float
313else
314CFG_CC_OPTS += -msoft-float
315endif
316CFG_TOOLCHAIN_VER = 4.4.3
317
318else # PLATFORM != android
319CFG_STDLIB_DIR =
320CFG_CC_OPTS += -$(ENDIAN) -gdwarf-2 -fPIC -G0
321CFG_LD_OPTS += -$(ENDIAN) -fPIC
322CFG_AS_OPTS += -$(ENDIAN) -gdwarf2
323CFG_LINT    = $(ROOT)/tools/lint/mips-linux-gnu_include
324ifeq ($(MIPS16_ENABLE), 1)
325CFG_CC_OPTS += -mips16 -D__MIPS16E__
326CFG_AS_OPTS += -mips16 -D__MIPS16E__
327else
328CFG_CC_OPTS += -mips32
329CFG_AS_OPTS += -mips32
330endif
331ifeq ($(FPU_ENABLE), 1)
332CFG_CC_OPTS += -mhard-float
333else
334CFG_CC_OPTS += -msoft-float
335endif
336CFG_TOOLCHAIN_VER =
337endif
338endif
339endif
340
341ifeq ($(TOOLCHAIN),aeon-linux)
342CFG_STDLIB_DIR =
343CFG_CC_OPTS += -$(ENDIAN) -march=aeonR2 -fPIC -G0
344CFG_LD_OPTS +=
345CFG_AS_OPTS += -$(ENDIAN)
346CFG_LINT    = $(ROOT)/tools/lint/aeon_include
347ifeq ($(COPRO_TYPE), R2)
348CFG_CC_OPTS += -march=aeonR2
349CFG_TOOLCHAIN_VER = 4.4.3
350PATH:=/tools/aeon-elf443/aeon-elf-linux/bin:$(PATH)
351export PATH
352endif
353ifeq ($(COPRO_TYPE), AEON)
354CFG_TOOLCHAIN_VER = 4.1.2
355PATH:=/tools/aeon/bin:$(PATH)
356export PATH
357endif
358ifeq ($(CHIP), maria10)
359CFG_TOOLCHAIN_VER = 4.1.2
360PATH:=/tools/aeon/bin:$(PATH)
361export PATH
362endif
363ifeq ($(CHIP), macaw12)
364CFG_TOOLCHAIN_VER = 4.1.2
365PATH:=/tools/aeon/bin:$(PATH)
366export PATH
367endif
368endif
369
370ifeq ($(TOOLCHAIN),aeon)
371CFG_STDLIB_DIR =
372CFG_CC_OPTS += -$(ENDIAN) -mredzone-size=4 -mhard-mul -mhard-div -G0
373CFG_LD_OPTS +=
374CFG_AS_OPTS += -$(ENDIAN)
375CFG_LINT    = $(ROOT)/tools/lint/aeon_include
376ifeq ($(COPRO_TYPE), R2)
377CFG_CC_OPTS += -march=aeonR2
378CFG_TOOLCHAIN_VER = 4.4.3
379PATH:=/tools/aeon-elf443/aeon-elf-linux/bin:$(PATH)
380export PATH
381endif
382ifeq ($(COPRO_TYPE), AEON)
383CFG_TOOLCHAIN_VER = 4.1.2
384PATH:=/tools/aeon/bin:$(PATH)
385export PATH
386endif
387ifeq ($(CHIP), maria10)
388CFG_TOOLCHAIN_VER = 4.1.2
389PATH:=/tools/aeon/bin:$(PATH)
390export PATH
391endif
392ifeq ($(CHIP), macaw12)
393CFG_TOOLCHAIN_VER = 4.1.2
394PATH:=/tools/aeon/bin:$(PATH)
395export PATH
396endif
397ifeq ($(CHIP), eden)
398CFG_TOOLCHAIN_VER = 4.1.2
399PATH:=/tools/aeon/bin:$(PATH)
400export PATH
401endif
402ifeq ($(CHIP), euler)
403CFG_TOOLCHAIN_VER = 4.1.2
404PATH:=/tools/aeon/bin:$(PATH)
405export PATH
406endif
407endif
408
409ifeq ($(GCOV), 1)
410CFG_CC_OPTS += -fprofile-arcs -ftest-coverage
411endif
412
413ifeq ($(PARA), 1)
414CC          = cpptestscan --cpptestscanProjectName=unittest $(TOOLCHAIN)-gcc
415AS          = cpptestscan --cpptestscanProjectName=unittest $(TOOLCHAIN)-as
416LD          = cpptestscan --cpptestscanProjectName=unittest $(TOOLCHAIN)-ld
417AR          = cpptestscan --cpptestscanProjectName=unittest $(TOOLCHAIN)-ar
418else
419
420ifeq ($(CFG_TOOLCHAIN_VER),)
421CC          = $(TOOLCHAIN)-gcc
422AS          = $(TOOLCHAIN)-as
423else
424CC          = $(TOOLCHAIN)-gcc -V $(CFG_TOOLCHAIN_VER)
425AS          = $(TOOLCHAIN)-as
426endif
427
428LD          = $(TOOLCHAIN)-ld
429AR          = $(TOOLCHAIN)-ar
430endif
431OBJCOPY     = $(TOOLCHAIN)-objcopy
432OBJDUMP     = $(TOOLCHAIN)-objdump
433SIZE        = $(TOOLCHAIN)-size
434NM          = $(TOOLCHAIN)-nm
435STRIP       = $(TOOLCHAIN)-strip
436