######################################################################################################################## # File Name : Makefile # Description: Local main project Makefile # Project : Vector Basic Runtime System # Module : BrsHw for platform ArmCommon # and Compiler LlvmTexasInstruments, # using Vector PES MakeSupport 4.1 # Template : This Makefile is reviewed according to Brs_Template@MakeSupport[1.02.01] # #----------------------------------------------------------------------------------------------------------------------- # COPYRIGHT #----------------------------------------------------------------------------------------------------------------------- # Copyright (c) 2025 by Vector Informatik GmbH. All rights reserved. # #----------------------------------------------------------------------------------------------------------------------- # REVISION HISTORY #----------------------------------------------------------------------------------------------------------------------- # Version Date Author Change Id Description # ---------------------------------------------------------------------------------------------------------------------- # 01.00.00 2021-09-29 vishci Initial creation # 01.00.01 2021-12-17 visbwa Update to Brs_Template 1.01.01, changed default compiler path to fit with chocolatey, # removed unused code fragments, switched assembler binary to proper tiarmclang and # adapted the default assembler options, fixed version options # 01.00.02 2022-01-24 visbwa Added -march attribute value for Cortex-M3/M4 # 01.00.03 2022-03-24 vismaa Removed Xlinker --scan_libraries # 01.00.04 2022-05-16 visrgm Added CPU Switch for Cortex-M4F # 01.01.00 2022-07-25 visbwa Changed linker option -e from brsStartupEntry to intvect_CoreExceptions, as this # proper entry is always available since Brs_Template 1.03 and references brsStartupEntry # 01.01.01 2022-07-26 visjhr Added EXCEPTION_TABLE_LDFLAGS # 01.01.02 2022-07-27 visjhr Fixed EXCEPTION_TABLE_LDFLAGS # 01.01.03 2022-08-09 visjhr Added ADDITIONAL_INCLUDES += LlvmTi # 01.01.04 2022-08-10 visjhr Removed all ADDITIONAL_INCLUDES # 01.01.05 2022-09-05 visdri Add ADDITIONAL_CFLAGS_FROM_VBRS to CFLAGS_VECTOR_OPTIONS # 01.01.06 2022-09-23 visjhr Added usage of BRS_FIRST_EXECUTION_INSTANCE for selection of entry/startup label # 01.01.07 2023-01-11 visqli Moved PROJECT_NAME to Makefile.static and included Makefile.static forwards, # enabled generation of PROJECT_NAME and LINKER_COMMAND_FILE # 01.01.08 2023-03-13 vishci Added -mcpu and -march value for Cortex-M0/M0plus # 01.01.09 2023-03-14 visjhr Use BRS_CPU_CORE_x_USED variables to prevent optimization of exception tables # (HALBE-8500 Generate additional core specific variables in Makefile.config.generated) # 01.01.10 2023-03-15 vishci Added core specific mfloat-abi option # 01.01.11 2023-03-20 visbwa Added --memwidth=8 to HexFlags, after user feedback # 01.01.12 2023-07-06 visdri Compile ARMBrsHwIntTb_CortexR.c / ARMStartup_CortexR.c in ARM state even when # Thumb state is configured for the project # 01.01.13 2023-07-14 visbwa Added keep for FBL exception table in RAM (intvect_CoreExceptions_Ram) # 01.01.14 2023-11-16 visbwa LDFLAG -u=intvect_CoreExceptions_Ram only for FBL UseCase # 01.01.15 2024-03-05 virrlu Changed ARFLAGS to -r after user feedback # 01.01.16 2024-03-28 vishci BASEENV-11520 Added forced ARM state to compiling ARMBrsHwIntTb_CortexR.c / ARMStartup_CortexR.c to # all CORTEX_R based cores, Brs_Template 1.01.05 (Change Id) # 01.01.17 2024-06-24 kal BASEENV-12084 Added comment clarifying default C language standard (GNU11) # 01.02.00 2024-08-01 vishci BASEENV-12178 Unify naming of intvect_CoreExceptions_Ram_Vectortable for FBL usecase and added keep flag # 01.02.01 2024-08-27 vishci Bugfix for intvect_CoreExceptions_Ram_Vectortable flag in Cortex M Cores # 01.03.00 2025-06-12 visbwa BASEENV-13804 Replaced include of Makefile.config.generated and Makefile.project.part.defines in Makefile.static # by new Makefile.wrapper; added usage of new parameter TEMPDATA_DIR for LINKER_COMMAND_FILE; # review to Brs_Template 1.02.00; fixed LNK_SUFFIX # 01.03.01 2025-07-31 visbwa TAR-93253 Added LDFLAGS_RESPONSE_FILE value in Makefile.static # 01.03.02 2025-07-31 visbwa TAR-93253 Introduced RESPONSE_FILE_MULTILINE in Makefile.static and set to '1'; # feature was introduced with zBrs_MakeSupport@Implementation[4.01.65] # 01.04.00 2025-09-02 kal BASEENV-14399 Added support for Cortex-R52 (TI Arm Clang Compiler Tools >= 4.03.00 LTS) # 01.04.01 2025-10-16 visbwa Set 4.0.3.LTS as default compiler for Cortex-R52 ######################################################################################################################## ######################################################################################################################## # EXAMPLE CODE ONLY #----------------------------------------------------------------------------------------------------------------------- # This Example Code is only intended for illustrating an example of a possible BSW integration and BSW configuration. # The Example Code has not passed any quality control measures and may be incomplete. The Example Code is neither # intended nor qualified for use in series production. The Example Code as well as any of its modifications and/or # implementations must be tested with diligent care and must comply with all quality requirements which are necessary # according to the state of the art before their use. ######################################################################################################################## #------------------------------------------------------------------------------ # Static settings placed inside separate file #------------------------------------------------------------------------------ include Makefile.static #------------------------------------------------------------------------------ # Name of linker file # # If BRS_LINKER_COMMAND_FILE_POSTFIX (derived from referenced vLinGen variant # vBRS/vBRSGeneral/vBRSVariantUsageOfvLinkGen) was generated into # Makefile.config.generated (by vBRS Cfg5 generator), use that file. #------------------------------------------------------------------------------ ifeq ($(BRS_LINKER_COMMAND_FILE_POSTFIX),) LINKER_COMMAND_FILE = $(TEMPDATA_DIR)/vLinkGen_Template.$(LNK_SUFFIX) else LINKER_COMMAND_FILE = $(TEMPDATA_DIR)/vLinkGen_Template_$(BRS_LINKER_COMMAND_FILE_POSTFIX).$(LNK_SUFFIX) endif #------------------------------------------------------------------------------ # Define Compiler path, e.g. # COMPILER_BASE_WIN = D:\uti\%vendor%\%platform%\%version% (\ can be used) # COMPILER_BASE := $(subst \,/,$(COMPILER_BASE_WIN)) (\ is converted to /) # COMPILER_BIN = $(COMPILER_BASE)/bin # COMPILER_INC = $(COMPILER_BASE)/inc # COMPILER_LIB = $(COMPILER_BASE)/lib # # If BRS_COMPILER_PATH (vBRS/vBRSHwConfig/vBRSCompilerPath) was generated into # Makefile.config.generated (by vBRS Cfg5 generator), use that path. #------------------------------------------------------------------------------ ifeq ($(BRS_COMPILER_PATH),) ifeq ($(CPU_CORE),CORTEX_R52) #TI Arm Clang Compiler Tools 4.0.3 LTS now offers basic support for R52 COMPILER_BASE_WIN = D:\uti\TI\LLVMARM\ccs\tools\compiler\ti-cgt-armllvm_4.0.3.LTS else COMPILER_BASE_WIN = D:\uti\TI\LLVMARM\ccs\tools\compiler\ti-cgt-armllvm_1.3.0.LTS endif else COMPILER_BASE_WIN = $(BRS_COMPILER_PATH) endif COMPILER_BASE := $(subst \,/,$(COMPILER_BASE_WIN)) COMPILER_BIN = $(COMPILER_BASE)/bin COMPILER_INC = $(COMPILER_BASE)/include COMPILER_LIB = $(COMPILER_BASE)/lib #------------------------------------------------------------------------------ # Build Options Selection: VECTOR / CUSTOMER #------------------------------------------------------------------------------ ASFLAGS_SELECTOR = VECTOR CFLAGS_SELECTOR = VECTOR LDFLAGS_SELECTOR = VECTOR #------------------------------------------------------------------------------ # Define Emulator path # E.g.: EMU_PATH = C:/UTI/HITOPWIN/P6811 # # This parameter is not mandatory. It is used for some platforms, to provide # e.g. debug connect scripts (e.g. multi within RH850). #------------------------------------------------------------------------------ EMU_PATH = #------------------------------------------------------------------------------ # Set $(NANT_USED) to '1', to enable the usage of NAnt support within # Global Makefile. If this is enabled, the MakeSupport will include the # NAnt support from an internal link and the NAnt build targets can be used. #------------------------------------------------------------------------------ #NANT_USED = 1 #------------------------------------------------------------------------------ # Set MKVERBOSE to a various value, to enable enhanced debug output from # MakeSupport. To disable this afterwards, set MKVERBOSE to nothing # (comment out this line and type "set MKVERBOSE=" in command window) #------------------------------------------------------------------------------ #MKVERBOSE = 1 #------------------------------------------------------------------------------ # Set $(BRSVINFO_USED) to 1 to enable the generation of BrsVInfo.h within the # GenData folder by the MakeSupport. # The BrsVInfo.h will contain e.g. kBrsCompilerVersion, to use this # information within the embedded code. #------------------------------------------------------------------------------ #BRSVINFO_USED = 1 #------------------------------------------------------------------------------ # Set $(USE_RESPONSE_FILE_FOR_LINKAGE) to '1' to pass object files in a response file # to the linker instead of using the command line. # # Use it if you hit the limit of maximum length command line length under Windows. # # See e.g. the following link regarding some information on response files: # https://gcc.gnu.org/wiki/Response_Files # # If you enable 'USE_RESPONSE_FILE_FOR_LINKAGE', you also need to define # 'LDFLAGS_RESPONSE_FILE' in Makefile.static. #------------------------------------------------------------------------------ #USE_RESPONSE_FILE_FOR_LINKAGE=1 #------------------------------------------------------------------------------ # Functions used within Assembler/Compiler/Linker options. # # Common functionality is encapsulated in the following functions: # - obj2err # - obj2lst # # Example: # --list-file=$(call obj2lst,$@) # --error-file=$(call obj2err,$@) # # Please have a look at Makefile_functions.mk for further detailed information. #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ # Extra dependency defines # The DEPEND tool which is normally a preprocessor # is called with $(EXTRA_DEPENDFLAGS) and $(CPPFLAGS). # # The cross compiler adds its own defines which DEPEND # doesn't know. # # Add cross options set by compiler and other options # for the preprocessor here. # e.g.: EXTRA_DEPENDFLAGS += -D__CTC__ # # For normal build defines use $(CPPFLAGS_VECTOR_MAKESUPPORT). #------------------------------------------------------------------------------ EXTRA_DEPENDFLAGS += #-------------------------------------- # CPU-core-specific CFLAGS option list #-------------------------------------- CPU_SWITCH_CORTEX_M0 = Cortex-M0 CPU_SWITCH_CORTEX_M0PLUS = Cortex-M0plus CPU_SWITCH_CORTEX_M3 = Cortex-M3 CPU_SWITCH_CORTEX_M4 = Cortex-M4 CPU_SWITCH_CORTEX_M4F = Cortex-M4 CPU_SWITCH_CORTEX_R5F = Cortex-R5 CPU_SWITCH_CORTEX_R52 = Cortex-R52 ifeq ($(CPU_SWITCH_$(CPU_CORE)),) $(error COMPILERFLAGERROR: The compiler option (-mcpu=) is not defined!) endif #-------------------------------------------------- # CPU-core-architecture specific CFLAGS option list #-------------------------------------------------- ARCHITECTURE_SWITCH_CORTEX_M0 = armv6-m ARCHITECTURE_SWITCH_CORTEX_M0PLUS = armv6-m ARCHITECTURE_SWITCH_CORTEX_M3 = armv7-m ARCHITECTURE_SWITCH_CORTEX_M4 = armv7-m ARCHITECTURE_SWITCH_CORTEX_M4F = armv7-m ARCHITECTURE_SWITCH_CORTEX_R5F = armv7-r ifeq ($(ARCHITECTURE_SWITCH_$(CPU_CORE)),) # -march=armv8-r not (yet) supported in tiarmclang 4.0.3 LTS ifneq ($(CPU_CORE),CORTEX_R52) $(error COMPILERFLAGERROR: The compiler option (-march=) is not defined!) endif endif #------------------------------------------------------------------------------ # CPU-core-specific FPU option list #------------------------------------------------------------------------------ ifeq ($(FPU_USED),1) CFLAGS_FPU_CORTEX_R5F = vfpv3-d16 -mfloat-abi=hard CFLAGS_FPU_CORTEX_M4F = fpv4-sp-d16 -mfloat-abi=hard # CFLAGS_FPU_CORTEX_R52: neon-fp-armv8 FPU is enabled by default else CFLAGS_FPU_$(CPU_CORE) = none -mfloat-abi=soft endif ifeq ($(CFLAGS_FPU_$(CPU_CORE)),) $(error COMPILERFLAGERROR: The compiler option (-mfpu=) is not defined!) endif #------------------------------------------------------------------------------ # $(AS_ENV) is the environment necessary to run the assembler # $(AS) defines the path to the assembler # $(ASFLAGS_VECTOR_MAKESUPPORT) defines all assembler switches, mandatory for # the Vector build environment (MakeSupport/BrsHw) # $(ASFLAGS_VECTOR_OPTIONS) defines the Vector default assembler switches # $(ASFLAGS_CUSTOMER_OPTIONS) defines the customer requested assembler switches # Depending of ASFLAGS_SELECTOR, ASFLAGS_VECTOR_OPTIONS or ASFLAGS_CUSTOMER_OPTIONS # are used together with $(ASFLAGS_VECTOR_MAKESUPPORT) for build. #------------------------------------------------------------------------------ AS_ENV = AS = $(COMPILER_BIN)/tiarmclang #------------------------------------------------------------------------------ # Please add only absolutely mandatory options below #------------------------------------------------------------------------------ ASFLAGS_VECTOR_MAKESUPPORT = -c \ -o $@ #------------------------------------------------------------------------------ # $(ASFLAGS_VECTOR_PREPROCESS) defines the options in preprocessing # just before assembler starts. This flag is used only if # AS_VECTOR_PREPROCESS (located in Makefile.static) is enabled. # # $(CPPFLAGS_CORE) can be added here. #------------------------------------------------------------------------------ ASFLAGS_VECTOR_PREPROCESS = $(CPPFLAGS_CORE) #------------------------------------------------------------------------------ # Please add any other option below (Vector default options) # # Use $(ASFLAGS_VECTOR_OPTIONS) if assembler supports preprocessing by default. # In case of assembler does not support preprocessing and preprocessing is # enabled by $(ASFLAGS_VECTOR_PREPROCESS) in a prestep # $(CPPFLAGS_CORE) must be set in $(ASFLAGS_VECTOR_PREPROCESS) #------------------------------------------------------------------------------ ASFLAGS_VECTOR_OPTIONS = $(CFLAGS_VECTOR_OPTIONS) #------------------------------------------------------------------------------ # Please enter all customer options below #------------------------------------------------------------------------------ ASFLAGS_CUSTOMER_OPTIONS = #------------------------------------------------------------------------------ # $(ASVERSION) defines the assembler switch for version report. # E.g.: ASVERSION = -V #------------------------------------------------------------------------------ ASVERSION = --version #------------------------------------------------------------------------------ # $(AS_LC) defines the number of lines used for assembler version information. # $(AS_OFF) defines the offset of lines used for assembler version information # in BrsVinfo.h and Deliverydescription (default is 5). #------------------------------------------------------------------------------ AS_OFF = AS_LC = 1 #------------------------------------------------------------------------------ #------------------------- MUST be filled out --------------------------------- # $(CC_ENV) is the environment necessary to run the compiler # $(CC) defines the path to the C-Compiler # $(CFLAGS_VECTOR_MAKESUPPORT) defines all compiler switches, mandatory for # the Vector build environment (Makesupport/BrsHw) # $(CFLAGS_VECTOR_OPTIONS) defines the Vector default compiler switches # $(CFLAGS_CUSTOMER_OPTIONS) defines the customer requested compiler switches # Depending $(CFLAGS_SELECTOR), $(CFLAGS_VECTOR_OPTIONS) or # $(CFLAGS_CUSTOMER_OPTIONS) is used together with $(CFLAGS_VECTOR_MAKESUPPORT) # for build. # # Avoid $(OBJ_SUFFIX) to filter use $(basename $@) because # ECO has a preprocess using CFLAGS_xx and the target is of type source. #------------------------------------------------------------------------------ CC_ENV = CC = $(COMPILER_BIN)/tiarmclang #------------------------------------------------------------------------------ # Please add only absolutely mandatory options below # # BRS values: # -DBRS_COMP_$(COMPILER_MANUFACTURER) # -DBRS_PLATFORM_$(PLATFORM) # # Avoid $(OBJ_SUFFIX) to filter. Use $(basename $@) because # ECO has a preprocess using CFLAGS_xx and the target is of type source. #------------------------------------------------------------------------------ CPPFLAGS_VECTOR_MAKESUPPORT = -DBRS_PLATFORM_$(PLATFORM) \ -DBRS_COMP_$(COMPILER_MANUFACTURER) CFLAGS_VECTOR_MAKESUPPORT = -c \ -o $@ CFLAGS_ARM = -marm CFLAGS_THUMB = -mthumb ifeq ($(CFLAGS_$(INSTRUCTION_SET)),) $(error COMPILERFLAGERROR: The compiler option for the instruction set is not defined!) endif #------------------------------------------------------------------------------ # Add depend options here. # It is separated because of the option to overwrite # $(COMPILER_SUPPORTS_DEPEND) or have different compile without # path length problem in command line. # # Pay attention below if $(MAKESUPPORT_POST_COMPILE_CMD) is # used in context of depend file creation. # # Example: # CFLAGS_VECTOR_MAKESUPPORT += -MMD -MF $(@:.o=.dt) # MAKESUPPORT_POST_COMPILE_CMD += $(SED) -Ef $(MAKESUPPORT_DIR_U)/util/fix_dos_dep_file.sed < $(@:.o=.dt) > $(@:.o=.d); # MAKESUPPORT_POST_COMPILE_CMD += $(RM) $(@:.o=.dt); #------------------------------------------------------------------------------ ifeq ($(COMPILER_SUPPORTS_DEPEND),1) CFLAGS_VECTOR_MAKESUPPORT += -MD MAKESUPPORT_POST_COMPILE_CMD += #----------------------------------------------------------------------------- # If $(CC) shall create dependency file as well, fill the following variables. # Otherwise, 'clang' does the task without using a floating license. #----------------------------------------------------------------------------- #DEPEND = $(CC_ENV) $(CC) #DEPENDFLAGS = endif #------------------------------------------------------------------------------ # $(REUSE_CPP_DEPEND) is set because compiler has a path length problem #------------------------------------------------------------------------------ #REUSE_CPP_DEPEND = 1 ifeq ($(COMPILER_SUPPORTS_DEPEND)+$(REUSE_CPP_DEPEND),1+1) $(error Can not set both: COMPILER_SUPPORTS_DEPEND and REUSE_CPP_DEPEND) endif #------------------------------------------------------------------------------ # Post compile command to cleanup anything during compilation process # # Calling convention: # $(call MAKESUPPORT_POST_COMPILE_CMD,$@,$<) #------------------------------------------------------------------------------ MAKESUPPORT_POST_COMPILE_CMD += #------------------------------------------------------------------------------ # Please add any other option below (Vector default options) # Avoid $(OBJ_SUFFIX) to filter use $(basename $@) because # ECO has a preprocess using CFLAGS_xx and the target is of type source. #------------------------------------------------------------------------------ # If no -std option is specified when compiling a C source file, gnu11 is assumed by default. CFLAGS_VECTOR_OPTIONS = -Wall \ -mcpu=$(CPU_SWITCH_$(CPU_CORE)) \ -mfpu=$(CFLAGS_FPU_$(CPU_CORE)) \ -mlittle-endian \ -O1 \ -g \ $(CFLAGS_$(INSTRUCTION_SET)) \ $(ADDITIONAL_CFLAGS_FROM_VBRS) \ $(CPU_MARCH_FLAGS) # Only set -march if CPU_CORE is not R52 ifeq ($(CPU_CORE),CORTEX_R52) CPU_MARCH_FLAGS = else CPU_MARCH_FLAGS = -march=$(ARCHITECTURE_SWITCH_$(CPU_CORE)) endif #------------------------------------------------------------------------------ # Please enter all customer options below # Avoid $(OBJ_SUFFIX) to filter use $(basename $@) because # ECO has a preprocess using CFLAGS_xx and the target is of type source. #------------------------------------------------------------------------------ CFLAGS_CUSTOMER_OPTIONS = #------------------------------------------------------------------------------ # $(CVERSION) defines the compiler switch for version report # E.g.: CVERSION = -V #------------------------------------------------------------------------------ CVERSION = --version #------------------------------------------------------------------------------ # $(CC_LC) defines the number of lines used for compiler version information # $(CC_OFF) defines the offset of lines used for compiler version information # in BrsVinfo.h and Deliverydescription (default is 5) #------------------------------------------------------------------------------ CC_OFF = CC_LC = 1 #------------------------------------------------------------------------------ # Filter out section # Add flags which must be filtered out for specific files # # Examples: # FILTER_Os=-g # no debug option for file Os.c # FILTER_COMPONENT_Det=-g # no debug option for component Det #------------------------------------------------------------------------------ #FILTER_ = #FILTER_COMPONENT_ = # Note: # The exception table and the init of exc table using the backup exc table are # implmented in ARM mode => (ARMBrsHwIntTb_CortexR.c, ARMStartup_CortexR.c) # must be compiled in ARM mode even when Thumb mode instruction set is configured. ifeq ($(CPU_CORE), $(filter $(CPU_CORE), CORTEX_R4 CORTEX_R4F CORTEX_R5 CORTEX_R5F CORTEX_R52 CORTEX_R7)) ifeq ($(INSTRUCTION_SET),THUMB) FILTER_ARMBrsHwIntTb_CortexR = $(CFLAGS_THUMB) CFLAGS_ARMBrsHwIntTb_CortexR = $(CFLAGS_ARM) FILTER_ARMStartup_CortexR = $(CFLAGS_THUMB) CFLAGS_ARMStartup_CortexR = $(CFLAGS_ARM) endif endif #------------------------------------------------------------------------------ # Additional file specific compiler options #------------------------------------------------------------------------------ #CFLAGS_ = #CFLAGS_COMPONENT_ = #------------------------------------------------------------------------------ #------------------------- MUST be filled out --------------------------------- # $(LD_ENV) is the environment necessary to run the linker # $(LD) defines the path to the linker # $(LDFLAGS_VECTOR_MAKESUPPORT) defines all linker switches, mandatory for the # Vector build environment (MakeSupport/BrsHw) # $(LDFLAGS_VECTOR_OPTIONS) defines the Vector default linker switches # $(LDFLAGS_CUSTOMER_OPTIONS) defines the customer requested linker switches # Depending on $(LDFLAGS_SELECTOR), $(LDFLAGS_VECTOR_OPTIONS) or # $(LDFLAGS_CUSTOMER_OPTIONS)is used together with $(LDFLAGS_VECTOR_MAKESUPPORT) # for build. #------------------------------------------------------------------------------ LD_ENV = LD = $(COMPILER_BIN)/tiarmclang ifeq ($(BRS_FIRST_EXECUTION_INSTANCE),1) ifeq ($(CPU_CORE),$(filter $(CPU_CORE),CORTEX_M0 CORTEX_M0PLUS CORTEX_M3 CORTEX_M33 CORTEX_M4 CORTEX_M4F CORTEX_M7)) LDFLAGS_ENTRY = brsStartupEntry else LDFLAGS_ENTRY = intvect_CoreExceptions endif else LDFLAGS_ENTRY = Brs_ApplicationEntry endif #------------------------------------------------------------------------------ # Please add only absolutely mandatory options below # # Please use $(PROJECT_NAME).$(BINARY_SUFFIX) or $(TARGET) instead of $@ and # $(PROJECT_NAME) instead of $* because flags # are used in delivery description. # # Linker script file name : $(LINKER_COMMAND_FILE) #------------------------------------------------------------------------------ LDFLAGS_VECTOR_MAKESUPPORT = -Xlinker -c \ -Xlinker -e=$(LDFLAGS_ENTRY) \ -Xlinker -m$(PROJECT_NAME).map \ -o $(TARGET) #------------------------------------------------------------------------------ # Set $(PREPROCESS_LINKER_COMMAND_FILE) to 1 to preprocess # linker command file. $(USER_LINKER_COMMAND_FILE) can be set manually # but is $(PROJECT_NAME).$(LNK_SUFFIX) by default. #------------------------------------------------------------------------------ #PREPROCESS_LINKER_COMMAND_FILE = 1 #------------------------------------------------------------------------------ # Post link command to cleanup anything during linking process # # Calling convention: # $(call MAKESUPPORT_POST_LINK_CMD,$@,$<) #------------------------------------------------------------------------------ MAKESUPPORT_POST_LINK_CMD += #------------------------------------------------------------------------------ # Please add any other option below (Vector default options) # # Please use $(PROJECT_NAME).$(BINARY_SUFFIX) or $(TARGET) instead of # $@ and $(PROJECT_NAME) instead of $* because flags # are used in delivery description. # # Linker script file name : $(LINKER_COMMAND_FILE) #------------------------------------------------------------------------------ # --diag_suppress=10063-D is to suppress linker warning for # "entry-point symbol other than "_c_int00" specified: "intvect_CoreExceptions"" # # --diag_suppress=10068-D is to suppress linker warning for # "no matching section" # # --diag_suppress=10247-D is to suppress linker warning for # "creating output section ".cinit" without a SECTIONS specification" #------------------------------------------------------------------------------ ifeq ($(CPU_CORE),CORTEX_R5F) EXCEPTION_TABLE_LDFLAGS = -Xlinker -u=intvect_CoreExceptions_vectortable \ -Xlinker -u=intvect_CoreExceptions_vectortable_backup ifeq ($(BRS_CPU_CORE_1_USED),1) EXCEPTION_TABLE_LDFLAGS += -Xlinker -u=intvect_Core1Exceptions_vectortable EXCEPTION_TABLE_LDFLAGS += -Xlinker -u=intvect_Core1Exceptions_vectortable_backup endif ifeq ($(BRS_CPU_CORE_2_USED),1) EXCEPTION_TABLE_LDFLAGS += -Xlinker -u=intvect_Core2Exceptions_vectortable EXCEPTION_TABLE_LDFLAGS += -Xlinker -u=intvect_Core2Exceptions_vectortable_backup endif ifeq ($(BRS_CPU_CORE_3_USED),1) EXCEPTION_TABLE_LDFLAGS += -Xlinker -u=intvect_Core3Exceptions_vectortable EXCEPTION_TABLE_LDFLAGS += -Xlinker -u=intvect_Core3Exceptions_vectortable_backup endif ifeq ($(BRS_CPU_CORE_4_USED),1) EXCEPTION_TABLE_LDFLAGS += -Xlinker -u=intvect_Core4Exceptions_vectortable EXCEPTION_TABLE_LDFLAGS += -Xlinker -u=intvect_Core4Exceptions_vectortable_backup endif ifeq ($(BRS_CPU_CORE_5_USED),1) EXCEPTION_TABLE_LDFLAGS += -Xlinker -u=intvect_Core5Exceptions_vectortable EXCEPTION_TABLE_LDFLAGS += -Xlinker -u=intvect_Core5Exceptions_vectortable_backup endif ifeq ($(BRS_CPU_CORE_6_USED),1) EXCEPTION_TABLE_LDFLAGS += -Xlinker -u=intvect_Core6Exceptions_vectortable EXCEPTION_TABLE_LDFLAGS += -Xlinker -u=intvect_Core6Exceptions_vectortable_backup endif ifeq ($(BRS_CPU_CORE_7_USED),1) EXCEPTION_TABLE_LDFLAGS += -Xlinker -u=intvect_Core7Exceptions_vectortable EXCEPTION_TABLE_LDFLAGS += -Xlinker -u=intvect_Core7Exceptions_vectortable_backup endif ifeq ($(BRS_FBL_EXCEPTIONTABLE_IN_RAM),1) EXCEPTION_TABLE_LDFLAGS += -Xlinker -u=intvect_CoreExceptions_Ram EXCEPTION_TABLE_LDFLAGS += -Xlinker -u=intvect_CoreExceptions_Ram_Vectortable endif endif ifeq ($(BRS_ENABLE_FBL_SUPPORT),1) ifeq ($(CPU_CORE),$(filter $(CPU_CORE),CORTEX_R4 CORTEX_R4F CORTEX_R5 CORTEX_R5F CORTEX_R52 CORTEX_R7)) ifeq ($(BRS_FBL_EXCEPTIONTABLE_IN_RAM),1) EXCEPTION_TABLE_LDFLAGS += -Xlinker -u=intvect_CoreExceptions_Ram EXCEPTION_TABLE_LDFLAGS += -Xlinker -u=intvect_CoreExceptions_Ram_Vectortable endif endif endif LDFLAGS_VECTOR_OPTIONS = -Xlinker -q \ -Xlinker --warn_sections \ -Xlinker --unused_section_elimination=on \ -Xlinker --compress_dwarf=on \ -Xlinker --copy_compression=rle \ -Xlinker --reread_libs \ -Xlinker --display_error_number \ -Xlinker --priority \ $(ADDITIONAL_LDFLAGS_FROM_VBRS) \ -Xlinker $(LINKER_COMMAND_FILE) \ -Xlinker --diag_suppress=10063-D \ -Xlinker --diag_suppress=10068-D \ -Xlinker --diag_suppress=10247-D \ $(EXCEPTION_TABLE_LDFLAGS) #------------------------------------------------------------------------------ # Please enter all customer options below # # Please use $(PROJECT_NAME).$(BINARY_SUFFIX) instead of $@ and # $(PROJECT_NAME) instead of $*, because flags # are used in delivery description. #------------------------------------------------------------------------------ LDFLAGS_CUSTOMER_OPTIONS = #------------------------------------------------------------------------------ # Please add additional system libraries below # # For some compilers, it is necessary to add additional system libraries. # E.g. the ARM GCC Gnu compiler may need libc for memcpy or libgcc for modulo # # To add additional libraries use: # -lgcc (libgcc: e.g. support for modulo operation) # -lc (libc: e.g. support for memcpy function) #------------------------------------------------------------------------------ SYSLIBS += #------------------------------------------------------------------------------ # $(LDVERSION) defines the linker switch for version report # E.g.: LDVERSION = -v #------------------------------------------------------------------------------ LDVERSION = --version #------------------------------------------------------------------------------ # $(LD_LC) defines the number of lines used for linker version information # $(LD_OFF) defines the offset of lines used for linker version information # in BrsVinfo.h and Delivery Description (default is 5) #------------------------------------------------------------------------------ LD_OFF = LD_LC = 1 #------------------------------------------------------------------------------ #------------------------- MUST be filled out if used ------------------------- # $(HEX_ENV) is the environment necessary to run the hexfile generator # $(HEX) defines the path to the hex converter, e.g. $(COMPILER_BIN)/gsrec # $(HEXFLAGS) contains options for HEX tool, e.g. -nos5 -skip .tdata $< -o $@ #------------------------------------------------------------------------------ HEX_ENV = $(CC_ENV) HEX = $(COMPILER_BIN)/tiarmhex HEXFLAGS = --intel $(PROJECT_NAME).$(BINARY_SUFFIX) --memwidth=8 --outfile=$(PROJECT_NAME).hex #------------------------------------------------------------------------------ #------------------------- MUST be filled out if used ------------------------- # $(AR_ENV) is the environment necessary to run the librarian # $(AR) defines the path to the C-librarian # $(ARFLAGS) defines all librarian switches # # Don't add $@. It is added in rule because AR rule is dynamically generated. #------------------------------------------------------------------------------ AR_ENV = AR = $(COMPILER_BIN)/tiarmar ARFLAGS = -r #------------------------------------------------------------------------------ # $(ARVERSION) defines the archiver switch for version report # E.g.: ARVERSION = -v #------------------------------------------------------------------------------ ARVERSION = --version #------------------------------------------------------------------------------ # $(AR_LC) defines the number of lines used for librarian version information # $(AR_OFF) defines the offset of lines used for archiver version information # in BrsVinfo.h #------------------------------------------------------------------------------ AR_OFF = AR_LC = 1 #------------------------------------------------------------------------------ # Additional includes essentially for compilation #------------------------------------------------------------------------------ ADDITIONAL_INCLUDES += #------------------------------------------------------------------------------ # Additional objects essentially for linking # E.g.: ADDITIONAL_OBJECTS = $(OBJ_PATH)/myobject.$(OBJ_SUFFIX) #------------------------------------------------------------------------------ ADDITIONAL_OBJECTS += #------------------------------------------------------------------------------ # Additional libraries essentially for linking # E.g.: ADDITIONAL_LIBRARIES = $(LIB_PATH)/mylib.$(LIB_SUFFIX) #------------------------------------------------------------------------------ ADDITIONAL_LIBRARIES += #------------------------------------------------------------------------------ # List of assembler source files # E.g.: ASM_SOURCES = source/startup.$(ASM_SUFFIX) #------------------------------------------------------------------------------ ASM_SOURCES += #------------------------------------------------------------------------------ # Add Startup code to application source list # E.g.: APP_SOURCE_LST += source/startup.c #------------------------------------------------------------------------------ APP_SOURCE_LST += #------------------------------------------------------------------------------ # Check if all necessary variables are set # (Checks that are not possible to be performed within Makefile.static) #------------------------------------------------------------------------------ ############################################################################### ######### DO NOT remove these lines from the end of the Makefile!!! ########### ############################################################################### #------------------------------------------------------------------------------ # Include the main makefile where all the targets are defined #------------------------------------------------------------------------------ include $(MAKESUPPORT_DIR)/Global.Makefile.target.$(VERSION).mk # End of Makefile