######################################################################################################################## # File Name : Makefile.static # Description: This makefile contains the platform/compiler specific static settings (will be included by Makefile) # Project : Vector Basic Runtime System # Module : BrsHw for platform ArmCommon # and Compiler LlvmTexasInstruments, # using Vector PES MakeSupport 4.1 # #----------------------------------------------------------------------------------------------------------------------- # COPYRIGHT #----------------------------------------------------------------------------------------------------------------------- # Copyright (c) 2025 by Vector Informatik GmbH. All rights reserved. # #----------------------------------------------------------------------------------------------------------------------- # REVISION HISTORY #----------------------------------------------------------------------------------------------------------------------- # Refer to Makefile. ######################################################################################################################## ######################################################################################################################## # 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. ######################################################################################################################## #------------------------------------------------------------------------------ # Include the wrapper to support DaVinci Cfg5 and Cfg6 folder structures # (this file is platform/compiler independent and part of vBaseEnv@MakeSupport) #------------------------------------------------------------------------------ include Makefile.wrapper #------------------------------------------------------------------------------ # Name of this project. # # If BRS_PROJECT_NAME (vBRS/vBRSHwConfig/vBRSProjectName) was generated into # Makefile.config.generated (by vBRS Cfg5 generator), use that name. #------------------------------------------------------------------------------ ifeq ($(BRS_PROJECT_NAME),) PROJECT_NAME = TestSuit else PROJECT_NAME = $(BRS_PROJECT_NAME) endif #------------------------------------------------------------------------------ # Version of MakeSupport used (current version is 4.1) #------------------------------------------------------------------------------ VERSION = 4 SUB_VERSION = 1 ############################################################################### # Platform/compiler/derivative/emulator are relevant for the include of # linker and symbol preprocessor command file identified by name. # Vector standard names have to be used ############################################################################### #------------------------------------------------------------------------------ # Compiler Manufacturer used in this project # E.g.: ARM5, ARM6, LLVMDIAB, GHS, GNU, GCCHIGHTEC, IAR, RENESAS, TASKING, TI #------------------------------------------------------------------------------ COMPILER_MANUFACTURER = LLVMTEXASINSTRUMENTS #------------------------------------------------------------------------------ # Platform used for this project # E.g.: ARM, AURIX, POWERPC, RH850 #------------------------------------------------------------------------------ PLATFORM = ARM #------------------------------------------------------------------------------ # Emulator used for this project # E.g.: GHSPROBE, ISYSTEMS, LAUTERBACH, MULTI # ALL is special for "all derivatives are supported in this file" #------------------------------------------------------------------------------ EMULATOR = ALL #------------------------------------------------------------------------------ #------------------------- MUST be filled out --------------------------------- # Suffix of generated object files. Generated objects are then *.$(OBJ_SUFFIX) #------------------------------------------------------------------------------ OBJ_SUFFIX = o #------------------------------------------------------------------------------ # Suffix of assembler files. # The suffixes s, asm, 850 and arm are already considered by MakeSupport # and do not need to be added. #------------------------------------------------------------------------------ ASM_SUFFIX = #------------------------------------------------------------------------------ #------------------------- MUST be filled out --------------------------------- # Suffix of generated list files. Generated list files are then *.$(LST_SUFFIX) #------------------------------------------------------------------------------ LST_SUFFIX = lst #------------------------------------------------------------------------------ #------------------------- MUST be filled out --------------------------------- # Suffix linker command file. #------------------------------------------------------------------------------ LNK_SUFFIX = ld #------------------------------------------------------------------------------ #------------------------- MUST be filled out --------------------------------- # Suffix binary output file. #------------------------------------------------------------------------------ BINARY_SUFFIX = out #------------------------------------------------------------------------------ #------------------------- MUST be filled out --------------------------------- # Suffix of generated library files. Generated objects are then *.$(LIB_SUFFIX) #------------------------------------------------------------------------------ LIB_SUFFIX = lib #------------------------------------------------------------------------------ # Suffixes of generated error files which are placed in $(ERR_PATH) # (necessary for Visual Studio / Codewright project file generation) # Default (nothing entered) is err # E.g. ERR_SUFFIX_LIST = err #------------------------------------------------------------------------------ ERR_SUFFIX_LIST = err ERR_SUFFIX = err #------------------------------------------------------------------------------ # Suffixes of generated asm/list files which are placed in $(LST_PATH) # (necessary for Visual Studio / Codewright project file generation) # Default (nothing entered) is lst # E.g. LST_SUFFIX_LIST = lst asm #------------------------------------------------------------------------------ LST_SUFFIX_LIST = #------------------------------------------------------------------------------ # Path of MakeSupport folder relative to main Makefile #------------------------------------------------------------------------------ MAKESUPPORT_DIR_MAK=make_support_var.mk ifeq ($(MAKESUPPORT_DIR),) -include $(MAKESUPPORT_DIR_MAK) endif ifeq ($(MAKESUPPORT_DIR),) # Find first on Delivery structure and then in enhanced directory structure # Stop after first occurance $(info Looking for MakeSupport in current structure. This could take a while for first invocation.) MAKESUPPORT_DIR:=$(shell find ../.. ../../.. -name MakeSupport -print -quit) ifeq ($(MAKESUPPORT_DIR),) $(error No MakeSupport directory found. Please set 'MAKESUPPORT_DIR' environment variable manually.) endif $(info Found MAKESUPPORT_DIR='$(MAKESUPPORT_DIR)'. Save it to '$(MAKESUPPORT_DIR_MAK)' for next invocation.) $(file >$(MAKESUPPORT_DIR_MAK),MAKESUPPORT_DIR=$(MAKESUPPORT_DIR)) endif distclean:: @echo "DISTCLEAN $(MAKESUPPORT_DIR_MAK)" $(Q)$(RM) $(MAKESUPPORT_DIR_MAK) #------------------------------------------------------------------------------ # $(ERR_OUTPUT) defines the way how to generate error files # It should be one of: # PIPE - Error will be printed to sterr/stdout and redirected to # $(ERR_PATH) # FLAGS - Compiler supports error file generation with or without path # definition. Therefore, e.g. $(CFLAGS_VECTOR_MAKESUPPORT) # and $(LDFLAGS_VECTOR_MAKESUPPORT) have to be adjusted. # It depends on compiler flags whether output is written to # console as well. # CONSOLE - No compiler flags handling in MakeSupport (default). #------------------------------------------------------------------------------ ERR_OUTPUT = CONSOLE #------------------------------------------------------------------------------ # Add compiler specific redirection flags here # # Uncomment V=1 if compiler has redirection options like @E, @O # # Example: # --error-file=$(call obj2err,$@) #------------------------------------------------------------------------------ #ifneq ($(V),1) ifeq ($(ERR_OUTPUT),FLAGS) ASFLAGS_VECTOR_MAKESUPPORT += endif #endif #------------------------------------------------------------------------------ # $(AS_VECTOR_PREPROCESS) enables the preprocessing # just before assembler starts. # # In case of assembler does not support preprocessing by default, preprocessing # can be enabled by setting $(ASFLAGS_VECTOR_PREPROCESS) to 1 #------------------------------------------------------------------------------ #AS_VECTOR_PREPROCESS = 1 #------------------------------------------------------------------------------ # Enable if cross-compiler supports depend. Additional options # have to be set. # Attention: # Some cross-compilers' depend file can have the problem # of incompatible depend file for cygwin. They could contain # "" around filepath or ':' when used absolute file spec. #------------------------------------------------------------------------------ COMPILER_SUPPORTS_DEPEND = 1 #------------------------------------------------------------------------------ # Used only when USE_RESPONSE_FILE_FOR_LINKAGE is set to 1. # # LDFLAGS_RESPONSE_FILE defines the command-line flag used to specify a # response file. # For example, with GCC, response files can be passed using "gcc @linker_options". # In that case, set this variable to "@". #------------------------------------------------------------------------------ LDFLAGS_RESPONSE_FILE=-Xlinker #------------------------------------------------------------------------------ # Used only if USE_RESPONSE_FILE_FOR_LINKAGE is set to 1. # # If RESPONSE_FILE_MULTILINE is enabled, the response file will be reformatted # from a single-line to a multi-line format. This is required by certain # compilers, such as the TI ARM LLVM compiler. #------------------------------------------------------------------------------ RESPONSE_FILE_MULTILINE=1 #------------------------------------------------------------------------------ # Add compiler specific redirection flags here # # Uncomment V=1 if compiler has redirection options like @E, @O # # Example: # --error-file=$(call obj2err,$@) #------------------------------------------------------------------------------ #ifneq ($(V),1) ifeq ($(ERR_OUTPUT),FLAGS) CFLAGS_VECTOR_MAKESUPPORT += endif #endif #------------------------------------------------------------------------------ # Add linker specific redirection flags here # # Uncomment V=1 if compiler has redirection options like @E, @O # # Example: # --error-file=$(call obj2err,$@) #------------------------------------------------------------------------------ #ifneq ($(V),1) ifeq ($(ERR_OUTPUT),FLAGS) LDFLAGS_VECTOR_MAKESUPPORT += endif #endif #------------------------------------------------------------------------------ # $(AR_COMMAND_WITHOUT_SPACE) enables the usage of an archiver command without # space between the output flag and the target library name. # # E.g. this is necessary for the Renesas archiver: -output=$(TARGET_LIBRARY) #------------------------------------------------------------------------------ #AR_COMMAND_WITHOUT_SPACE = 1 #------------------------------------------------------------------------------ # hex target might be added like the following template. # Variable TARGET can not be used here, because TARGET is set in # Global.Makefile.target.$(VERSION).mk. VERSION is set in Makefile.static. # Add hex target to default: #------------------------------------------------------------------------------ .PHONY: hex hex: $(PROJECT_NAME).hex $(PROJECT_NAME).hex: $(PROJECT_NAME).$(BINARY_SUFFIX) @$(ECHO) "HEX $@" $(Q)$(HEX_ENV) $(HEX) $(HEXFLAGS) clean:: @$(ECHO) "CLEAN hex" $(Q)$(RM) $(PROJECT_NAME).hex #------------------------------------------------------------------------------ # ASSEMBLE_RULE/COMPILE_RULE/LINK_RULE are obsolete now # # In previous deliveries *_RULES were overwritten to add or delete # options to compile/link. # # MakeSupport 4 has the general enhancement to add or delete options for a # specific file. Please add the following variables to your Makefile to control, # filter out or add specific: # # FILTER_=-any -option -to -filter -out # CFLAGS_=-any -option -to -add # # For another option to add a post compile command, please have a look # at MAKESUPPORT_POST_COMPILE_CMD in Global.Makefile.target.$(VERSION).mk. # # If all of these MakeSupport 4 enhancements do not work, please add # static pattern rule which is a make feature. # # Makefile documentation: # https://www.gnu.org/software/make/manual/html_node/Static-Usage.html#Static-Usage # # Example: # copy & paste from MakeSupport 4 and add your specific file in front with the second ':' : # my_c_file.c: $(OBJ_PATH)/%.$(OBJ_SUFFIX): $(PRJROOT_U)/%.c # ... here are your specific rules... #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ # make builds the whole project by default # To make another target, you have to add it to the prerequisites of default. # E.g.: default: all $(PROJECT_NAME).opt # Here hex target might be added. #------------------------------------------------------------------------------ .PHONY: default default: all hex #------------------------------------------------------------------------------ # If platform specific rules exist, they can be described here to be shown # in the usage output of the help target #help:: # $(ECHO) "m mytarget ................ -- build mytarget" # $(ECHO) " nextline" #------------------------------------------------------------------------------ #help:: #------------------------------------------------------------------------------ # Check if all necessary variables are set #------------------------------------------------------------------------------ ifeq ($(MAKESUPPORT_DIR),) $(error Variable MAKESUPPORT_DIR is not defined.) endif ifeq ($(PLATFORM),) $(error Variable PLATFORM is not defined.) endif ifeq ($(COMPILER_MANUFACTURER),) $(error Variable COMPILER_MANUFACTURER is not defined.) endif ifeq ($(EMULATOR),) $(error Variable EMULATOR is not defined.) endif ifeq ($(VERSION),) $(error Variable VERSION is not defined.) endif #------------------------------------------------------------------------------ # List of variables which are required and must be set within # Makefile.config.generated. Check is performed by global makefile #------------------------------------------------------------------------------ REQUIRED_MK_CONF_VARS = DERIVATIVE \ CPU_CORE \ INSTRUCTION_SET # End of Makefile.static