270 lines
9.1 KiB
Gnuplot
270 lines
9.1 KiB
Gnuplot
# defs.gnu - definitions for GNU toolchain builds
|
|
#
|
|
# Copyright 2000-2005 Wind River Systems, Inc.
|
|
#
|
|
# modification history
|
|
# --------------------
|
|
# 03m,22aug05,pee Added OPTION_DEPEND_TARGET
|
|
# 02y,18jul05,pee Added CC_LIBINTRINSICS
|
|
# 02x,08Jul05,pee Added OPTION_CC_GENMAP
|
|
# 02w,29apr05,md Added OPTION_DEPEND_GEN_D
|
|
# 02v,16feb05,pee Added OPTION_POINTERS_VOLATILE
|
|
# 02u,15nov04,gvm Fix for SPR103853: no -P when pre-processing assembly files.
|
|
# 02t,16sep04,mcm Adding -fno-zero-initialized-in-bss
|
|
# 02s,12jul04,fle Improved support for data alignment
|
|
# 02r,15jun04,fle SPR#98164 : substitute backslashes with slashes in CC_BASE
|
|
# 02q,29apr04,c_c Get compiler version from the resource file.
|
|
# 02p,04may04,mcm Updating compiler version to 3.3.2-vxworks60
|
|
# 02o,26apr04,f_b Removed absolute path to objcopy to prepare for new
|
|
# directory structure and align with how nm & size are found
|
|
# 02n,03feb04,mcm Fix for SPR 93149
|
|
# 02m,09feb04,fle Updated to new host utilities location
|
|
# 02l,22jan04,zmm Moved definitions of ROM_ENTRY, SYS_ENTRY and USR_ENTRY
|
|
# into defs.common
|
|
# 02k,09jan04,c_c Don't hardcode compiler path in macro (SPR #92774).
|
|
# 02j,10dec03,dbt Updated for GCC 3.3.2 compiler
|
|
# 02i,07nov03,c_c Check compiler version.
|
|
# 02h,15oct03,dat New warning macros
|
|
# 02g,19aug03,fle SPR#88802, set TCL to tclsh and added WTXTCL macro
|
|
# 02f,06may02,sn SPR 76627 - Use CC to link by default
|
|
# 02e,03may02,tpw LD_SCRIPT_DOWNLOAD cannot be derived from LD_SCRIPT_RAM.
|
|
# It meshes poorly with scripts not named link.RAM (PPC4xx).
|
|
# 02d,01may02,sn Restore TOOL_VENDOR (some people use it)
|
|
# 02c,24apr02,sn SPR 75835 - collapse sections into text/data/bss before
|
|
# download
|
|
# 02b,24apr02,sn SPR 75123 - always munch -c (avoiding idiosyncratic asm
|
|
# behaviour)
|
|
# 02a,25apr02,pai introduced HLL_PREFIX so that prepended underscores could
|
|
# be redefined in architecture/toolchain fragments (SPR 73382)
|
|
# 01z,21mar02,rbl adding macro so that project facility can add -fvolatile to
|
|
# bsp files
|
|
# 01y,19mar02,dat Adding PIC flags for bootInit.o (72825)
|
|
# 01x,13mar02,sn SPR 74080 - added large project support for Diab
|
|
# 01w,12feb02,sn removed obsolete refs to GCC_EXEC_PREFIX
|
|
# 01v,06feb02,t_m change ranlib to ranlib$(TOOLENV)
|
|
# 01u,21jan02,sn removed obsolete WFC flags
|
|
# 01t,13dec01,jab added make variable BOOTCONFIG_FLAGS
|
|
# 01s,05dec01,tpw Use TGT_DIR to find linker scripts.
|
|
# 01r,13nov01,tam changed definition of CC_LIB (repackaging)
|
|
# 01q,05nov01,rbl let project facility know about optimization flags
|
|
# 01p,09nov01,tam fixed use of OPTION_PASS_TO_LD; renamed TOOL_CONFIG
|
|
# 01o,02nov01,dat adding -w to dependency generation options
|
|
# 01n,30oct01,tpw Take generic defaults from new fragment defs.common
|
|
# 01m,29oct01,jab added new ld script variables
|
|
# 01l,26oct01,tam fixed Wl usage after merge
|
|
# 01k,19oct01,j_s define cyclic link support macros
|
|
# add TOOL_CONFIG
|
|
# 01j,24oct01,dat Relocating tool specific macros
|
|
# 01i,24oct01,jab added new dependency generation variables
|
|
# 01h,23oct01,jab added variables from defs.default cleanup
|
|
# 01g,19oct01,jab added make variables for dependency generation option
|
|
# 01f,18oct01,dat Moving tool specific defines out of target/h/make
|
|
# 01e,12sep01,sn added LARGE_PROJECT, MUNCH_FLAGS and LD_PARTIAL
|
|
# 01d,05jun01,mem Added EXTRACT_HEX_FLAG, EXTRACT_BIN_FLAG, VMA_START &
|
|
# VMA_FLAGS
|
|
# 01c,13mar01,sn added defn of OPTION_LANG_ASM
|
|
# 01b,10jan01,sn added defn of OPTION_LANG_C
|
|
# 01a,16oct00,sn wrote
|
|
#
|
|
# DESCRIPTION
|
|
# This file contains default definitions and flags for builds that use the
|
|
# GNU 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 = gnu
|
|
TOOL_COMMON_DIR = $(subst gnu,common,$(TOOL))
|
|
TOOL_DIAB = $(subst gnu,diab,$(TOOL))
|
|
TOOL_GNU = $(TOOL)
|
|
|
|
# Deprecated, use TOOL_FAMILY instead
|
|
TOOL_VENDOR = gnu
|
|
|
|
# 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 gnu utilities:
|
|
# if WIND_GNU_PATH is set, then use it as the compiler base directory.
|
|
# else, if WIND_GNU_VERSION is set, use it.
|
|
# else, get the version from tools.version file.
|
|
|
|
ifneq ($(WIND_GNU_PATH),)
|
|
CC_BASE = $(subst \,/,$(WIND_GNU_PATH))
|
|
else
|
|
# set default version to WIND_GNU_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_GNU_VERSION),)
|
|
include $(WIND_BASE)/host/resource/hutils/tools.version
|
|
endif
|
|
CC_VERSION = $(WIND_GNU_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 = -lgcc
|
|
|
|
|
|
OPTION_PP = -E
|
|
OPTION_PP_AS =
|
|
OPTION_PP_NOLINENO = -P
|
|
OPTION_PP_COMMENT = -C
|
|
OPTION_DOLLAR_SYMBOLS = -fdollars-in-identifiers
|
|
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
|
|
|
|
# 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 = -fpic
|
|
OPTION_POINTERS_VOLATILE = -fvolatile
|
|
|
|
CC_OPTIM_DRIVER = -fvolatile
|
|
CC_OPTIM_NORMAL = -O -fstrength-reduce -fcombine-regs
|
|
CC_OPTIM_TARGET = -O -fvolatile
|
|
|
|
# Old warning macros
|
|
CC_WARNINGS_ALL = -Wall
|
|
CC_WARNINGS_NONE =
|
|
|
|
# New warning macros. The new default is CC_WARNINGS_LOW, but for GNU
|
|
# 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
|
|
C++_COMPILER = -ansi
|
|
|
|
# used by project facility
|
|
|
|
CC_PROJECT_OPTIMIZE_FLAGS = -O -O1 -O2 -O3 -O4
|
|
PROJECT_BSP_FLAGS_EXTRA = $(filter -fvolatile,$(CC_OPTIM_TARGET))
|
|
|
|
# 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 = as$(TOOLENV)
|
|
CC = cc$(TOOLENV)
|
|
CF = CC
|
|
CXX = $(CC)
|
|
LD = ld$(TOOLENV)
|
|
RANLIB = ranlib$(TOOLENV)
|
|
CPP = $(CC) -E -P
|
|
CPP_PRINT_MACROS = $(CPP) -dM -E -pipe $(CC_INCLUDE) $(CC_DEFINES)
|
|
TCL = tclsh
|
|
WTXTCL = wtxtcl
|
|
OBJCPY = objcopy$(TOOLENV)
|
|
SIZE = size$(TOOLENV)
|
|
NM = nm$(TOOLENV)
|
|
AR = ar$(TOOLENV)
|
|
|
|
MUNCH_SCRIPT = $(WIND_BASE)/host/resource/hutils/tcl/munch.tcl
|
|
MUNCH = $(TCL) $(MUNCH_SCRIPT) $(MUNCH_FLAGS)
|
|
|
|
LARGE_PROJECT = true
|
|
OPTION_INDIRECT_FILE = @
|
|
OPTION_NM_INDIRECT_FILE = @
|
|
|
|
MUNCH_FLAGS = -c $(TOOLENV)
|
|
NM_GLOB_FLAGS = -g
|
|
|
|
|
|
BOOTCONFIG_FLAGS =
|
|
|
|
|
|
LDFLAGS = -X -N
|
|
|
|
LD_ENTRY_OPT = -e
|
|
LD_PARTIAL_FLAGS = -X -r
|
|
|
|
# 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
|
|
|
|
ifeq ($(GNU_USE_LD_TO_LINK),)
|
|
BASE_LD_PARTIAL_FLAGS = $(filter-out -r -nostdlib,$(LD_PARTIAL_FLAGS))
|
|
LD_PARTIAL = $(CC) -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/gnu/ldscripts/link.OUT
|
|
LD_COLLAPSE_SECTIONS = $(LD_SCRIPT_DOWNLOAD)
|
|
LD_PARTIAL_LAST_FLAGS = $(LD_COLLAPSE_SECTIONS)
|
|
|
|
LD_SCRIPT_RAM = -T $(TGT_DIR)/h/tool/gnu/ldscripts/link.RAM
|
|
LD_SCRIPT_ROM = -T $(TGT_DIR)/h/tool/gnu/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)
|
|
|
|
# For 960 IMI
|
|
LD_IMI_ADRS = -Ttext $(IMI_TEXT_ADRS) -Tdata $(IMI_DATA_ADRS)
|