ROM Tools 13.1.0.1
Bug468 initialized static data built into a static library does not get initialized correctly
# Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
# All rights reserved.
# This component and the accompanying materials are made available
# under the terms of "Eclipse Public License v1.0"
# which accompanies this distribution, and is available
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
#
# Initial Contributors:
# Nokia Corporation - initial contribution.
#
# Contributors:
#
# Description:
# This file provides the definition of variables that are used by the component
# specific makefile. This is for the BPABI (Base Platform ABI) platform using the
# RVCT compiler.
# Path Settings
#
#
# Compiler Installation Location
CC_INSTALL_PATH=
#----------------------------------
# Programs used from the ToolChain
#----------------------------------
# C++ Compiler
CC=armcc
# Linker
LD=armlink
# Assembler
ASM=armasm
# Archiver
AR=armar
# Translator to translate the GCC inline assembler code
TRANASM=tranasm.bat
#--------------------
# Option Prefix
#--------------------
# This value will be used by the backend to segregate one option from the other.
# If option prefix is one among '+','*','.'or '?' (these metacharacters have specific predefined meaning
# for pattern matching in Perl) then it should be preceded with '\'.
OPTION_PREFIX=
#------------------
# Compiler Options
#------------------
# Flag whether the compiler requires Unix slashes for absolute paths
UNIX_SLASH_FOR_CC_ABS_PATHS=0
#-------------------
# Debug Mode Options
#-------------------
# Optimization Level in DEBUG mode
DEBUG_OPTIMISATION=-O0
# Option to produce debug information
DEBUG_OPTION=-g
DEBUG_FORMAT_DWARF2=--dwarf2
DEBUG_FORMAT_DWARF3=--dwarf3
# DWARF 2 is default on the ARMV5 build platform.
DEBUG_FORMAT=$(DEBUG_FORMAT_DWARF2)
# Specific compiler options for a UDEB build
SYMBIAN_UDEB_CCFLAGS=$(DEBUG_OPTION)
#-------------------------
# Target Processor Options
#-------------------------
# Option to select the appropriate target processor
ifeq "$(RVCT_VER_MAJOR)" "2"
TARGET_ARCH_OPTION=--cpu 5T
else
TARGET_ARCH_OPTION=--cpu 5TE
endif
# Option to generate the approproate ARM instruction set.
ARM_INSTRUCTION_SET=--arm
# Option to generate the approproate thumb instruction set.
THUMB_INSTRUCTION_SET=--thumb
# Compiler define for thumb instruction set
COMPILER_THUMB_DEFINES=-D__MARM_THUMB__
# Compiler define for interwork
COMPILER_INTERWORK_DEFINES=-D__MARM_INTERWORK__
# Option to specify the floating point conformance.
FPMODE_OPTION=--fpmode ieee_no_fenv
# Compiler option to select softvfp mode
SOFTVFPMODE_OPTION=--fpu softvfp
# Compiler option to select hardware floating point unit
VFP2MODE_OPTION=--fpu vfpv2
# Option to force all enumerations to be stored in as integers.
ENUM_OPTION=--enum_is_int
# Option to disable the generation of unaligned word and halfword accesses on ARMV6
# and ARMV7 processors.
ifeq "$(RVCT_VER_MAJOR)" "2"
NO_UNALIGNED_ACCESS=--memaccess -UL41
else
NO_UNALIGNED_ACCESS=--no_unaligned_access
endif
#---------------------------------
# Options controlling C++ Features
#---------------------------------
# Option for handling Virtual functions and Virtual Tables
EXPORT_VTBL_OPTION=--export_all_vtbl
# Disables unused virtual function elimination (VFE) in C++ mode. --vfe is the default
VFE_OPTION=--no_vfe
# Option to turn on exception handling
EXCEPTIONS=--exceptions --exceptions_unwind
NO_EXCEPTIONS=--no_exceptions --no_exceptions_unwind
#-------------------------------------------------------------------------
# Options controlling the ARM Architecture Procedure Call Standard (AAPCS)
#-------------------------------------------------------------------------
# This Option is for ARM Architecture Procedure Call Standard with the
# qualifier to support calls between the ARM and Thumb instruction sets.
AAPCS_OPTION=--apcs /inter
#-----------------------------------------------------------
# Options controlling generation of Compiler Warnings/Errors
#-----------------------------------------------------------
# Option to control the Compiler warnings
CC_WARNINGS_CONTROL_OPTION=--diag_suppress 161,611,654,997,1152,1300,1464,1488,6318,6331,2523
# Option to control the Compiler warnings for building Standard C++ application
CC_STDCPP_WARNINGS_CONTROL_OPTION=--diag_suppress 161,611,654,997,1152,1300,1464,1488,6318,6331
# Option to suppress the Compiler errors
CC_ERRORS_CONTROL_OPTION=--diag_error 1267
# Option to suppress the Compiler errors for building Standard C++
CC_STDCPP_ERRORS_CONTROL_OPTION=--diag_error 1267
# Option to modify the Compiler warnings and errors for Symbian OS
SYMBIAN_CC_MESSAGE_OPTION=$(CC_WARNINGS_CONTROL_OPTION) $(CC_ERRORS_CONTROL_OPTION)
#-----------------
# Optional Options
#-----------------
# Compiler option to avoid the generation of the intermediate files. (Optional)
TEMP_FILES_OPTION=
# Library Option
OWN_LIBRARY_OPTION=--library_interface=aeabi_clib
# Option to generate the Object File
COMPILE_ONLY_OPTION=-c
# Option to generate the Preprocessed File
PREPROCESSOR_OPTION=-E
# Other additional Options to be passed to the compiler
EXTRA_CC_OPTION=
#---------------------
# Preprocessor Options
#---------------------
# Prefix Header File passed to the preprocessor
PREFIXFILE=$(EPOCROOT)epoc32\include\rvct\rvct.h
# For .cpp Source files
CPP_LANG_OPTION=--cpp
# For .c Source files
C_LANG_OPTION=--c90
# For .cia Source files
CIA_LANG_OPTION=--cpp -D__CIA__
#-------------------
# Assembler Options
#-------------------
# Option to generate the Assembler instructions
ASSEMBLER_LISTING_OPTION=-S --interleave
# Output option used to pass the output file name
ASM_OUTPUT_OPTION=-o
#------------------
# Translator Options
#------------------
# Flags to be passed to the translator
TRANASM_FLAGS=-n -s
# Output option used to pass the output file name
TRANASM_OUTPUT_OPTION=-o=
# Input option used to pass the input file name
TRANASM_INPUT_OPTION=
#---------------------------
# Include Options and Files
#---------------------------
# Option to specify the location of the header files
INCLUDE_OPTION=-J
# Preinclude file for that compiler that contains all the compiler specific definitions
# required by the Symbian OS source code.
PREINCLUDE_OPTION=--preinclude $(EPOCROOT)epoc32\include\rvct\rvct.h
# Include options required by Function Call Logger
FC_LOGGER_INCLUDE_OPTION=-I
FC_LOGGER_DICTIONARY_FILE_NAME=--dictionary_file_name
FC_LOGGER_GENERATED_C_FILE_NAME=--gen_c_file_name
# Preinclude file to be passed to the Function Call Logger which uses EDG compiler
#PREINCLUDE_OPTION_FCLOGGER=$(FC_LOGGER_INCLUDE_OPTION) $(EPOCROOT)EPOC32\INCLUDE\RVCT --preinclude edg_rvct2_2.h
# Option to control the search for the header files. For example, if we do not want to do a search in the
# standard include directory of C++, then can restrict it by providing the appropriate option.
HEADER_FILES_CONTROL_OPTION=
# Path to pick the header files from the Compiler installation directory
COMPILER_INCLUDE_PATH=
# Fetches the version of the tools from the installation directory
VERSION_OPTION=
VERSION_INFO=
#---------------------
# Release Mode Options
#---------------------
# Optimization Level in RELEASE mode
REL_OPTIMISATION=-O2
# Specific compiler options for a UREL build
SYMBIAN_UREL_CCFLAGS=
#---------------------------------
# Symbol Attribute Setting Options
#---------------------------------
# Option to set the visibility of runtime symbols as DEFAULT (instead of HIDDEN)
RUNTIME_SYMBOL_VISIBILITY_OPTION=--dllimport_runtime
# Option to specify the output of the toolchain
OUTPUT_OPTION=-o
# Options to be passed when building System Target(kernel)
KERNEL_OPTIONS=$(ARM_INSTRUCTION_SET) $(NO_EXCEPTIONS)
# Options to be passed when building in Arm mode
ARM_OPTIONS=$(ARM_INSTRUCTION_SET)
# Options to be passed when building in Thumb mode
THUMB_OPTIONS=$(THUMB_INSTRUCTION_SET)
# Common compiler options for Arm and Thumb mode
COMMON_OPTIONS=$(DEBUG_FORMAT) $(SYMBIAN_CC_MESSAGE_OPTION)
# Invariant Options which cannot be modified by the user from MMP file
INVARIANT_OPTIONS= $(TARGET_ARCH_OPTION) $(ENUM_OPTION) $(OWN_LIBRARY_OPTION) $(FPMODE_OPTION) $(EXPORT_VTBL_OPTION) $(VFE_OPTION) $(AAPCS_OPTION)
# Common compiler options for compiling programs targeted at Symbian OS
#CCFLAGS=$(SYMBIAN_CC_MESSAGE_OPTION) $(EXCEPTIONS) $(TARGET_ARCH_OPTION) $(ENUM_OPTION) $(OWN_LIBRARY_OPTION) $(FPMODE_OPTION) $(EXPORT_VTBL_OPTION) $(VFE_OPTION) $(AAPCS_OPTION) $(TEMP_FILES_OPTION) $(HEADER_FILES_CONTROL_OPTION) $(COMPILE_ONLY_OPTION) $(EXTRA_CC_OPTION)
CCFLAGS=$(COMMON_OPTIONS) $(INVARIANT_OPTIONS) $(TEMP_FILES_OPTION) $(HEADER_FILES_CONTROL_OPTION) $(COMPILE_ONLY_OPTION) $(EXTRA_CC_OPTION)
#------------------
# Linker Options
#------------------
# Output option used to pass the output file name
LINKER_OUTPUT_OPTION=-o
# Option to generate debug information
LINKER_DEBUG_OPTION=--debug
# Option to *not* generate debug information.
LINKER_NODEBUG_OPTION=
#--------------------------------------------------------------
# Options to generate executables conforming to BPABI standards
#--------------------------------------------------------------
# Option to generate an executable conforming to the Base Platform ABI for the ARM Architecture
BPABI_OPTION=--bpabi
# The `R_ARM_TARGET1' relocation is typically used for entries in the `.init_array' section. It is
# interpreted as either `R_ARM_REL32' or `R_ARM_ABS32', depending on the target. The following option
# override the default export relocations.
TARGET_RELOCATION_OPTION=
#-------------------------------------
# Options to specify the output format
#-------------------------------------
# Option to create a relocatable ELF image. A relocatable image has a dynamic segment that contains
# relocations that can be used to relocate the image post link-time.
RELOCATABLE_IMAGE_OPTION=
# Option to create an ELF shared object.
SHARED_OBJECT_OPTION=--dll
#-------------------------------------------
# Options to set the Start of RO/RW sections
#-------------------------------------------
# Option to set the start of the code section (RO Region)
CODE_SEGMENT_START=
# Option to split object into RO and RW sections
SPLIT_OPTION=
# Option to set the start of the Data section (RW region)
RW_BASE_OPTION=--rw-base
# Option to be passed to the linker to set the start of the data section (RW region)
DATA_SEGMENT_START=$(SPLIT_OPTION) $(RW_BASE_OPTION)
#---------------------------------------------------------
# Options controlling generation of Linker Warnings/Errors
#---------------------------------------------------------
# Option to control the Linker warnings
LD_WARNINGS_CONTROL_OPTION=--diag_suppress 6331,6780,6319 --keep *(.init) --keep *(.fini) --keep *(.init_array) --keep *(.fini_array)
# Option to suppress the Linker errors
LD_ERRORS_CONTROL_OPTION=
# Option to modify the Linker warnings and errors for Symbian OS
SYMBIAN_LD_MESSAGE_OPTION=$(LD_WARNINGS_CONTROL_OPTION) $(LD_ERRORS_CONTROL_OPTION)
# Option to specify whether unresolved symbol references from regular object files can be allowed or not.
UNRESOLVED_SYMBOL_REF_OPTION=
# Option to specify the undefined reference
UNDEFINED_SYMBOL_REF_OPTION=
# Other additional Options to be passed to the Linker
EXTRA_LD_OPTION=--datacompressor=off
ifeq "$(RVCT_VER_MAJOR)" "3"
# Without this linker option, objects with ".directive" sections (i.e. objects
# created by RVCT 2.2) will cause problems.
EXTRA_LD_OPTION += --export_all
endif
#-------------------
#Entry Point Options
#-------------------
# Option to pass the explicit symbol for beginning execution of the program
LINKER_ENTRY_OPTION=--entry
# Symbol used to denote the Start of the grouped archives.
START_GROUP_SYMBOL=(
# Symbol used to denote the End of the grouped archives.
END_GROUP_SYMBOL=)
#-------------------------
# Library Specific Options
#-------------------------
# Option to control the search in the standard libraries
STDLIB_OPTION=--no_scanlib
# Additional static libraries that should automatically be supplied to the linker.
ifeq "$(RVCT_VER_MAJOR)" "2"
STATIC_LIBS_LIST=armlib\h_t__uf.l(switch8.o)
else
STATIC_LIBS_LIST=armlib\h_5.l(switch8.o)
endif
# Option to pass the path from where the runtime libraries should be picked up
STATIC_LIBS_PATH=--libpath
# Fetches the library path from the installation directory
STATIC_LIBRARY_PATH=
STATIC_LIBS=
# Additional runtime libraries that should be supplied to the linker.
RTVER:=$(RVCT_VER_MAJOR)_$(RVCT_VER_MINOR)
RUNTIME_LIBS_LIST=drtaeabi.dso dfpaeabi.dso dfprvct$(RTVER).dso drtrvct$(RTVER).dso
# The library that contains operator new and operator delete.
SYM_NEW_LIB=scppnwdl.dso
# Option to pass the path from where the runtime libraries should be picked up
RUNTIME_LIBS_PATH=
# Option to turn on implicit symbol versioning
SYMVER_OPTION=--symver_soname
# Option to specify the shared object name that is stored in the executable
SO_NAME_OPTION=--soname
# Option to generate the map file that provides information about the linking
LINKER_SYMBOLS_OPTION=--symbols
# Option to specify the Symbols file
LINKER_SYMBOLS_FILE_OPTION=--list
# Option to produce the Map file that provides information about linking
LINKER_SYMBOLS_MAP_OPTION=$(LINKER_SYMBOLS_OPTION) $(LINKER_SYMBOLS_FILE_OPTION)
# Option to specify the linker script file
LINKER_SCRIPT_FILE_OPTION=
#Via file prefixes
VIA_FILE_PREFIX=
VIA_FILE_SUFFIX=
# option to take object file names from other(via) file, here in case of ARMV5 it is necessary to specify space after the "--via " option.
COMMANDFILE_OPTION:=--via
# Linker options which can be customized from BSF
LD_OPTIONS=$(SYMBIAN_LD_MESSAGE_OPTION)$(UNRESOLVED_SYMBOL_REF_OPTION) $(STDLIB_OPTION) $(EXTRA_LD_OPTION)
# Linker option common to all link commands for UREL build
SYMBIAN_UREL_LINK_FLAGS=$(BPABI_OPTION) $(RELOCATABLE_IMAGE_OPTION) $(TARGET_RELOCATION_OPTION) $(LD_OPTIONS)
# Linker option common to all link commands for UDEB build
SYMBIAN_UDEB_LINK_FLAGS=$(BPABI_OPTION) $(RELOCATABLE_IMAGE_OPTION) $(TARGET_RELOCATION_OPTION) $(LD_OPTIONS)
#-----------------
# Archiver Options
#-----------------
# ARCHIVER variable should be set since there is a dependency for this variable in e32test.
ARCHIVER= $(AR)
ARCHIVER_CREATE_OPTION=--create
# Archiver options which can be set from BSF files
AR_OPTIONS=
#--------------------------------------
# Compiler and Platform specific macros
#--------------------------------------
# Macro definitions required to identify the compiler. Allows for conditional compilation based on compiler
PLATFORM_DEFINES=
COMPILER_DEFINES=
# Compiler target option
COMPILER_PLAT=ARMCC
#--------------------------------------
# Function Call Logger Options
#--------------------------------------
FC_LOGGER_OPTION=--wchar_t_keyword --microsoft_version=1300 --diag_suppress 66,161,611,654,815,830,997,1152,1300,1390
# Defines for Function Call Logger
FC_LOGGER_DEFINES=-D__ARMCC_VERSION=220435
#------------
# OE Options
#------------
# Options to export all the globol symbols and import undefined references, required by OE
OE_OPTIONS=--no_hide_all
# OE Glue code libs
OE_EXE_LIBS=libcrt0.lib
OE_EXE_LIBS_WCHAR=libwcrt0.lib
# OE Import Libs
OE_IMPORT_LIBS=euser.lib
# The library that contains operator new and operator delete.
OE_NEW_LIB=stdnew.dso
#-----------------------------------------------------------------------------------------------------
#This section defines the interface with Symbian tools
#This SHOULD NOT be changed as any changes in this section will not be picked up by the tools back end
#-----------------------------------------------------------------------------------------------------
# Programs used from the ToolChain
export CC
export LD
export ASM
export AR
export TRANASM
# Preprocessor Options
export PREFIXFILE
export CPP_LANG_OPTION
export C_LANG_OPTION
export CIA_LANG_OPTION
# Option Prefix
export OPTION_PREFIX
# Compiler Options
export PREPROCESSOR_OPTION
export ASSEMBLER_LISTING_OPTION
export ASM_OUTPUT_OPTION
export INCLUDE_OPTION
export PREINCLUDE_OPTION
export HEADER_FILES_CONTROL_OPTION
export COMPILER_INCLUDE_PATH
export SYMBIAN_UREL_CCFLAGS
export SYMBIAN_UDEB_CCFLAGS
export REL_OPTIMISATION
export DEBUG_OPTIMISATION
export ARM_OPTIONS
export THUMB_OPTIONS
export COMMON_OPTIONS
export INVARIANT_OPTIONS
export KERNEL_OPTIONS
export COMPILER_THUMB_DEFINES
export COMPILER_INTERWORK_DEFINES
export SOFTVFPMODE_OPTION
export VFP2MODE_OPTION
export RUNTIME_SYMBOL_VISIBILITY_OPTION
export OUTPUT_OPTION
export CCFLAGS
export UNIX_SLASH_FOR_CC_ABS_PATH
export EXCEPTIONS
export NO_EXCEPTIONS
export VERSION_INFO
export NO_UNALIGNED_ACCESS
export DEBUG_FORMAT
# Linker Options
export LINKER_OUTPUT_OPTION
export LINKER_DEBUG_OPTION
export LINKER_NODEBUG_OPTION
export CODE_SEGMENT_START
export DATA_SEGMENT_START
export UNDEFINED_SYMBOL_REF_OPTION
export LINKER_ENTRY_OPTION
export START_GROUP_SYMBOL
export END_GROUP_SYMBOL
export SHARED_OBJECT_OPTION
export STDLIB_OPTION
export STATIC_LIBS_LIST
export STATIC_LIBS_PATH
export STATIC_LIBRARY_PATH
export STATIC_LIBS
export RUNTIME_LIBS_LIST
export SYM_NEW_LIB
export RUNTIME_LIBS_PATH
export SYMVER_OPTION
export SO_NAME_OPTION
export LINKER_SYMBOLS_MAP_OPTION
export COMMANDFILE_OPTION
export VIA_FILE_PREFIX
export VIA_FILE_SUFFIX
export SYMBIAN_UREL_LINK_FLAGS
export SYMBIAN_UDEB_LINK_FLAGS
export LD_OPTIONS
# Archiver Options
export ARCHIVER
export ARCHIVER_CREATE_OPTION
export AR_OPTIONS
# Compiler Specific Defines
export COMPILER_DEFINES
export COMPILER_PLAT
# Platform Specific Defines
export PLATFORM_DEFINES
# Translator Options
export TRANASM_FLAGS
export TRANASM_OUTPUT_OPTION
export TRANASM_INPUT_OPTION
# Function Call Logger options
export PREINCLUDE_OPTION_FCLOGGER
export FC_LOGGER_OPTION
export FC_LOGGER_DEFINES
export FC_LOGGER_INCLUDE_OPTION
export FC_LOGGER_DICTIONARY_FILE_NAME
export FC_LOGGER_GENERATED_C_FILE_NAME
#OE Options
export OE_OPTIONS
export OE_EXE_LIBS
export OE_EXE_LIBS_WCHAR
export OE_IMPORT_LIBS
export OE_NEW_LIB
#-----------------------------------------------------------------------------------------------------