# 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