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