This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Compiler/AM6548: How to modify the rules_ti_cgt_arm.mk to support for building .cpp files?

Part Number: AM6548

Tool/software: TI C/C++ Compiler

Hi,

I have a question about makefile in PDK: pdk_am65xx_1_0_7/packages/ti/build/makerules/rules_ti_cgt_arm.mk

In this make file only the .c and .asm files can be built, but not the .cpp files. So if I want include this makefile to build my .cpp files in my own project for R5F, it will cause compile errors. There is a variable CPLUSPLUS_BUILD. But it does not help by recognizing the .cpp files.

Is it possible to add the rules for .cpp files, just like what in pdk_am65xx_1_0_7/packages/ti/build/makerules/rules_a53.mk has done?

I've tried but still got errors. And I'm not sure about it. Is there any already tested cgt-arm makefile with support for .cpp file for R5F?

  • Haining,

    Have you tried to add --c++14 option in rules_ti_cgt_arm.mk, i.e update COMPILEMODE as below?

    line 177: 

    ifeq ($(CPLUSPLUS_BUILD), yes)
    COMPILEMODE = -fg --c++14
    endif

    Refer to 

    http://downloads.ti.com/docs/esd/SPNU151/#viewer?document=%257B%2522href%2522%253A%2522%252Fdocs%252Fesd%252FSPNU151%2522%257D&url=invoking-the-c-c-compiler-stdz0588355.html%23STDZ0588355

    Regards,

    Garrett

  • Hi Garrett,
     
    the Problem is that the files with .cpp extension cannot be handled by the makefile for Cortex R5F. Of cource the c++ file might be named with .c and compiled with cpp options. But that is forbidden by the most of coding guidelines. So I just modified the 

    #
    # Copyright (c) 2013-2016, Texas Instruments Incorporated
    # All rights reserved.
    #
    # Redistribution and use in source and binary forms, with or without
    # modification, are permitted provided that the following conditions
    # are met:
    #
    # *  Redistributions of source code must retain the above copyright
    #    notice, this list of conditions and the following disclaimer.
    #
    # *  Redistributions in binary form must reproduce the above copyright
    #    notice, this list of conditions and the following disclaimer in the
    #    documentation and/or other materials provided with the distribution.
    #
    # *  Neither the name of Texas Instruments Incorporated nor the names of
    #    its contributors may be used to endorse or promote products derived
    #    from this software without specific prior written permission.
    #
    # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
    # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
    # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
    # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
    # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
    # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
    # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
    # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
    # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    #
    
    # Filename: rules_ti_cgt_arm.mk
    #
    # Make rules for TI ARM CGT - This file has all the common rules and defines
    # required for Cortex-M4/R5F ISA
    #
    # This file needs to change when:
    #     1. Code generation tool chain changes (currently it uses TI ARM CGT)
    #     2. Internal switches (which are normally not touched) has to change
    #     3. XDC specific switches change
    #     4. a rule common for M4/R5F ISA has to be added or modified
    
    # Set compiler/archiver/linker commands and include paths
    CODEGEN_INCLUDE = $(TOOLCHAIN_PATH_$(CGT_ISA))/include
    CC = $(TOOLCHAIN_PATH_$(CGT_ISA))/bin/armcl
    AR = $(TOOLCHAIN_PATH_$(CGT_ISA))/bin/armar
    LNK = $(TOOLCHAIN_PATH_$(CGT_ISA))/bin/armcl
    STRP = $(TOOLCHAIN_PATH_$(CGT_ISA))/bin/armstrip
    SIZE = $(TOOLCHAIN_PATH_$(CGT_ISA))/bin/armofd
    
    # Derive a part of RTS Library name based on ENDIAN: little/big
    ifeq ($(ENDIAN),little)
      RTSLIB_ENDIAN = le
    else
      RTSLIB_ENDIAN = be
    endif
    
    # Derive compiler switch and part of RTS Library name based on FORMAT: COFF/ELF
    ifeq ($(FORMAT),COFF)
      CSWITCH_FORMAT = ti_arm9_abi
      RTSLIB_FORMAT = tiarm9
    endif
    ifeq ($(FORMAT),ELF)
      CSWITCH_FORMAT = eabi
      RTSLIB_FORMAT = eabi
    endif
    
    LNKFLAGS_INTERNAL_COMMON += -O4
    LNKFLAGS_INTERNAL_COMMON += --run_linker
    
    
    # Internal CFLAGS - normally doesn't change
    ifeq ($(CGT_ISA),$(filter $(CGT_ISA), M4 R5 M3))
      CFLAGS_INTERNAL = -c -qq -pdsw225 --endian=$(ENDIAN) -mv7$(CGT_ISA) --abi=$(CSWITCH_FORMAT) -eo.$(OBJEXT) -ea.$(ASMEXT) --symdebug:dwarf --embed_inline_assembly
      ifeq ($(CGT_ISA),$(filter $(CGT_ISA), R5))
        CFLAGS_INTERNAL += --float_support=vfpv3d16
        # Enabling thumb2 mode 
        CFLAGS_INTERNAL += --code_state=16
      else
        CFLAGS_INTERNAL += --float_support=vfplib
      endif
    else ifeq ($(CGT_ISA), Arm9)
      CFLAGS_INTERNAL = -c -qq -pdsw225 --endian=$(ENDIAN) -mv5e --float_support=vfplib --abi=$(CSWITCH_FORMAT) -eo.$(OBJEXT) -ea.$(ASMEXT) --symdebug:dwarf --embed_inline_assembly
    endif
    ifeq ($(TREAT_WARNINGS_AS_ERROR), yes)
      CFLAGS_INTERNAL += --emit_warnings_as_errors
      LNKFLAGS_INTERNAL_COMMON += --emit_warnings_as_errors
    endif
    CFLAGS_DIROPTS = -fr=$(OBJDIR) -fs=$(OBJDIR)
    
    ifeq ($(CGT_ISA),$(filter $(CGT_ISA),R5))
    
    ifeq ($(XDC_DISABLE_THUMB_MODE),yes)
     XDC_TARGET_NAME=$(CGT_ISA)F
    else
     XDC_TARGET_NAME=$(CGT_ISA)Ft
    endif
    
     ifneq ($(EXTERNAL_LNKCMD_FILE_LOCAL),)
     EXTERNAL_LNKCMD_FILE = $(EXTERNAL_LNKCMD_FILE_LOCAL)
     else
     EXTERNAL_LNKCMD_FILE = $(CONFIG_BLD_LNK_r5f)
     endif
    
    else
     XDC_TARGET_NAME=$(CGT_ISA)
    endif
    
    XDC_HFILE_NAME = $(basename $(notdir $(XDC_CFG_FILE_$(CORE))))
    
    ifneq ($(PEXT_BIOS),)
    XDC_HFILE_EXT = $(PEXT_BIOS)
    else
    XDC_HFILE_EXT = p$(FORMAT_EXT)$(CGT_EXT)
    endif
    
    # CFLAGS based on profile selected
    ifeq ($(BUILD_PROFILE_$(CORE)), debug)
     LNKFLAGS_INTERNAL_BUILD_PROFILE =
     CFLAGS_XDCINTERNAL = -Dxdc_target_name__=$(XDC_TARGET_NAME) -Dxdc_target_types__=ti/targets/arm/elf/std.h -Dxdc_bld__profile_debug
     CFLAGS_INTERNAL += -D_DEBUG_=1
     ifndef MODULE_NAME
      CFLAGS_XDCINTERNAL += -Dxdc_cfg__header__='$(CONFIGURO_DIR)/package/cfg/$(XDC_HFILE_NAME)_$(XDC_HFILE_EXT).h'
     endif
    
    endif
    ifeq ($(BUILD_PROFILE_$(CORE)), release)
     ifeq ($(CGT_ISA),$(filter $(CGT_ISA), M4 R5 M3))
       LNKFLAGS_INTERNAL_BUILD_PROFILE = -qq --diag_warning=225 --diag_suppress=23000 $(LNKFLAGS_GLOBAL_$(CORE))
       ifeq ($(CGT_ISA),$(filter $(CGT_ISA), R5))
         CFLAGS_INTERNAL += -ms -O4 -s
       else
         CFLAGS_INTERNAL += -ms -O4 -op0 -os --optimize_with_debug --inline_recursion_limit=20
       endif
       CFLAGS_XDCINTERNAL = -Dxdc_target_name__=$(XDC_TARGET_NAME) -Dxdc_target_types__=ti/targets/arm/elf/std.h -Dxdc_bld__profile_release
       ifndef MODULE_NAME
         CFLAGS_XDCINTERNAL += -Dxdc_cfg__header__='$(CONFIGURO_DIR)/package/cfg/$(XDC_HFILE_NAME)_$(XDC_HFILE_EXT).h'
       endif
     endif
     ifeq ($(CGT_ISA), Arm9)
            LNKFLAGS_INTERNAL_BUILD_PROFILE = -qq --diag_warning=225 --diag_suppress=23000 $(LNKFLAGS_GLOBAL_$(CORE))
            CFLAGS_INTERNAL += -ms -oe -O3 -op0 -os --optimize_with_debug --inline_recursion_limit=20
    	CFLAGS_XDCINTERNAL = -Dxdc_target_name__=$(XDC_TARGET_NAME) -Dxdc_target_types__=ti/targets/arm/elf/std.h -Dxdc_bld__profile_release
    	ifndef MODULE_NAME
    	  CFLAGS_XDCINTERNAL += -Dxdc_cfg__header__='$(CONFIGURO_DIR)/package/cfg/$(XDC_HFILE_NAME)_$(XDC_HFILE_EXT).h'
    	endif
     endif
    endif
    
    # Assemble CFLAGS from all other CFLAGS definitions
    _CFLAGS = $(CFLAGS_GLOBAL_$(CORE)) $(CFLAGS_INTERNAL) $(CFLAGS_LOCAL_COMMON) $(CFLAGS_LOCAL_$(CORE)) $(CFLAGS_COMP_COMMON)
    ifeq ($($(MODULE_NAME)_BOARD_DEPENDENCY),yes)
      _CFLAGS += $(CFLAGS_LOCAL_$(BOARD)) $(CFLAGS_GLOBAL_$(BOARD))
    else
      ifeq ($($(APP_NAME)_BOARD_DEPENDENCY),yes)
        _CFLAGS += $(CFLAGS_LOCAL_$(BOARD)) $(CFLAGS_GLOBAL_$(BOARD))
      else
        _CFLAGS += $(CFLAGS_LOCAL_$(SOC)) $(CFLAGS_GLOBAL_$(SOC))
      endif
    endif
    ifneq ($(XDC_CFG_FILE_$(CORE)),)
      _CFLAGS += $(CFLAGS_XDCINTERNAL)
    else
      ifneq ($(findstring xdc, $(INCLUDE_EXTERNAL_INTERFACES)),)
          _CFLAGS += $(CFLAGS_XDCINTERNAL)
      endif
    endif
    
    # For TPR12, fore enum type to int to be compatible with DSP
    ifeq ($(SOC),$(filter $(SOC), tpr12))
      _CFLAGS += --enum_type=int
    endif
    
    # Decide the compile mode
    COMPILEMODE = -fc
    ifeq ($(CPLUSPLUS_BUILD), yes)
      COMPILEMODE = -fg
    endif
    
    # Object file creation
    # The first $(CC) generates the dependency make files for each of the objects
    # The second $(CC) compiles the source to generate object
    $(OBJ_PATHS): $(OBJDIR)/%.$(OBJEXT): %.c $(GEN_FILE) | $(OBJDIR) $(DEPDIR)
    	$(ECHO) \# Compiling $(PRINT_MESSAGE): $<
    	$(CC) -ppd=$(DEPFILE).P $(_CFLAGS) $(INCLUDES) $(CFLAGS_DIROPTS) $(COMPILEMODE) $<
    	$(CC) $(_CFLAGS) $(INCLUDES) $(CFLAGS_DIROPTS) $(COMPILEMODE) $<
    
    $(OBJ_PATHS_CPP): $(OBJDIR)/%.$(OBJEXT): %.cpp $(GEN_FILE) | $(OBJDIR) $(DEPDIR)
    	$(ECHO) \# Compiling $(PRINT_MESSAGE): $<
    	$(CC) -ppd=$(DEPFILE).P $(_CFLAGS) $(INCLUDES) $(CFLAGS_DIROPTS) $(COMPILEMODE) $<
    	$(CC) $(_CFLAGS) $(INCLUDES) $(CFLAGS_DIROPTS) $(COMPILEMODE) $<
    
    #TODO: Check ASMFLAGS if really required
    ASMFLAGS = -me -g --code_state=16 --diag_warning=225
    
    # Object file creation
    $(OBJ_PATHS_ASM): $(OBJDIR)/%.$(OBJEXT): %.asm $(GEN_FILE) | $(OBJDIR) $(DEPDIR)
    	$(ECHO) \# Compiling $(PRINT_MESSAGE): $<
    	$(CC) -ppd=$(DEPFILE).P $(_CFLAGS) $(INCLUDES) $(CFLAGS_DIROPTS) -fa $<
    	$(CC) $(_CFLAGS) $(INCLUDES) $(CFLAGS_DIROPTS) -fa $<
    
    $(PACKAGE_PATHS): $(PACKAGEDIR)/%: %
    	$(ECHO) \# Copying to $(PACKAGE_RELPATH)/$($(APP_NAME)$(MODULE_NAME)_RELPATH)/$<
    	$(MKDIR) -p $(PACKAGE_ROOT)/$($(APP_NAME)$(MODULE_NAME)_RELPATH)
    	$(CP) --parents -rf $< $(PACKAGE_ROOT)/$($(APP_NAME)$(MODULE_NAME)_RELPATH)
    
    # Archive flags - normally doesn't change
    ARFLAGS = rq
    
    # Archive/library file creation
    $(LIBDIR)/$(LIBNAME).$(LIBEXT) : $(OBJ_PATHS_ASM) $(OBJ_PATHS) $(OBJ_PATHS_CPP) $(GEN_FILE) | $(LIBDIR)
    	$(ECHO) \#
    	$(ECHO) \# Archiving $(PRINT_MESSAGE) into $@ ...
    	$(ECHO) \#
    	$(AR) $(ARFLAGS) $@ $(OBJ_PATHS_ASM) $(OBJ_PATHS) $(OBJ_PATHS_CPP)
    
    $(LIBDIR)/$(LIBNAME).$(LIBEXT)_size: $(LIBDIR)/$(LIBNAME).$(LIBEXT)
    	$(ECHO) \#
    	$(ECHO) \# Computing sectti size $(PRINT_MESSAGE) info into $@.txt ...
    	$(ECHO) \#
    	$(SIZE) -x $(subst _size,,$@) > $@temp
    	$(SECTTI) $@temp > $@.txt
    	$(RM)   $@temp
    
    # Linker options and rules
    LNKFLAGS_INTERNAL_COMMON += -w -q -u _c_int00
    
    ifeq ($(BOARD),$(filter $(BOARD), qtJ7))
      LNKFLAGS_INTERNAL_COMMON += -cr --ram_model
    else
      LNKFLAGS_INTERNAL_COMMON += -c
    endif
    
    ifeq ($(CGT_ISA), R5)
      LNKFLAGS_INTERNAL_COMMON += -mv7R5
      #--diag_suppress=10063 supresses 'warning: entry point other than _c_int00 specified'
      LNKFLAGS_INTERNAL_COMMON += --diag_suppress=10063
    endif
    
    # Assemble Linker flags from all other LNKFLAGS definitions
    _LNKFLAGS = $(LNKFLAGS_INTERNAL_COMMON) $(LNKFLAGS_INTERNAL_BUILD_PROFILE) $(LNKFLAGS_GLOBAL_$(CORE)) $(LNKFLAGS_LOCAL_COMMON) $(LNKFLAGS_LOCAL_$(CORE))
    
    # Path of the RTS library - normally doesn't change for a given tool-chain
    #Let the linker choose the required library
    RTSLIB_PATH = $(CGT_PATH)/lib/libc.a
    
    LNK_LIBS = $(addprefix -l,$(LIB_PATHS))
    LNK_LIBS += $(addprefix -l,$(EXT_LIB_PATHS))
    
    # Linker - to create executable file
    ifeq ($(LOCAL_APP_NAME),)
     EXE_NAME = $(BINDIR)/$(APP_NAME)_$(CORE)_$(BUILD_PROFILE_$(CORE)).$(EXEEXT)
     EXE_STRIP_NAME = $(BINDIR)/$(APP_NAME)_$(CORE)_$(BUILD_PROFILE_$(CORE))_strip.$(EXEEXT)
    else
     EXE_NAME = $(BINDIR)/$(LOCAL_APP_NAME)_$(BUILD_PROFILE_$(CORE)).$(EXEEXT)
     EXE_STRIP_NAME = $(BINDIR)/$(LOCAL_APP_NAME)_$(BUILD_PROFILE_$(CORE))_strip.$(EXEEXT)
    endif
    
    NUM_PROCS = 1
    
    ifeq ($(OS),Windows_NT)
      NUM_PROCS = $(NUMBER_OF_PROCESSORS)
    else
      NUM_PROCS = $(shell grep -c ^processor /proc/cpuinfo)
    endif
    
    ifneq ($(findstring mcu,$(CORE)),)
    RTSLIB_NAME = rtsv7R4_T_le_v3D16_eabi.lib
    BUILD_LIB_ONCE = $(CGT_PATH)/lib/$(RTSLIB_NAME)
    $(BUILD_LIB_ONCE):
    	$(ECHO) \# $@ not found, building  $@ ...
    	$(CGT_PATH)/lib/mklib --pattern=$(RTSLIB_NAME) --parallel=$(NUM_PROCS) --compiler_bin_dir=$(CGT_PATH)/bin
    endif
    
    ifneq ($(XDC_CFG_FILE_$(CORE)),)
    $(EXE_NAME) : $(OBJ_PATHS_ASM) $(OBJ_PATHS) $(OBJ_PATHS_CPP) $(LIB_PATHS) $(LNKCMD_FILE) $(OBJDIR)/$(CFG_COBJ_XDC) $(BUILD_LIB_ONCE)
    	$(CP) $(CONFIGURO_DIR)/package/cfg/*.rov.xs $(BINDIR)
    else
    $(EXE_NAME) : $(OBJ_PATHS_ASM) $(OBJ_PATHS) $(OBJ_PATHS_CPP) $(LIB_PATHS) $(LNKCMD_FILE) $(BUILD_LIB_ONCE)
    endif
    	$(ECHO) \# Linking into $(EXE_NAME)...
    	$(ECHO) \#
    ifneq ($(XDC_CFG_FILE_$(CORE)),)
    	$(CP) $(OBJDIR)/$(CFG_COBJ_XDC) $(CONFIGURO_DIR)/package/cfg
      ifeq ($(BUILD_PROFILE_$(CORE)),whole_program_debug)
    	$(LNK) $(_LNKFLAGS) $(OBJ_PATHS_ASM) $(OBJ_PATHS) $(OBJDIR)/$(CFG_COBJ_XDC) $(LNKCMD_FILE) $(EXTERNAL_LNKCMD_FILE) -o $@ -m $@.map $(LNK_LIBS) $(RTSLIB_PATH)
      else
    	$(LNK) $(_LNKFLAGS) $(OBJ_PATHS_ASM) $(OBJ_PATHS) $(LNKCMD_FILE) $(EXTERNAL_LNKCMD_FILE) -o $@ -m $@.map $(LNK_LIBS) $(RTSLIB_PATH)
      endif
    else
    	$(LNK) $(_LNKFLAGS) $(OBJ_PATHS_ASM) $(OBJ_PATHS) $(LNKCMD_FILE) $(EXTERNAL_LNKCMD_FILE) -o $@ -m $@.map $(LNK_LIBS) $(RTSLIB_PATH)
    endif
    	$(ECHO) \#
    	$(ECHO) \# $@ created.
    	$(ECHO) \#
    ifeq ($(BUILD_PROFILE_$(CORE)), release)
    	$(ECHO) \# Generating stripped image into $(EXE_STRIP_NAME)...
    	$(ECHO) \#
    	$(STRP) -p $(EXE_NAME) -o $(EXE_STRIP_NAME)
    endif
    # XDC specific - assemble XDC-Configuro command
    ifeq ($(BUILD_PROFILE_$(CORE)),prod_release)
      CONFIGURO_BUILD_PROFILE = release
    else
      CONFIGURO_BUILD_PROFILE = $(BUILD_PROFILE_$(CORE))
    endif
    
    _XDC_GREP_STRING = \"$(XDC_GREP_STRING)\"
    EGREP_CMD = $(EGREP) -ivw $(XDC_GREP_STRING) $(XDCLNKCMD_FILE)
    
    ifeq ($(OS),Windows_NT)
      EVERYONE = $(word 1,$(shell whoami -groups | findstr "S-1-1-0"))
    endif
    
    # Invoke configuro for the rest of the components
    #  NOTE: 1. String handling is having issues with various make versions when the
    #           cammand is directly tried to be given below. Hence, as a work-around,
    #           the command is re-directed to a file (shell or batch file) and then
    #           executed
    #        2. The linker.cmd file generated, includes the libraries generated by
    #           XDC. An egrep to search for these and omit in the .cmd file is added
    #           after configuro is done
    xdc_configuro : $(CFG_C_XDC)
    	$(MAKE) $(LNKCMD_FILE)
    
    ifeq ($(DEST_ROOT),)
      XDC_BUILD_ROOT = .
    else
      XDC_BUILD_ROOT = $(DEST_ROOT)
    endif
    
    ifneq ($(OBJEXT_BIOS),)
    # if BIOS' obj extensions are different, xdc generated files's objfiles need to have different extensions as well
    CFG_C_XDC_CFLAGS = $(subst -eo.$(OBJEXT),-eo.$(OBJEXT_BIOS),$(_CFLAGS))
    else
    CFG_C_XDC_CFLAGS = $(_CFLAGS)
    endif
    
    $(CFG_C_XDC) $(LNKCMD_FILE) : $(XDC_CFG_FILE_NAME) $(XDC_CFG_UPDATE)
    	$(ECHO) \# Invoking configuro...
    	$(MKDIR) -p $(XDC_BUILD_ROOT)
    	$(xdc_PATH)/xs xdc.tools.configuro --generationOnly -o $(CONFIGURO_DIR) -t $(TARGET_XDC) -p $(PLATFORM_XDC) \
                   -r $(CONFIGURO_BUILD_PROFILE) -b $(CONFIG_BLD_XDC_$(ISA)) --ol $(LNKCMD_FILE) $(XDC_CFG_FILE_NAME)
    	$(ECHO) \# Configuro done!
    
    ifneq ($(XDC_CFG_FILE_$(CORE)),)
      ifndef MODULE_NAME
    $(OBJDIR)/$(CFG_COBJ_XDC) : $(CFG_C_XDC)
    	$(ECHO) \# Compiling generated $(CFG_COBJ_XDC)
    	$(CC) -ppd=$(DEPFILE).P $(CFG_C_XDC_CFLAGS) $(INCLUDES) $(CFLAGS_DIROPTS) -fc $(CFG_C_XDC)
    	$(CC) $(CFG_C_XDC_CFLAGS) $(INCLUDES) $(CFLAGS_DIROPTS) -fc $(CFG_C_XDC)
      endif
    endif
    
    # Include dependency make files that were generated by $(CC)
    -include $(SRCS:%.c=$(DEPDIR)/%.P)
    -include $(SRCS_CPP:%.cpp=$(DEPDIR)/%.P)
    
    # Nothing beyond this point
    
    as that I've found in rule_a53.mk.

     

    now my makefile 

    ## -------- common makefile -------- ##
    
    ifeq ($(CORE), )
    CORE := mcu1_0
    endif
    BOARD = am65xx_idk
    SOC = am65xx
    OS = linux
    IS_BAREMETAL = no
    CPLUSPLUS_BUILD=yes
    ifeq ($(BUILD_PROFILE), )
    BUILD_PROFILE = release
    endif
    ## -------- host-specific paths -------- ##
                                             ## MODIFY THESE PATHS PER YOUR INSTALLATION
                                             ## WINDOWS HOST -- SURROUND THESE PATHS WITH SINGLE QUOTES (') IF THEY CONTAIN SPACES  
    
    XDC_FLAGS := --xdcpath='$(BIOS_INSTALL_PATH)/packages;$(PDK_INSTALL_PATH)' 
    
    ## --------build tools -------- ##
    ifeq ($(RULES_MAKE), )
    include $(PDK_INSTALL_PATH)/ti/build/Rules.make
    else
    include $(RULES_MAKE)
    endif
    
    ## -------- build parameters -------- ##
    
    TARGET = ti.targets.arm.elf.R5F
    PLATFORM = ti.platforms.cortexR:AM6548
    APP_NAME = bni_master_ng
    
    C_SRC = dummyC.c
    C_SRC += GPIO_board.c
    
    
    CPP_SRC = main.cpp
    CPP_SRC += Dummy.cpp
    CPP_SRC += Gpio.cpp
    CPP_SRC += GPIO_interrupt.cpp
    
    SRCS_COMMON += $(C_SRC)
    SRCS_CPP += $(CPP_SRC)
    
    # List all the external components/interfaces, whose interface header files
    #  need to be included for this component
    INCLUDE_EXTERNAL_INTERFACES = pdk xdc bios
    
    # List all the components required by the application
    COMP_LIST_COMMON = csl sciclient board i2c gpio uart osal_tirtos 
    XDC_CFG_FILE_$(CORE) = ./bni_master_ng.cfg
    EXTERNAL_LNKCMD_FILE_LOCAL = ./bni_master_ng.lds
    
    
    CFLAGS_LOCAL_COMMON += $(PDK_CFLAGS) -DUSE_BIOS -D$(BOARD) 
    
    $(info -----------------------PDK_CFLAGS is $(PDK_CFLAGS))
    $(info -----------------------MAKERULEDIR is $(MAKERULEDIR))
    $(info -----------------------ROOTDIR is $(ROOTDIR))
    $(info -----------------------ISA is $(ISA))
    $(info -----------------------FORMAT is $(FORMAT))
    $(info -----------------------TARGET_XDC is $(TARGET_XDC))
    $(info -----------------------CORE is $(CORE))
    
    $(info -----------------------CGT_ISA is $(CGT_ISA))
    $(info -----------------------XDC_TARGET_NAME is $(XDC_TARGET_NAME))
    
    
    # Include common make files
    ifeq ($(MAKERULEDIR), )
    #Makerule path not defined, define this and assume relative path from ROOTDIR
      MAKERULEDIR := $(ROOTDIR)/ti/build/makerules
      export MAKERULEDIR
    endif
    
    include $(MAKERULEDIR)/common.mk
    
    
    can handle .cpp files. But cause the following compile error:

    js: "/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/drv/gpio/package.xs", line 122: Error:     Library not found: /home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/drv/gpio/./lib/am65xx/r5f/release/ti.drv.gpio.aer5ft

    My question is how to link .aer5f instead of .aer5ft file? Because in PDK there is only ti.drv.gpio.aer5f built.
     

    build.log

    zhih@zhih-HP-ProDesk-600-G3-MT:~/workspace_ccs/firmware_60/src$ make LIMIT_SOCS=am65xx LIMIT_BOARDS=am65xx_idk PDK_SOC=am65xx SOC=am65xx  BOARD=am65xx_idk CORE=mcu1_0 BUILD_PROFILE=release CPLUSPLUS_BUILD=yes 
    +++++++++++++++++ ----------- /home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/build/Rules.make
    -----------------------PDK_CFLAGS is  -DBUILD_MCU1_0 -DBUILD_MCU
    -----------------------MAKERULEDIR is /home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/build/makerules
    -----------------------ROOTDIR is /home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages
    -----------------------ISA is r5f
    -----------------------FORMAT is ELF
    -----------------------TARGET_XDC is ti.targets.arm.elf.R5Ft
    -----------------------CORE is mcu1_0
    -----------------------CGT_ISA is 
    -----------------------XDC_TARGET_NAME is 
    /bin/mkdir -p /home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/binary/bni_master_ng/obj/am65xx/mcu1_0/release/little/.deps
    /bin/mkdir -p /home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/binary/bni_master_ng/obj/am65xx/mcu1_0/release
    /bin/mkdir -p /home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/binary/bni_master_ng/obj/am65xx/mcu1_0/release/little/.deps
    /bin/mkdir -p /home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/binary/bni_master_ng/obj/am65xx/mcu1_0/release/configuro
    echo  "*****************"  make  csl sciclient board i2c gpio uart osal_tirtos  
    ***************** make csl sciclient board i2c gpio uart osal_tirtos
    make  csl sciclient board i2c gpio uart osal_tirtos  
    make[1]: Verzeichnis „/home/zhih/workspace_ccs/firmware_60/src“ wird betreten
    +++++++++++++++++ ----------- /home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/build/Rules.make
    -----------------------PDK_CFLAGS is  -DBUILD_MCU1_0 -DBUILD_MCU
    -----------------------MAKERULEDIR is /home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/build/makerules
    -----------------------ROOTDIR is /home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages
    -----------------------ISA is r5f
    -----------------------FORMAT is ELF
    -----------------------TARGET_XDC is ti.targets.arm.elf.R5Ft
    -----------------------CORE is mcu1_0
    -----------------------CGT_ISA is 
    -----------------------XDC_TARGET_NAME is 
    make -C /home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/csl -fmakefile.mk
    make[2]: Verzeichnis „/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/csl“ wird betreten
    make[2]: Für das Ziel „all“ ist nichts zu tun.
    make[2]: Verzeichnis „/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/csl“ wird verlassen
    make -C /home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/drv/sciclient -fsrc/makefile
    make[2]: Verzeichnis „/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/drv/sciclient“ wird betreten
    make[2]: Für das Ziel „all“ ist nichts zu tun.
    make[2]: Verzeichnis „/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/drv/sciclient“ wird verlassen
    make -C /home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/board -f build/makefile.mk
    make[2]: Verzeichnis „/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/board“ wird betreten
    make[2]: Für das Ziel „all“ ist nichts zu tun.
    make[2]: Verzeichnis „/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/board“ wird verlassen
    make -C /home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/drv/i2c -f build/makefile.mk
    make[2]: Verzeichnis „/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/drv/i2c“ wird betreten
    make[2]: Für das Ziel „all“ ist nichts zu tun.
    make[2]: Verzeichnis „/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/drv/i2c“ wird verlassen
    make -C /home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/drv/gpio -f build/makefile.mk
    make[2]: Verzeichnis „/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/drv/gpio“ wird betreten
    make[2]: Für das Ziel „all“ ist nichts zu tun.
    make[2]: Verzeichnis „/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/drv/gpio“ wird verlassen
    make -C /home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/drv/uart -f build/makefile.mk
    make[2]: Verzeichnis „/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/drv/uart“ wird betreten
    make[2]: Für das Ziel „all“ ist nichts zu tun.
    make[2]: Verzeichnis „/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/drv/uart“ wird verlassen
    make -C /home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/osal -f build/makefile_tirtos.mk
    make[2]: Verzeichnis „/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/osal“ wird betreten
    make[2]: Für das Ziel „all“ ist nichts zu tun.
    make[2]: Verzeichnis „/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/osal“ wird verlassen
    make[1]: Verzeichnis „/home/zhih/workspace_ccs/firmware_60/src“ wird verlassen
    make  /home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/binary/bni_master_ng/bin/am65xx/bni_master_ng_mcu1_0_release.xer5f
    make[1]: Verzeichnis „/home/zhih/workspace_ccs/firmware_60/src“ wird betreten
    +++++++++++++++++ ----------- /home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/build/Rules.make
    -----------------------PDK_CFLAGS is  -DBUILD_MCU1_0 -DBUILD_MCU
    -----------------------MAKERULEDIR is /home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/build/makerules
    -----------------------ROOTDIR is /home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages
    -----------------------ISA is r5f
    -----------------------FORMAT is ELF
    -----------------------TARGET_XDC is ti.targets.arm.elf.R5Ft
    -----------------------CORE is mcu1_0
    -----------------------CGT_ISA is 
    -----------------------XDC_TARGET_NAME is 
    # Compiling am65xx:mcu1_0:release:bni_master_ng: dummyC.c
    /home/zhih/ti/AM65XX_RTOS_SDK/ti-cgt-arm_18.12.5.LTS/bin/armcl -ppd=/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/binary/bni_master_ng/obj/am65xx/mcu1_0/release/little/.deps/dummyC.P -g -ms -DMAKEFILE_BUILD -c -qq -pdsw225 --endian=little -mv7R5 --abi=eabi -eo.oer5f -ea.ser5f --symdebug:dwarf --embed_inline_assembly --float_support=vfpv3d16 --code_state=16 --emit_warnings_as_errors -ms -O4 -s  -DBUILD_MCU1_0 -DBUILD_MCU -DUSE_BIOS -Dam65xx_idk     -DSOC_AM65XX -Dxdc_target_name__=R5Ft -Dxdc_target_types__=ti/targets/arm/elf/std.h -Dxdc_bld__profile_release -Dxdc_cfg__header__='/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/binary/bni_master_ng/obj/am65xx/mcu1_0/release/configuro/package/cfg/bni_master_ng_per5ft.h' -I/home/zhih/ti/AM65XX_RTOS_SDK/ti-cgt-arm_18.12.5.LTS/include -I/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages -I/home/zhih/ti/AM65XX_RTOS_SDK/xdctools_3_55_02_22_core/packages -I/home/zhih/ti/AM65XX_RTOS_SDK/bios_6_76_03_01/packages -fr=/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/binary/bni_master_ng/obj/am65xx/mcu1_0/release -fs=/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/binary/bni_master_ng/obj/am65xx/mcu1_0/release -fg dummyC.c
    /home/zhih/ti/AM65XX_RTOS_SDK/ti-cgt-arm_18.12.5.LTS/bin/armcl -g -ms -DMAKEFILE_BUILD -c -qq -pdsw225 --endian=little -mv7R5 --abi=eabi -eo.oer5f -ea.ser5f --symdebug:dwarf --embed_inline_assembly --float_support=vfpv3d16 --code_state=16 --emit_warnings_as_errors -ms -O4 -s  -DBUILD_MCU1_0 -DBUILD_MCU -DUSE_BIOS -Dam65xx_idk     -DSOC_AM65XX -Dxdc_target_name__=R5Ft -Dxdc_target_types__=ti/targets/arm/elf/std.h -Dxdc_bld__profile_release -Dxdc_cfg__header__='/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/binary/bni_master_ng/obj/am65xx/mcu1_0/release/configuro/package/cfg/bni_master_ng_per5ft.h' -I/home/zhih/ti/AM65XX_RTOS_SDK/ti-cgt-arm_18.12.5.LTS/include -I/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages -I/home/zhih/ti/AM65XX_RTOS_SDK/xdctools_3_55_02_22_core/packages -I/home/zhih/ti/AM65XX_RTOS_SDK/bios_6_76_03_01/packages -fr=/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/binary/bni_master_ng/obj/am65xx/mcu1_0/release -fs=/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/binary/bni_master_ng/obj/am65xx/mcu1_0/release -fg dummyC.c
    # Compiling am65xx:mcu1_0:release:bni_master_ng: GPIO_board.c
    /home/zhih/ti/AM65XX_RTOS_SDK/ti-cgt-arm_18.12.5.LTS/bin/armcl -ppd=/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/binary/bni_master_ng/obj/am65xx/mcu1_0/release/little/.deps/GPIO_board.P -g -ms -DMAKEFILE_BUILD -c -qq -pdsw225 --endian=little -mv7R5 --abi=eabi -eo.oer5f -ea.ser5f --symdebug:dwarf --embed_inline_assembly --float_support=vfpv3d16 --code_state=16 --emit_warnings_as_errors -ms -O4 -s  -DBUILD_MCU1_0 -DBUILD_MCU -DUSE_BIOS -Dam65xx_idk     -DSOC_AM65XX -Dxdc_target_name__=R5Ft -Dxdc_target_types__=ti/targets/arm/elf/std.h -Dxdc_bld__profile_release -Dxdc_cfg__header__='/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/binary/bni_master_ng/obj/am65xx/mcu1_0/release/configuro/package/cfg/bni_master_ng_per5ft.h' -I/home/zhih/ti/AM65XX_RTOS_SDK/ti-cgt-arm_18.12.5.LTS/include -I/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages -I/home/zhih/ti/AM65XX_RTOS_SDK/xdctools_3_55_02_22_core/packages -I/home/zhih/ti/AM65XX_RTOS_SDK/bios_6_76_03_01/packages -fr=/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/binary/bni_master_ng/obj/am65xx/mcu1_0/release -fs=/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/binary/bni_master_ng/obj/am65xx/mcu1_0/release -fg GPIO_board.c
    /home/zhih/ti/AM65XX_RTOS_SDK/ti-cgt-arm_18.12.5.LTS/bin/armcl -g -ms -DMAKEFILE_BUILD -c -qq -pdsw225 --endian=little -mv7R5 --abi=eabi -eo.oer5f -ea.ser5f --symdebug:dwarf --embed_inline_assembly --float_support=vfpv3d16 --code_state=16 --emit_warnings_as_errors -ms -O4 -s  -DBUILD_MCU1_0 -DBUILD_MCU -DUSE_BIOS -Dam65xx_idk     -DSOC_AM65XX -Dxdc_target_name__=R5Ft -Dxdc_target_types__=ti/targets/arm/elf/std.h -Dxdc_bld__profile_release -Dxdc_cfg__header__='/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/binary/bni_master_ng/obj/am65xx/mcu1_0/release/configuro/package/cfg/bni_master_ng_per5ft.h' -I/home/zhih/ti/AM65XX_RTOS_SDK/ti-cgt-arm_18.12.5.LTS/include -I/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages -I/home/zhih/ti/AM65XX_RTOS_SDK/xdctools_3_55_02_22_core/packages -I/home/zhih/ti/AM65XX_RTOS_SDK/bios_6_76_03_01/packages -fr=/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/binary/bni_master_ng/obj/am65xx/mcu1_0/release -fs=/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/binary/bni_master_ng/obj/am65xx/mcu1_0/release -fg GPIO_board.c
    # Invoking configuro...
    /bin/mkdir -p /home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/binary
    /home/zhih/ti/AM65XX_RTOS_SDK/xdctools_3_55_02_22_core/xs xdc.tools.configuro --generationOnly -o /home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/binary/bni_master_ng/obj/am65xx/mcu1_0/release/configuro -t ti.targets.arm.elf.R5Ft -p "ti.platforms.cortexR:AM65X" \
                   -r release -b /home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/build/am65xx/config_am65xx_r5f.bld --ol /home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/binary/bni_master_ng/obj/am65xx/mcu1_0/release/configuro/linker_mod.cmd ./bni_master_ng.cfg
    making package.mak (because of package.bld) ...
    generating interfaces for package configuro (because package/package.xdc.inc is older than package.xdc) ...
    configuring bni_master_ng.xer5ft from package/cfg/bni_master_ng_per5ft.cfg ...
    BUILD_PROFILE: release
    	 SoC Type is 
    	 SoC Type is am65xx
    generating custom ti.sysbios library makefile ... 
    	System environment LIBDIR variable defined : ./lib
    js: "/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/drv/gpio/package.xs", line 122: Error: 	Library not found: /home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/drv/gpio/./lib/am65xx/r5f/release/ti.drv.gpio.aer5ft
    gmake: *** [package.mak:203: package/cfg/bni_master_ng_per5ft.xdl] Fehler 1
    gmake: *** Datei „package/cfg/bni_master_ng_per5ft.xdl“ wird gelöscht
    gmake: *** [package/cfg/bni_master_ng_per5ft.xdl] Datei „package/cfg/bni_master_ng_per5ft.h“ wird gelöscht
    gmake: *** [package/cfg/bni_master_ng_per5ft.xdl] Datei „package/cfg/bni_master_ng_per5ft.c“ wird gelöscht
    Warning: directory "/home/zhih/ti/AM65XX_RTOS_SDK/edma3_lld_2_12_05_30E/packages" on package path does not exist
    Warning: directory "/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/drv/ipc/packages" on package path does not exist
    js: "/home/zhih/ti/AM65XX_RTOS_SDK/xdctools_3_55_02_22_core/packages/xdc/tools/Cmdr.xs", line 52: Error: xdc.tools.configuro: configuration failed due to earlier errors (status = 2); '/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/binary/bni_master_ng/obj/am65xx/mcu1_0/release/configuro/linker_mod.cmd' deleted.
    /home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/build/makerules/rules_ti_cgt_arm.mk:341: recipe for target '/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/binary/bni_master_ng/obj/am65xx/mcu1_0/release/configuro/linker_mod.cmd' failed
    make[1]: *** [/home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/binary/bni_master_ng/obj/am65xx/mcu1_0/release/configuro/linker_mod.cmd] Error 1
    make[1]: Verzeichnis „/home/zhih/workspace_ccs/firmware_60/src“ wird verlassen
    /home/zhih/ti/AM65XX_RTOS_SDK/pdk_am65xx_1_0_7/packages/ti/build/makerules/common.mk:401: recipe for target 'mcu1_0' failed
    make: *** [mcu1_0] Error 2
    
    

     
    Best Regards
     
    Haining

  • Haining,

    >>TARGET_XDC is ti.targets.arm.elf.R5Ft

    Can you please try to set "XDC_DISABLE_THUMB_MODE = yes", see platform.mk file:

    ifeq ($(ISA),r5f)
    ifeq ($(FORMAT),ELF)
    # If XDC thumb mode is disabled,choose the non-thumb target of XDC
    ifeq ($(XDC_DISABLE_THUMB_MODE),yes)
    TARGET_XDC = ti.targets.arm.elf.R5F
    else
    TARGET_XDC = ti.targets.arm.elf.R5Ft
    endif
    FORMAT_EXT = e
    else
    TARGET_XDC = ti.targets.arm.R5Ft
    endif

    Regards,

    Garrett

  • Garrett,

    it works! Thanks!

    but btw. If the cpp code is inside PDK, there is no need to set this variable. It needs only to be activated, if 1. the codes are outside of PDK and 2. the cpp is used. It that ture? Is there any document for this variable?

    Regards,

    Haining

  • Haining,

    I think you are right as the CPP source inside PDK may have been covered by wildcard function like SOURCES = $(wildcard *.cpp). 

    We don't have the document for the variable. I happened to find the build log containing 'TARGET_XDC is ti.targets.arm.elf.R5Ft'.

    Regards,

    Garrett