Files
m241Neelima/vxworks-6.9/target/h/tool/diab/defs.diab
T
2026-07-30 11:19:44 +05:30

470 lines
17 KiB
Plaintext

# defs.diab - arch independent definitions specific to the Diab toolchain
#
# Copyright (c) 2000-2014, 2016 Wind River Systems, Inc.
#
# The right to copy, distribute, modify or otherwise make use of this software
# may be licensed only pursuant to the terms of an applicable Wind River
# license agreement.
#
# modification history
# --------------------
# 05b,11mar16,mcm Fix for VXW6-85391, adding the -Xclib-optim-off option for
# C++ sources as well.
# 05a,25jul14,mcm Removing 4144 from the list of suppressed warnings to allow
# the use of the 5.9.4.x compiler.
# 04z,12nov13,elp prevent warning when building symbol table (WIND00442321).
# 04y,23oct13,dee ignore additional warnings. WIND00440418
# 04x,29aug12,mze change to system-headers warning
# 04w,27jul12,mcm Fix for WIND00347537 - putting back the required space
# after "-o".
# 04v,22jun12,mze WIND00329947 "-W:c++:.CPP" added to commadline
# 04u,18apr12,mze disable Xlint
# 04t,18oct11,dxp remove no proxy define
# 04s,18jul11,dxp port 6.10 changes for ecloud build to disable lmproxy
# 04r,15jun11,mze changes for DEBUG
# 04q,10jun11,mze add support for DEBUG_FLAG
# 04p,28jan11,mcm Fix for WIND00252752 (updating compiler warning level)
# 04o,19jan11,pee WIND00250470
# 04n,16nov10,pee WIND00240589
# 04m,15nov10,pee WIND00240599
# 04l,08nov10,zl added CC_WARNINGS_IGNORE_DEPRECATED.
# 04l,28oct10,pee WIND00233594
# 04k,06oct10,mcm Added the EDG_IGNORE warnings to the medium level warning
# option. Also added all currently seen 'info' messages to the
# ignored list and removed 4009 from the ignored list.
# 04j,29sep10,mcm Ignoring some new warnings introduced by the new EDG
# frontend.
# 04i,21sep10,mcm Switching to etoa for C89 kernel side compiles.
# 04l,18aug10,gvm moving to :vxworks69
# 04k,23jul10,v_r Added missing space at the end of the OPTION_OBJECT_NAME
# macro.
# 04j,13may10,pee adding line info to CPP and PTION_LD_GENMAP
# 04i,16dec09,mcm Adding option to enable warnings for system headers
# 04h,25aug09,pee WIND00178176 remove redundant MUNCH defs.
# 04g,04may09,mdo Add "vector" variation of TGT_FLAG_FP
# 04f,02jul09,mcm Moving to :vxworks68
# 04e,02jul09,pee define section splittion option for CC
# 04d,26jun09,pee adding defs for section splitting.
# 04c,11jul08,mcm Changing the environment from :vxworks66 to :vxworks67
# 04b,24jun08,pee VSB.
# 04a,18jun08,jpb Added VSB support by removing redundant assembly file
# define.
# 03z,11jun08,pee VSB adaptation.
# 03y,07jun07,pee reorganize SDA for VIPs
# 03x,11may07,dcc temporal disable of SDA builds.
# 03w,05may07,dcc added CC_SDA_FLAGS.
# 03v,08mar07,pee adding support for generic options
# 03u,28feb07,mcm Changing build environment to :vxworks66
# 03t,15jan07,mcm Changing the environment from :vxworks64 to :vxworks65
# 03s,19jul06,mcm Changing build environment to :vxworks64
# 03r,20apr06,lei added KERNEL_TYPE for SMP build
# 03q,11apr06,pee SPR 105777 - NULL file created in BSP under MS-Windows
# 03p,06feb06,pee adding support for linker symbol definition
# 03o,01dec05,mcm Changing build environment to :vxworks63
# 03n,31aug05,mcm Changing DIAB_T_ENVIRON to vxworks62
# 03m,22aug05,pee Added OPTION_DEPEND_TARGET
# 03l,18jul05,pee Added CC_LIBINTRINSICS
# 03k,08jul05,pee Added OPTION_CC_GENMAP
# 03j,29apr05,md Added OPTION_DEPEND_GEN_D
# 03i,31mar05,gvm Changing DIAB_T_ENVIRON to vxworks61
# 03h,16feb05,pee Added OPTION_POINTERS_VOLATILE
# 03j,24jan05,aeg added -Xforce-declarations to CC_WARNINGS_LOW (SPR #106381).
# 03g,03jul04,f_b Improved support for data alignment
# 03f,11jun04,mcm Removed -Wa,-Xsemi-is-newline (will come from .conf file).
# Also removed -Xstrings-in-text=0 from CC_WARNINGS_MED.
# 03f,15jun04,fle SPR#98164 : substitute backslashes with slashes in CC_BASE
# 03e,29apr04,c_c Get compiler version from the resource file.
# 03d,04may04,mcm Updating compiler version to 5.2.0.2
# 03c,26apr04,f_b Removed absolute path to objcopy to prepare for new
# directory structure and align with how nm & size are found
# 03b,26mar04,mcm Using -Xpointers-volatile instead of the
# -Xmemory-is-volatile, which is too restrictive.
# 03a,25mar04,c_c Update the Path variable when exists (SPR #95324).
# 02z,05apr04,mcm Fix for SPR 95829 - using the new macro LD_LINK_TOOL_DIR
# to set the path for Diab C++ libraries.
# 02y,12mar04,c_c Updated version to 5.2.0.1
# 02x,18feb04,mcm Using vxworks60 instead of base6
# 02w,09feb04,fle Updated to new host utilities location
# 02v,28jan04,dat Diab compiler level warnings
# 02u,22jan04,zmm Moved definitions of ROM_ENTRY, SYS_ENTRY and USR_ENTRY
# into defs.common
# 02t,09jan04,c_c Don't hardcode compiler path in macro (SPR #92774).
# 02s,07nov03,c_c Check compiler version.
# 02r,27oct03,dat adding -ei1499 to ignore empty file warning (broken)
# 02q,08oct03,dat New warning flags and settings, created
# CC_WARNINGS_OLD to be the old settings.
# 02p,13may03,sn removed autosetting of -Xc++-abr (does not work with project
# facility, causes confusion if tcInfo regenerated with
# CXX_STL_VARIANT=abridged).
# 02o,08apr03,sn use -r5 instead of -r for partial links
# 02n,19mar03,sn use Diab ddump for NM and SIZE
# 02m,18feb03,sn added support for Diab 5.1 standard vs abridged library
# 02o,17sep03,yvp Added -Xcpp-no-space to OPTION_PP_AS.
# 02n,05sep03,pch parameterize Diab "environment" setting
# 02m,19aug03,fle SPR#88802, set TCL to tclsh and added WTXTCL macro
# 02l,08may02,jab removed -Xexception as it is default
# 02k,01may02,sn Define TOOL_FAMILY, deprecate TOOL_VENDOR
# 02j,18apr02,jab workaround CPP_PRINT_MACROS problem of writing .o (SPR75718
# + SPR75486)
# 02i,03apr02,jab made -Xmismatch-warning only visible to C
# 02h,21mar02,rbl adding macro so that project facility can add
# -Xmemory-is-volatile to bsp files
# 02g,22mar02,dat Adding PIC flags for bootInit.o (72825)
# 02f,13mar02,sn SPR 74080 - added large project support for Diab
# 02e,07mar02,jab added -Xlocal-data-area-static-only option
# 02d,14feb02,jab added -r4 to LD_PARTIAL_LAST_FLAGS
# 02c,06feb02,t_m change ranlib to ranlib$(TOOLENV)
# 02b,21jan02,sn removed obsolete WFC flags; removed unused C++_TEMPLATE_INST
# 02a,02jan02,jab use -Xclib-optim-off instead of -Xintrinsic-mask
# 01z,20dec01,jab use -r instead of -r4
# 01y,13dec01,jab added make variable BOOTCONFIG_FLAGS
# 01x,07dec01,dat Adding -w to all dependency generation macros
# 01x,05dec01,tpw Rename Diab linker scripts to facilitate regeneration from
# a common template.
# 01w,28nov01,jab modified ldscript path
# 01v,13nov01,tam changed definition of CC_LIB (repackaging)
# 01u,13nov01,dat adding project link flags
# 01t,05nov01,rbl let project facility know about optimization flags
# 01s,12nov01,tam remove -Xrescan-restart; changed TOOL_CONFIG to
# TOOL_COMMON_DIR
# 01r,12nov01,jab really fixed CPP_PRINT_MACROS
# 01q,12nov01,jab fixed CPP_PRINT_MACROS
# 01p,07nov01,jab added -Xgenerate-paddr to LD_FLAGS
# 01o,06nov01,sn pass the architecture name to munch
# 01n,06nov01,jab various flag changes and documentation
# 01m,03nov01,tam updated for repackaging
# 01l,01nov01,jab flag changes
# 01k,30oct01,tpw Take generic defaults from new fragment defs.common
# 01j,30oct01,sn Use GNU nm and objcopy
# 01i,30oct01,jab sync diab CPP definition with gnu
# 01h,29oct01,jab added new ld script variables
# 01g,24oct01,dat Relocating tool specific macros
# 01f,24oct01,jab added new dependency generation variables
# 01e,22oct01,jab cleaned up
# 01d,23oct01,dee remove nm$(TOOLENV)
# 01c,19oct01,jab added make variables for dependency generation option
# added missing OPTION_* make variables
# 01b,18oct01,dat Moving tool specifics out of h/make
# 01a,17feb00,jab created.
#
# DESCRIPTION
# This file contains architecture independent definitions and flags for the
# Diab tools (compiler, assembler, linker etc.)
#
#
# The following switches are used to compile C/C++ source. Most of these
# are being used to make the compiler lax regarding coding conventions
# used in many source files; however, some are being used to work around
# problems in specific source files.
#
#
# -Xintrinsic-mask=0x0 turn off generation of abs/fabs intrinsic; is
# this still needed?
#
## generic defaults from defs.common come first, so they can be overridden
include $(TGT_DIR)/h/tool/common/defs.common
# diab oes not yet support 64 bit.
# disable build spec generation for 64 bot configurations
ifdef _WRS_CONFIG_LP64
_BDGEN_EXCLUDE = TRUE
endif
## system name, used in -t settings
DIAB_T_ENVIRON = vxworks69
## get TOOL_COMMON_DIR, TOOL_DIAB and TOOL_GNU from TOOL
TOOL_FAMILY = diab
# TOOL_COMMON_DIR = $(subst diab,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 = $(TOOL)
TOOL_GNU = $(subst diab,gnu,$(TOOL))
# Deprecated, use TOOL_FAMILY instead
TOOL_VENDOR = diab
# Set path to diab utilities:
# if WIND_DIAB_PATH is set, then use it as the compiler base directory.
# else, if WIND_DIAB_VERSION is set, use it.
# else, get the version from tools.version file.
ifneq ($(WIND_DIAB_PATH),)
CC_BASE = $(subst \,/,$(WIND_DIAB_PATH))
else
# set default version to WIND_DIAB_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_DIAB_VERSION),)
include $(WIND_BASE)/host/resource/hutils/tools.version
endif
CC_VERSION = $(WIND_DIAB_VERSION)
endif
## set path to diab utilities
ifeq ($(WIND_HOST_TYPE),x86-win32)
CC_HOST = WIN32
else
ifeq ($(WIND_HOST_TYPE),sun4-solaris2)
CC_HOST = SUNS
else
CC_HOST = LINUX386
endif
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
## diab toolchain binaries
AR = dar
AS = $(CC)
CC = dcc
CXX = $(CC)
CPLUS = dplus
# CPP = $(CC) -E -Xpreprocessor-lineno-off
CPP = $(CC) -E
LD = dld
NM = ddump -Ng
## utility binaries
RANLIB = ranlib$(TOOLENV)
TCL = tclsh
WTXTCL = wtxtcl
OBJCPY = objcopy$(TOOLENV)
SIZE = ddump -Z
CF =
CPP_PRINT_MACROS = $(CC) $(TGT_FLAG) $(COMMON_COMPILER) -w -E \
-Xcpp-dump-symbols $(CC_INCLUDE) $(CC_DEFINES)
## project facility variables
LARGE_PROJECT = true
OPTION_INDIRECT_FILE = -@
OPTION_NM_INDIRECT_FILE = @
CC_PROJECT_OPTIMIZE_FLAGS = -O -XO
PROJECT_BSP_FLAGS_EXTRA = $(filter -Xpointers-volatile,$(CC_OPTIM_TARGET)) $(CC_SDA_FLAGS)
## C flags
OPTION_SYS_HEADERS = -Xsystem-headers-warn
COMMON_COMPILER = -W:c:,-Xclib-optim-off -W:c++:,-Xclib-optim-off -Xansi \
-Xlocal-data-area-static-only \
$(CC_WARN_SYSTEM_HEADERS) -W:c++:.CPP
C_COMPILER_FLAGS = -Xc-new -Xdialect-c89
ifeq ($(VX_CPU_FAMILY), ppc)
ifeq ($(SDA_DISABLE),)
CC_SDA_FLAGS = -Xsmall-const=8 -Xsmall-data=8
endif
endif
CC_ARCH_SPEC = $(TGT_FLAG)
CC_COMPILER = $(COMMON_COMPILER) $(C_COMPILER_FLAGS)
# floating point options
TGT_FLAG_FP_vector = V
TGT_FLAG_FP_hard = H
TGT_FLAG_FP_soft = S
TGT_FLAG_FP = $(TGT_FLAG_FP_$(_WRS_CONFIG_FP))
TGT_FLAG_ENDIAN = $(TGT_FLAG_ENDIAN_$(_WRS_CONFIG_ENDIAN))
CC_OPTIM_XO = -XO -Xsize-opt
CC_OPTIM_DEBUG =
CC_OPTIM_DISABLE = -Xoptimized-debug-off
CC_OPTIM_NORMAL = $(CC_OPTIM_DEBUG) $(CC_OPTIM_XO)
CC_OPTIM_TARGET = $(CC_OPTIM_DEBUG) $(CC_OPTIM_XO) -Xpointers-volatile
CC_OPTIM_DRIVER = $(CC_OPTIM_DEBUG) -Xpointers-volatile
# Compiler warning levels
# old T2.2 warning level (formerly part of CC_COMMON)
CC_WARNINGS_OLD_1 = -W:c:,-Xmismatch-warning=2 \
-ew1554,1551,1552,1086,1047,1547 \
-ei1516,1643,1604
CC_WARNINGS_OLD = $(CC_WARNINGS_OLD_1) -Xstrings-in-text=0
# old standard warning levels
CC_WARNINGS_ALL= $(CC_WARNINGS_OLD)
CC_WARNINGS_NONE= $(CC_WARNINGS_OLD)
# These are warnings issued by the EDG C89 frontend that can safely be ignored
CC_WARNINGS_EDG_IGNORE = -ei1518,4177,4223,4301,4550,5409,1606
CC_WARNINGS_INFO_IGNORE = -ei4193,4826,4381,4237,1573,4007,4082,4177,4223,4260,4550,5361,5828,2273,5387,5388
# These warnings are supressed in the product build
CC_WARNINGS_PDT_SUPRESS = -ei1522,4092,4111,4152,4167,4171,4174,4186,4188,4191,4192,4223,4231,4236,4284,4375,4494,4513,5152,5457
# option to override warnings for symbols declared with _WRS_DEPRECATED
CC_WARNINGS_IGNORE_DEPRECATED = -ei5457
# New warning levels, low, med, high
# Highest warning level, all warnings should be investigated, but do not fix
# by adding copious casts. Every cast is a potential code error in the
# future.
CC_WARNINGS_HIGH = $(CC_WARNINGS_INFO_IGNORE)
# medium warnings, Code SHOULD be warning free at this level. Avoid
# excessive casts just to eliminate warnings.
CC_WARNINGS_MED = $(CC_WARNINGS_OLD_1) $(CC_WARNINGS_EDG_IGNORE) $(CC_WARNINGS_INFO_IGNORE) $(CC_WARNINGS_PDT_SUPRESS)
# minimum warnings. Code MUST be warning free at this level. Apply all fixes
# necessary to eliminate every warning and error.
CC_WARNINGS_LOW = $(CC_WARNINGS_EDG_IGNORE) $(CC_WARNINGS_INFO_IGNORE) $(CC_WARNINGS_PDT_SUPRESS) -Xforce-declarations
# For T2.2, we only use this flag for GNU/MIPS combination.
# We will activate this for all arch's after T2.2 release (SPR 72825)
# CC_PIC = -Xcode-relative-far
## C++ flags
C++_COMPILER = $(COMMON_COMPILER)
## linker flags
define link_symdef
-D$(word 1, $(1))=$(word 2, $(1))
endef
LDFLAGS = $(TGT_FLAG) -X -N -Xgenerate-paddr $(LDFLAGS_VSB) $(_USER_LDFLAGS)
# -r5 is exactly the same as -r except that COMDAT sections
# (used for C++ templates) are collapsed. We collapse the
# sections at this point to avoid running into the ELF
# 65535 section limitation.
LD_PARTIAL_FLAGS = $(TGT_FLAG) -X -r5
LD_PARTIAL = $(LD) $(LD_PARTIAL_FLAGS)
LD_ENTRY_OPT = -e
# 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_PARTIAL_LAST_FLAGS = -r4
LD_SCRIPT_RAM = $(TGT_DIR)/h/tool/diab/ldscripts/link.RAM
LD_SCRIPT_ROM = $(TGT_DIR)/h/tool/diab/ldscripts/link.ROM
# for cyclic link support
LD_START_GROUP =
LD_END_GROUP =
LD_PARTIAL_START_GROUP =
LD_PARTIAL_END_GROUP =
LD_DATA_SEG_ALIGN_FLAG = $(OPTION_DEFINE_MACRO)_VX_DATA_ALIGN
LD_LOW_FLAGS = -D_VX_START_TEXT=0x$(RAM_LOW_ADRS)
LD_HIGH_FLAGS = -D_VX_START_TEXT=0x$(RAM_HIGH_ADRS)
RES_LOW_FLAGS = -D_VX_START_TEXT=0x$(ROM_LINK_ADRS) -D_VX_START_DATA=0x$(RAM_LOW_ADRS)
RES_HIGH_FLAGS = -D_VX_START_TEXT=0x$(ROM_LINK_ADRS) -D_VX_START_DATA=0x$(RAM_HIGH_ADRS)
# Flags for VxWorks Project builds
LD_RAM_FLAGS = $(LD_LOW_FLAGS)
LD_ROM_CPY_FLAGS = $(RES_HIGH_FLAGS)
LD_ROM_CMP_FLAGS = $(RES_HIGH_FLAGS)
LD_ROM_RES_FLAGS = $(RES_LOW_FLAGS)
# For 960 IMI
LD_IMI_ADRS = -D_VX_TEXT_START=0x$(IMI_TEXT_ADRS) -D_VX_DATA_START=0x$(IMI_DATA_ADRS)
## utility flags
NM_GLOB_FLAGS = -g
## bsp flags
# compressedEntry() must be first routine in .text section
BOOTCONFIG_FLAGS=-Xkill-opt=0x400000
## options
OPTION_PP = -E
OPTION_PP_AS = -Xpreprocess-assembly -Xcpp-no-space
OPTION_PP_NOLINENO = -Xpreprocessor-lineno-off
OPTION_PP_COMMENT = -C
OPTION_DEPEND = -Xmake-dependency -w
OPTION_DEPEND_GEN = -Xmake-dependency -Xincfile-missing-ignore -w
OPTION_DEPEND_GEN_D = -Xmake-dependency=0x04
OPTION_DEPEND_C = $(OPTION_DEPEND_GEN)
OPTION_DEPEND_AS = $(OPTION_DEPEND)
OPTION_DEPEND_TARGET = -Xmake-dependency-target=
OPTION_CC_GENMAP = -m6 > $@.map
OPTION_LD_GENMAP = -m6 > $@.map
OPTION_CC_SPLIT_SECTIONS = -Xsection-split=3
OPTION_DOLLAR_SYMBOLS = -Xdollar-in-ident
OPTION_ANSI = -Xansi
OPTION_PASS_TO_LD =
OPTION_NO_WARNINGS = -ei4147
OPTION_OBJECT_ONLY = -c
OPTION_INCLUDE_DIR = -I
OPTION_DEFINE_MACRO = -D
# this line has a space at the end ("-o ")
OPTION_OBJECT_NAME = -o
OPTION_EXE_NAME = $(OPTION_OBJECT_NAME)
OPTION_POINTERS_VOLATILE = -Xpointers-volatile
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
# Library containing compiler support routines
CC_LIB =
CC_LIBINTRINSICS = -ldcc
# linker flag for section splitting and removal of unused sections.
LD_REMOVE_UNUSED_SECTIONS = -Xremove-unused-sections
# define data models supported for VIPs
ifdef TC_INFO
DATA_MODELS = ILP32
endif
_LD_VXWORKS_LOADER_FLAGS = -r0x40000