276 lines
8.0 KiB
Plaintext
276 lines
8.0 KiB
Plaintext
# defs.icc - definitions for INTEL toolchain builds
|
|
#
|
|
# Copyright 2010-2015 Wind River Systems, Inc.
|
|
#
|
|
# modification history
|
|
# --------------------
|
|
# 01m,07apr15,rtm fix for VXW6-80633 fvolatile warnings
|
|
# 01l,20feb13,gvm Fix for WIND00397980
|
|
# 01k,14aug12,gvm remove unknown option from LP64 builds (WIND00271833)
|
|
# 01j,13jun11,mze add DEBUG FLAGS
|
|
# 01i,28jan11,pee WIND00252877
|
|
# 01h,27jan11,gvm fix for ICC internal error on Windows host while building
|
|
# c_demo (WIND00251598)
|
|
# 01g,25jan11,gvm Fix WIND00252564 for defect WIND00251195
|
|
# 01f,05jan11,rlp Added ICC_INLINE_DISABLE macro to disable inlining
|
|
# optimization.
|
|
# 01e,16nov10,pee WIND00240589
|
|
# 01d,10aug10,mze move fno-zero-ininiallized-in-bss from CFLAGS to
|
|
# CC_COMPILER and C++_COMPILER
|
|
# 01c,08apr10,pee adding missing vxWorks link flags
|
|
# 01b,01mar10,gvm refinements; assume only IA32 builds for now
|
|
# 01a,23feb10,mze created from defs.gnu
|
|
#
|
|
# DESCRIPTION
|
|
# This file contains default definitions and flags for builds that use the
|
|
# INTEL toolchain.
|
|
|
|
## generic defaults from defs.common come first, so they can be overridden
|
|
|
|
include $(TGT_DIR)/h/tool/common/defs.common
|
|
|
|
# get TOOL_COMMON_DIR, TOOL_DIAB and TOOL_GNU from TOOL
|
|
|
|
TOOL_FAMILY = icc
|
|
# TOOL_COMMON_DIR = $(subst icc,common,$(TOOL))
|
|
TOOL_COMMON_DIR = $(BUILD_FP_PREFIX)common$(BUILD_ENDIAN_SUFFIX)
|
|
TOOL_SPECIFIC_DIR = $(BUILD_FP_PREFIX)$(TOOL_FAMILY)$(BUILD_ENDIAN_SUFFIX)
|
|
TOOL_DIAB = $(subst icc,diab,$(TOOL))
|
|
TOOL_GNU = $(subst icc,gnu,$(TOOL))
|
|
TOOL_ICC = $(TOOL)
|
|
|
|
# Deprecated, use TOOL_FAMILY instead
|
|
TOOL_VENDOR = icc
|
|
|
|
# Preprocessor option forcing every input file to be treated as a "C" file
|
|
OPTION_LANG_C=-xc
|
|
|
|
## set path to gnu utilities
|
|
|
|
CC_HOST = $(WIND_HOST_TYPE)
|
|
|
|
# Set path to icc utilities:
|
|
# if WIND_ICC_PATH is set, then use it as the compiler base directory.
|
|
# else, if WIND_ICC_VERSION is set, use it.
|
|
# else, get the version from tools.version file.
|
|
|
|
ifneq ($(WIND_ICC_PATH),)
|
|
CC_BASE = $(subst \,/,$(WIND_ICC_PATH))
|
|
else
|
|
# set default version to WIND_ICC_VERSION set in
|
|
# $(WIND_BASE)/host/resource/hutils/tools.version, but allow environment,
|
|
# ARCH or CPU specific make fragment to override the value.
|
|
|
|
ifeq ($(WIND_ICC_VERSION),)
|
|
include $(WIND_BASE)/host/resource/hutils/tools.version
|
|
endif
|
|
CC_VERSION = $(WIND_ICC_VERSION)
|
|
endif
|
|
|
|
ifeq ($(WIND_HOST_TYPE),x86-win32)
|
|
ifneq ($(Path),)
|
|
export Path := $(CC_BIN_DIR);$(Path)
|
|
endif
|
|
ifneq ($(PATH),)
|
|
export PATH := $(CC_BIN_DIR);$(PATH)
|
|
endif
|
|
else
|
|
ifneq ($(PATH),)
|
|
export PATH := $(CC_BIN_DIR):$(PATH)
|
|
endif
|
|
endif
|
|
|
|
# Preprocessor option forcing every input file to be treated as a assembly
|
|
# file requiring C preprocessing
|
|
OPTION_LANG_ASM=-xassembler-with-cpp
|
|
|
|
# Library containing compiler support routines
|
|
CC_LIB=
|
|
CC_LIBINTRINSICS = -licc
|
|
|
|
|
|
OPTION_PP = -E
|
|
OPTION_PP_AS =
|
|
OPTION_PP_NOLINENO = -P
|
|
OPTION_PP_COMMENT = -C
|
|
OPTION_DOLLAR_SYMBOLS =
|
|
OPTION_DEPEND = -M -w
|
|
OPTION_DEPEND_GEN = -M -MG -w
|
|
OPTION_DEPEND_GEN_D = -MD
|
|
OPTION_DEPEND_C = $(OPTION_DEPEND_GEN)
|
|
OPTION_DEPEND_AS = $(OPTION_DEPEND)
|
|
OPTION_DEPEND_TARGET = -MT
|
|
OPTION_NO_WARNINGS = -w
|
|
OPTION_ANSI = -ansi
|
|
OPTION_OBJECT_ONLY = -c
|
|
OPTION_INCLUDE_DIR = -I
|
|
OPTION_CC_GENMAP = -Wl,-Map,$@.map,-cref
|
|
OPTION_LD_GENMAP = -Map $@.map -cref
|
|
|
|
OPTION_CC_SPLIT_SECTIONS = -ffunction-sections -fdata-sections
|
|
|
|
# this line has a space at the end ("-o ")
|
|
OPTION_OBJECT_NAME = -o
|
|
OPTION_EXE_NAME = $(OPTION_OBJECT_NAME)
|
|
OPTION_DEFINE_MACRO = -D
|
|
OPTION_PIC =
|
|
OPTION_POINTERS_VOLATILE =
|
|
|
|
CC_OPTIM_XO = -O
|
|
CC_OPTIM_DEBUG =
|
|
CC_OPTIM_DRIVER = $(CC_OPTIM_DEBUG)
|
|
CC_OPTIM_NORMAL = $(CC_OPTIM_DEBUG) $(CC_OPTIM_XO) -fstrength-reduce -fcombine-regs
|
|
CC_OPTIM_TARGET = $(CC_OPTIM_DEBUG) $(CC_OPTIM_XO)
|
|
|
|
LD_LINK_PATH_EXTRA += -L$(LD_LINK_TOOL_DIR)_$(CXX_STL_VARIANT)$(MINOR_OPTION_SUFFIX)
|
|
|
|
ifeq ($(CXX_STL_VARIANT),)
|
|
CXX_STL_VARIANT = standard
|
|
# If you would like to create projects using the abridged standard library,
|
|
# replace the above line with:
|
|
# CXX_STL_VARIANT = abridged
|
|
endif
|
|
|
|
# Old warning macros
|
|
CC_WARNINGS_ALL = -Wall
|
|
CC_WARNINGS_NONE =
|
|
|
|
# New warning macros. The new default is CC_WARNINGS_LOW, but for ICC
|
|
# we are leaving the setting the same as before (-Wall). As we switch
|
|
# to Diab, we are also requiring that the base library build be error
|
|
# AND warning free. The higher settings are for code inspection and lint
|
|
# purposes.
|
|
|
|
CC_WARNINGS_HIGH = $(CC_WARNINGS_ALL)
|
|
CC_WARNINGS_MED = $(CC_WARNINGS_ALL)
|
|
CC_WARNINGS_LOW = $(CC_WARNINGS_ALL)
|
|
|
|
CC_COMPILER = -ansi -fno-zero-initialized-in-bss
|
|
C++_COMPILER = -ansi -fno-zero-initialized-in-bss
|
|
|
|
ifeq ($(ICC_INLINE_DISABLE),TRUE)
|
|
CC_COMPILER += -inline-level=0
|
|
ifndef _WRS_CONFIG_LP64
|
|
CC_COMPILER += -opt-args-in-regs=none
|
|
endif
|
|
endif
|
|
|
|
# used by project facility
|
|
|
|
CC_PROJECT_OPTIMIZE_FLAGS = -O -O1 -O2 -O3 -O4
|
|
PROJECT_BSP_FLAGS_EXTRA = $(filter -fvolatile,$(CC_OPTIM_TARGET)) $(CC_SDA_FLAGS)
|
|
|
|
# For generating PIC code
|
|
# For T2.2, CC_PIC is only defined for MIPS architecture see defs.mips.
|
|
# CC_PIC = $(OPTION_PIC)
|
|
|
|
## C flags
|
|
|
|
#CFLAGS += -fno-zero-initialized-in-bss
|
|
|
|
## toolchain binaries
|
|
|
|
AS = aspentium
|
|
CC = icc
|
|
CF = CC
|
|
CXX = $(CC)
|
|
LD = ldpentium
|
|
RANLIB = ranlibpentium
|
|
CPP = $(CC) -E
|
|
CPP_PRINT_MACROS = $(CPP) -dM -E -pipe -ansi $(CC_INCLUDE) $(CC_DEFINES)
|
|
TCL = tclsh
|
|
WTXTCL = wtxtcl
|
|
OBJCPY = objcopypentium
|
|
SIZE = sizepentium
|
|
NM = nmpentium
|
|
AR = arpentium
|
|
|
|
LARGE_PROJECT = true
|
|
OPTION_INDIRECT_FILE = @
|
|
OPTION_NM_INDIRECT_FILE = @
|
|
|
|
NM_GLOB_FLAGS = -g
|
|
|
|
|
|
BOOTCONFIG_FLAGS =
|
|
|
|
define link_symdef
|
|
--defsym (word 1, $(1))=$(word 2, $(1))
|
|
endef
|
|
|
|
|
|
LDFLAGS = -X -N $(LDFLAGS_ENDIAN) $(LDFLAGS_VSB) $(LINK_FLAGS_EXTRA) $(_USER_LDFLAGS)
|
|
|
|
LD_ENTRY_OPT = -e
|
|
LD_PARTIAL_FLAGS = -X -r $(LD_PARTIAL_FLAGS_ENDIAN) $(LD_PARTIAL_FLAGS_VSB) $(LINK_FLAGS_EXTRA)
|
|
|
|
# Wherever possible we use the compiler driver as a frontend to
|
|
# the linker. In particular this facilitates the GNU -frepo
|
|
# template repository system. Configurations using GNU Tools
|
|
# but non-GNU linkers (such as SIMHPPA) should define
|
|
# GNU_USE_LD_TO_LINK = yes
|
|
|
|
ifdef _WRS_CONFIG_LP64
|
|
ICC_EXTRA_LINK_FLAGS = -m64
|
|
else
|
|
ICC_EXTRA_LINK_FLAGS =
|
|
endif
|
|
|
|
|
|
ifeq ($(GNU_USE_LD_TO_LINK),)
|
|
BASE_LD_PARTIAL_FLAGS = $(filter-out -r -nostdlib,$(LD_PARTIAL_FLAGS))
|
|
LD_PARTIAL = $(CC) $(ICC_EXTRA_LINK_FLAGS) -r -nostdlib $(patsubst %,$(OPTION_PASS_TO_LD)%,$(BASE_LD_PARTIAL_FLAGS))
|
|
OPTION_PASS_TO_LD = -Wl,
|
|
else
|
|
LD_PARTIAL = $(LD) $(LD_PARTIAL_FLAGS)
|
|
OPTION_PASS_TO_LD =
|
|
endif
|
|
|
|
# These are flags to pass to the linker the last time we do a
|
|
# relocatable link. They never get used by a bootable project
|
|
# and they only get used once by a downloadable project.
|
|
|
|
LD_SCRIPT_DOWNLOAD = -T $(TGT_DIR)/h/tool/icc/ldscripts/link.OUT
|
|
LD_COLLAPSE_SECTIONS = $(LD_SCRIPT_DOWNLOAD)
|
|
LD_PARTIAL_LAST_FLAGS = $(LD_COLLAPSE_SECTIONS)
|
|
|
|
LD_SCRIPT_RAM = -T $(TGT_DIR)/h/tool/icc/ldscripts/link.RAM
|
|
LD_SCRIPT_ROM = -T $(TGT_DIR)/h/tool/icc/ldscripts/link.ROM
|
|
|
|
# for cyclic link support
|
|
|
|
LD_START_GROUP = --start-group
|
|
LD_END_GROUP = --end-group
|
|
LD_PARTIAL_START_GROUP = $(OPTION_PASS_TO_LD)$(LD_START_GROUP)
|
|
LD_PARTIAL_END_GROUP = $(OPTION_PASS_TO_LD)$(LD_END_GROUP)
|
|
|
|
LD_DATA_SEG_ALIGN_FLAG = -defsym _VX_DATA_ALIGN
|
|
|
|
LD_LOW_FLAGS = -Ttext $(RAM_LOW_ADRS)
|
|
LD_HIGH_FLAGS = -Ttext $(RAM_HIGH_ADRS)
|
|
RES_LOW_FLAGS = -Ttext $(ROM_LINK_ADRS) -Tdata $(RAM_LOW_ADRS)
|
|
RES_HIGH_FLAGS = -Ttext $(ROM_LINK_ADRS) -Tdata $(RAM_HIGH_ADRS)
|
|
|
|
# Flags for VxWorks Project builds
|
|
|
|
LD_RAM_FLAGS = $(LD_LOW_FLAGS)
|
|
LD_ROM_CPY_FLAGS = $(ROM_LDFLAGS) $(RES_LDFLAGS) $(RES_HIGH_FLAGS)
|
|
LD_ROM_CMP_FLAGS = $(ROM_LDFLAGS) $(RES_LDFLAGS) $(RES_HIGH_FLAGS)
|
|
LD_ROM_RES_FLAGS= $(ROM_LDFLAGS) $(RES_LDFLAGS) $(RES_LOW_FLAGS)
|
|
|
|
# For 960 IMI
|
|
LD_IMI_ADRS = -Ttext $(IMI_TEXT_ADRS) -Tdata $(IMI_DATA_ADRS)
|
|
|
|
# linker flag for section splitting and removal of unused sections.
|
|
LD_REMOVE_UNUSED_SECTIONS = --gc-sections
|
|
|
|
# 64 bit mode linker options
|
|
LDFLAG_64BIT = -m elf_x86_64_vxworks
|
|
LD_PARTIAL_FLAG_64BIT = -m elf_x86_64_vxworks
|
|
|
|
# define data models supported for VIPs
|
|
ifdef TC_INFO
|
|
DATA_MODELS = ILP32 LP64
|
|
endif
|
|
|