summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: f093f9a)
raw | patch | inline | side by side (parent: f093f9a)
author | Sundaram Raju <sundaram@ti.com> | |
Tue, 11 Jan 2011 14:02:22 +0000 (19:32 +0530) | ||
committer | Sundaram Raju <sundaram@ti.com> | |
Tue, 11 Jan 2011 14:55:48 +0000 (20:25 +0530) |
Signed-off-by: Sundaram Raju <sundaram@ti.com>
makerules/build_config.mk | [new file with mode: 0644] | patch | blob |
makerules/common.mk | [new file with mode: 0644] | patch | blob |
makerules/docs/makerules_spec.doc | [new file with mode: 0644] | patch | blob |
makerules/env.mk | [new file with mode: 0644] | patch | blob |
makerules/platform.mk | [new file with mode: 0644] | patch | blob |
makerules/rules_a8.mk | [new file with mode: 0644] | patch | blob |
makerules/rules_c64p.mk | [new file with mode: 0644] | patch | blob |
makerules/rules_c674.mk | [new file with mode: 0644] | patch | blob |
makerules/rules_m3.mk | [new file with mode: 0644] | patch | blob |
diff --git a/makerules/build_config.mk b/makerules/build_config.mk
--- /dev/null
@@ -0,0 +1,76 @@
+# Filename: build_config.mk
+#
+# Build configuration make file - This file contains all the options that are
+# frequently changed
+#
+# This file changes when:
+# 1. format needs to change (eg: COFF/ELF)
+# 2. Endian-ness needs to change (little/big)
+# 3. global compiler and linker options need to change (one entry for each
+# core)
+# 4. Profile needs to change (debug/whole_program_debug)
+# 5. Build option changes (xdc/make/full)
+#
+
+# Global options
+
+# Build - Allowed values = full | xdc | make
+# This "builds" packages based on the setting:
+# full - build both XDC and make (all the packages/components)
+# xdc - build and configure only XDC packages
+# make - build only make based components and link everything
+# NOTE: BUILD need not be defined at all, which case it behaves like it is set
+# to "full". This is to ensure backward compatibility.
+BUILD = full
+
+# Endianness : Allowed values = little | big
+ENDIAN = little
+
+# Format : Allowed values = COFF | ELF
+FORMAT = COFF
+
+# Platform: ti816x-evm (Netra) | ti814x-evm (Centaurus)
+PLATFORM = ti816x-evm
+
+# CORE
+CORE= c6xdsp
+
+# Platform memory: available external memory
+PLATFORM_MEM = 1024M
+
+#
+# Platform specific
+#
+CFLAGS_GLOBAL_ti816x-evm = -DTI_816X_BUILD -DPLATFORM_EVM_SI
+
+#
+# Core specific options - Cores of ti816x (Netra) and ti814x (Centaurus)
+#
+
+# m3video - Ducati - Core 0 (Cortex-M3)
+
+# Profile: Allowed values = debug | whole_program_debug
+PROFILE_m3video = whole_program_debug
+CFLAGS_GLOBAL_m3video = -g -ms --gcc -D___DSPBIOS___ -D___DUCATI_FW___ -DSYSLINK_USE_TILER -DMULTICHANNEL_OPT=1
+LNKFLAGS_GLOBAL_m3video = -x --zero_init=off --retain=_Ipc_ResetVector
+
+# m3vpss - Ducati - Core 1 (Cortex-M3)
+
+# Profile: Allowed values = debug | whole_program_debug
+PROFILE_m3vpss = whole_program_debug
+CFLAGS_GLOBAL_m3vpss = -g -ms --gcc -D___DSPBIOS___ -D___DUCATI_FW___ -DSYSLINK_USE_TILER -DMULTICHANNEL_OPT=1
+LNKFLAGS_GLOBAL_m3vpss = -x --zero_init=off --retain=_Ipc_ResetVector
+
+# a8host - Cortex-A8
+
+# Profile: Allowed values = debug
+PROFILE_a8host = debug
+CFLAGS_GLOBAL_a8host = -c -x c -Wunused -Wall -g
+LNKFLAGS_GLOBAL_a8host =
+
+# c6xdsp - DSP core
+# Profile: Allowed values = debug | whole_program_debug | release
+PROFILE_c6xdsp = debug
+CFLAGS_GLOBAL_c6xdsp = -g
+
+# Nothing beyond this point
diff --git a/makerules/common.mk b/makerules/common.mk
--- /dev/null
+++ b/makerules/common.mk
@@ -0,0 +1,209 @@
+# Filename: common.mk
+#
+# Common make file - This file has common rules and definitions that are common
+# across platforms/cores/ISAs/SoCs
+#
+# This file needs to change when:
+# 1. common rule/define has to be added or modified
+#
+
+#
+# Include make paths and options for all supported targets/platforms
+#
+
+include $(ROOTDIR)/makerules/build_config.mk
+include $(ROOTDIR)/makerules/env.mk
+include $(ROOTDIR)/makerules/platform.mk
+
+#.DEFAULT_GOAL := all
+
+.PHONY : all clean gendirs m3video m3vpss c6xdsp a8host
+
+all : $(CORE)
+
+# Define directories that are going to be created as a part of build process
+ifdef MODULE_NAME
+ ifeq ($($(MODULE_NAME)_PLATFORM_DEPENDENCY),yes)
+ ifeq ($($(MODULE_NAME)_CORE_DEPENDENCY),yes)
+ DEPENDENCY_SUB_PATH = $(PLATFORM)/$(CORE)
+ else
+ DEPENDENCY_SUB_PATH = $(PLATFORM)/$(ISA)
+ endif
+ else
+ ifeq ($($(MODULE_NAME)_CORE_DEPENDENCY),yes)
+ DEPENDENCY_SUB_PATH = $(CORE)
+ else
+ DEPENDENCY_SUB_PATH = $(ISA)
+ endif
+ endif
+endif
+
+ifeq ($(DEST_ROOT),)
+ ifdef MODULE_NAME
+ OBJDIR = obj/$(DEPENDENCY_SUB_PATH)/$(PROFILE_$(CORE))
+ LIBDIR = lib/$(DEPENDENCY_SUB_PATH)/$(PROFILE_$(CORE))
+ else
+ OBJDIR = obj/$(PLATFORM)/$(CORE)/$(PROFILE_$(CORE))
+ BINDIR = bin/$(PLATFORM)
+ endif
+else
+ ifdef MODULE_NAME
+ OBJDIR = $(DEST_ROOT)/$($(MODULE_NAME)_RELPATH)/obj/$(DEPENDENCY_SUB_PATH)/$(PROFILE_$(CORE))
+ LIBDIR = $(DEST_ROOT)/$($(MODULE_NAME)_RELPATH)/lib/$(DEPENDENCY_SUB_PATH)/$(PROFILE_$(CORE))
+ else
+ OBJDIR = $(DEST_ROOT)/$(APP_NAME)/obj/$(PLATFORM)/$(CORE)/$(PROFILE_$(CORE))
+ BINDIR = $(DEST_ROOT)/$(APP_NAME)/bin/$(PLATFORM)
+ endif
+endif
+
+CONFIGURO_DIRNAME = $(APP_NAME)_configuro
+ifeq ($(XDC_CFG_DIR),)
+ CONFIGURO_DIR = $(OBJDIR)/$(CONFIGURO_DIRNAME)
+ XDC_CFG_FILE_NAME = $(XDC_CFG_FILE_$(CORE))
+else
+ CONFIGURO_DIR = $(XDC_CFG_DIR)/configuro/$(PLATFORM)/$(CORE)/$(PROFILE_$(CORE))/$(CONFIGURO_DIRNAME)
+# XDC_CFG_FILE_NAME = $(XDC_CFG_DIR)/$(XDC_CFG_FILE_$(CORE))
+ XDC_CFG_FILE_NAME = $(XDC_CFG_FILE_$(CORE))
+endif
+
+DEPDIR = $(OBJDIR)/.deps
+DEPFILE = $(DEPDIR)/$(*F)
+
+# Create directories
+$(OBJDIR) :
+ $(MKDIR) -p $(OBJDIR)
+
+$(DEPDIR) :
+ $(MKDIR) -p $(DEPDIR)
+
+$(LIBDIR) :
+ $(MKDIR) -p $(LIBDIR)
+
+$(BINDIR) :
+ $(MKDIR) -p $(BINDIR)
+
+$(CONFIGURO_DIR) :
+ $(MKDIR) -p $(OBJDIR)
+ $(MKDIR) -p $(DEPDIR)
+ $(MKDIR) -p $(CONFIGURO_DIR)
+
+#
+# Common variables
+#
+
+# Assemble list of source file names
+SRCS = $(SRCS_COMMON) $(SRCS_$(CORE)) $(SRCS_$(SOC)) $(SRCS_$(PLATFORM))
+
+# Define search paths
+VPATH = $(SRCDIR)
+
+# Following 'if...' block is for an application.
+ifndef MODULE_NAME
+ # Derive list of all packages from each of the components needed by the app
+ PKG_LIST = $(foreach COMP,$(COMP_LIST_$(CORE)),$($(COMP)_PKG_LIST))
+
+ # For each of the packages (or modules), get a list of source files that are
+ # marked to be compiled in app stage of the build (or in the context in the app)
+ SRCS_APPSTG_FILES = $(foreach PKG, $(PKG_LIST), $($(PKG)_APP_STAGE_FILES))
+ # The app has to compile package cfg source files in its context. The name
+ # of the file assumed is <MOD>_cfg.c under the top-level directory - i.e.
+ # specified by <MOD>_PATH variable
+ #SRCS_CFG = $(addsuffix _cfg.c,$(PKG_LIST))
+ SRCS += $(SRCS_APPSTG_FILES)
+ PKG_PATHS = $(foreach PKG,$(PKG_LIST),$($(PKG)_PATH))
+ VPATH += $(PKG_PATHS)
+endif
+
+# Change the extension from C to $(OBJEXT) and also add path
+OBJ_PATHS = $(patsubst %.c, $(OBJDIR)/%.$(OBJEXT), $(SRCS))
+
+# Assemble include paths here
+INCLUDE_EXTERNAL = $(foreach INCL,$(INCLUDE_EXERNAL_INTERFACES),$($(INCL)_INCLUDE))
+INCLUDE_ALL = $(CODEGEN_INCLUDE) $(INCDIR) $(INCLUDE_EXTERNAL)
+
+# Add prefix "-I" to each of the include paths in INCLUDE_ALL
+INCLUDES = $(addprefix -I,$(INCLUDE_ALL))
+
+# Create rule to "make" all packages
+.PHONY : $(PKG_LIST)
+$(PKG_LIST) :
+ $(ECHO) \# Making $(PLATFORM):$(CORE):$(PROFILE_$(CORE)):$@...
+ $(MAKE) -C $($@_PATH)
+
+# Get libraries for all the packages
+# LIBS = $(foreach LIB,$(PKG_LIST),$(LIB).$(LIBEXT))
+define GET_COMP_DEPENDENCY_SUB_PATH
+ ifeq ($$($(1)_PLATFORM_DEPENDENCY),yes)
+ ifeq ($$($(1)_CORE_DEPENDENCY),yes)
+ $(1)_DEPSUBPATH = $(PLATFORM)/$(CORE)
+ else
+ $(1)_DEPSUBPATH = $(PLATFORM)/$(ISA)
+ endif
+ else
+ ifeq ($$($(1)_CORE_DEPENDENCY),yes)
+ $(1)_DEPSUBPATH = $(CORE)
+ else
+ $(1)_DEPSUBPATH = $(ISA)
+ endif
+ endif
+endef
+
+$(foreach LIB,$(PKG_LIST),$(eval $(call GET_COMP_DEPENDENCY_SUB_PATH,$(LIB))))
+
+ifeq ($(DEST_ROOT),)
+LIB_PATHS = $(foreach LIB,$(PKG_LIST),$($(LIB)_PATH)/lib/$($(LIB)_DEPSUBPATH)/$(PROFILE_$(CORE))/$(LIB).$(LIBEXT))
+else
+LIB_PATHS = $(foreach LIB,$(PKG_LIST),$(DEST_ROOT)/$($(LIB)_RELPATH)/lib/$($(LIB)_DEPSUBPATH)/$(PROFILE_$(CORE))/$(LIB).$(LIBEXT))
+endif
+
+# XDC Specific defines
+ifneq ($(XDC_CFG_FILE_$(CORE)),)
+ ifeq ($(PROFILE_$(CORE)),debug)
+ CFG_CFILENAMEPART_XDC =$(EXEEXT)
+ endif
+ ifeq ($(PROFILE_$(CORE)),whole_program_debug)
+ CFG_CFILENAMEPART_XDC =p$(FORMAT_EXT)$(ISA)$(ENDIAN_EXT)
+ CFG_LNKFILENAMEPART_XDC=_x
+ endif
+ CFG_CFILE_XDC =$(patsubst %.cfg,%_$(CFG_CFILENAMEPART_XDC).c,$(XDC_CFG_FILE_$(CORE)))
+ CFG_C_XDC = $(addprefix $(CONFIGURO_DIR)/package/cfg/,$(CFG_CFILE_XDC))
+ XDCLNKCMD_FILE =$(patsubst %.c, %$(CFG_LNKFILENAMEPART_XDC).xdl, $(CFG_C_XDC))
+ CFG_COBJ_XDC = $(patsubst %.c,%.$(OBJEXT),$(CFG_CFILE_XDC))
+# OBJ_PATHS += $(CFG_COBJ_XDC)
+ LNKCMD_FILE = $(CONFIGURO_DIR)/linker_mod.cmd
+ SPACE :=
+ SPACE +=
+ XDC_GREP_STRING = $(CONFIGURO_DIRNAME)
+# XDC_GREP_STRING = $(subst $(SPACE),\|,$(COMP_LIST_$(CORE)))
+# XDC_GREP_STRING += \|$(CONFIGURO_DIRNAME)
+endif
+
+# Include make rules for ISA that is built in this iteration
+# eg: rules_m3.mk
+include $(ROOTDIR)/makerules/rules_$(ISA).mk
+
+ifdef MODULE_NAME
+# Rules for module; this iteration is for a module
+
+# Clean Object and Library (archive) directories
+clean :
+ $(RM) -f $(OBJDIR)/* $(DEPDIR)/* $(LIBDIR)/*
+
+# Create dependencies list to ultimately create module archive library file
+$(CORE) : $(OBJDIR) $(DEPDIR) $(LIBDIR) $(LIBDIR)/$(MODULE_NAME).$(LIBEXT)
+
+else
+# Rules for application; this iteration is for an app
+
+# Clean Object, Binary and Configuro generated directories
+clean :
+ $(RM) -rf $(CONFIGURO_DIR)
+ $(RM) -f $(OBJDIR)/* $(DEPDIR)/*
+
+# Create dependencies list to ultimately create application executable binary
+$(CORE) : $(OBJDIR) $(BINDIR) $(DEPDIR) $(CONFIGURO_DIR) $(PKG_LIST) $(BINDIR)/$(APP_NAME)_$(CORE)_$(PROFILE_$(CORE)).$(EXEEXT)
+
+endif
+
+# Nothing beyond this point
+
diff --git a/makerules/docs/makerules_spec.doc b/makerules/docs/makerules_spec.doc
new file mode 100644 (file)
index 0000000..0988319
Binary files /dev/null and b/makerules/docs/makerules_spec.doc differ
index 0000000..0988319
Binary files /dev/null and b/makerules/docs/makerules_spec.doc differ
diff --git a/makerules/env.mk b/makerules/env.mk
--- /dev/null
+++ b/makerules/env.mk
@@ -0,0 +1,109 @@
+# File: env.mk. This file contains all the paths and other ENV variables
+
+#
+# Module paths
+#
+
+# Directory where all internal software packages are located; typically
+# those that are checked into version controlled repository. In this case all
+# the OMX components and SDK/OMX demo.
+INTERNAL_SW_ROOT = E:/EDMA/MAKEFI~1/WITHMA~1/testinghis/edma/edma3_lld_02_10_04_01
+
+# Directory where all external (imported) software packages are located; typically
+# those that are NOT checked into version controlled repository. In this case,
+# compiler tool chains, BIOS, XDC, Syslink, IPC, FC, CE, drivers, codecs, etc.
+EXTERNAL_SW_ROOT = E:/EDMA/MAKEFI~1/WITHMA~1/testinghis/edma/tools
+
+# Destination root directory.
+# - specify the directory where you want to place the object, archive/library,
+# binary and other generated files in a different location than source tree
+# - or leave it blank to place then in the same tree as the source
+#DEST_ROOT = E:/Temp/sdk5008_outfiles
+
+# Utilities directory. This is required only if the build machine is Windows.
+# - specify the installation directory of utility which supports POSIX commands
+# (eg: Cygwin installation or MSYS installation).
+UTILS_INSTALL_DIR = E:/EDMA/MAKEFI~1/WITHMA~1/testinghis/edma/tools/xdctools_3_20_02_59
+
+# Set path separator, etc based on the OS
+ifeq ($(OS),Windows_NT)
+ PATH_SEPARATOR = ;
+ UTILSPATH = $(UTILS_INSTALL_DIR)/bin/
+else
+ # else, assume it is linux
+ PATH_SEPARATOR = :
+endif
+
+# BIOS
+bios_PATH = $(EXTERNAL_SW_ROOT)/bios_6_30_02_42
+bios_INCLUDE = $(bios_PATH)/packages
+
+# XDC
+xdc_PATH = $(EXTERNAL_SW_ROOT)/xdctools_3_20_02_59
+xdc_INCLUDE = $(xdc_PATH)/packages
+
+# EDMA3 LLD
+edma3_lld_PATH = $(INTERNAL_SW_ROOT)
+include $(edma3_lld_PATH)/packages/component.mk
+
+#
+# Tools paths
+#
+# Cortex-M3
+
+CODEGEN_PATH_M3 = $(EXTERNAL_SW_ROOT)/TMS470~1.3
+
+# Cortex-A8
+CODEGEN_PATH_A8 = $(EXTERNAL_SW_ROOT)/CodeSourcery/2009q1-203
+
+# DSP - Since same toolchain does not support COFF and ELF, there are two entries
+# This would go away when one version supports both formats
+CODEGEN_PATH_DSP = $(EXTERNAL_SW_ROOT)/C6000C~1.0
+CODEGEN_PATH_DSPELF = $(EXTERNAL_SW_ROOT)/C6000C~1.0A1
+
+
+# Commands commonly used within the make files
+
+RM = $(UTILSPATH)rm
+RMDIR = $(UTILSPATH)rm -rf
+MKDIR = $(UTILSPATH)mkdir
+ECHO = @$(UTILSPATH)echo
+# MAKE = $(UTILSPATH)make
+EGREP = $(UTILSPATH)egrep
+CP = $(UTILSPATH)cp
+
+# This is to avoid using full blown cygwin - chmod is really needed only linux
+ifeq ($(OS),Windows_NT)
+CHMOD = @echo
+else
+CHMOD = $(UTILSPATH)chmod
+endif
+
+#
+# XDC specific ENV variables
+#
+
+# XDC Config.bld file (required for configuro) ; Derives from top-level omx_PATH
+CONFIG_BLD_XDC_c674 = $(edma3_lld_PATH)/packages/_config.bld
+CONFIG_BLD_XDC_c64p = $(edma3_lld_PATH)/packages/_config.bld
+
+XDCPATH = $(bios_PATH)/packages;$(xdc_PATH)/packages;$(edma3_lld_PATH)/packages;
+export XDCPATH
+
+XDCROOT = $(xdc_PATH)
+XDCTOOLS = $(xdc_PATH)
+export XDCROOT
+export XDCTOOLS
+
+TMS470_CGTOOLS = $(CODEGEN_PATH_M3)
+CGTOOLS = $(CODEGEN_PATH_DSP)
+CGTOOLS_ELF = $(CODEGEN_PATH_DSPELF)
+export TMS470CGTOOLPATH
+
+CODESOURCERYCGTOOLS = $(CODEGEN_PATH_A8)
+export CODESOURCERYCGTOOLS
+
+PATH += $(PATH_SEPARATOR)$(xdc_PATH)$(PATH_SEPARATOR)$(CODEGEN_PATH_M3)/bin
+export PATH
+
+# Nothing beyond this point
diff --git a/makerules/platform.mk b/makerules/platform.mk
--- /dev/null
+++ b/makerules/platform.mk
@@ -0,0 +1,232 @@
+# Filename: platforms.mk
+#
+# Platforms make file - Platform/SoC/targets are defined/derived in this file
+#
+# This file needs to change when:
+# 1. a new platform/SoC is added, which also might have its own cores/ISAs
+#
+
+#
+# Derive SOC from PLATFORM
+#
+
+# ti816x (Netra) catalog EVM
+ifeq ($(PLATFORM),ti816x-evm)
+ SOC = ti816x
+ ifeq ($(CORE),c6xdsp)
+ PLATFORM_XDC = "ti.platforms.evmDM8168"
+ endif
+endif
+
+# ti816x (Netra) Simulator
+ifeq ($(PLATFORM),ti816x-sim)
+ SOC = ti816x
+ ifeq ($(CORE),c6xdsp)
+ PLATFORM_XDC = "ti.platforms.simDM8168"
+ endif
+endif
+
+# ti814x (Centaurus) Catalog EVM
+ifeq ($(PLATFORM),ti814x-evm)
+ SOC = ti814x
+ ifeq ($(CORE),c6xdsp)
+ PLATFORM_XDC = "ti.platforms.evmDM8148"
+ endif
+endif
+
+# c6472 (Tomahawk) EVM
+ifeq ($(PLATFORM),c6472-evm)
+ SOC = c6472
+ PLATFORM_XDC = "ti.platforms.evm6472"
+endif
+
+# tci6486 (Tomahawk) EVM
+ifeq ($(PLATFORM),tci6486-evm)
+ SOC = c6472
+ PLATFORM_XDC = "ti.platforms.evmTCI6486"
+endif
+
+# tci6498 (Nyquist) Simulator - This might change
+ifeq ($(PLATFORM),tci6498-sim)
+ SOC = c6498
+ PLATFORM_XDC = "ti.platforms.simTCI6498"
+endif
+
+# omapl138 (Freon) EVM
+ifeq ($(PLATFORM),omapl138-evm)
+ SOC = omapl138
+ PLATFORM_XDC = "ti.platforms.evmOMAPL138"
+endif
+
+# c6748 (Freon) EVM
+ifeq ($(PLATFORM),c6748-evm)
+ SOC = omapl138
+ PLATFORM_XDC = "ti.platforms.evm6748"
+endif
+
+# da830 (Primus) EVM
+ifeq ($(PLATFORM),da830-evm)
+ SOC = omapl137
+ PLATFORM_XDC = "ti.platforms.evmDA830"
+endif
+
+# Derive Target/ISA from CORE
+
+# m3vpss
+ifeq ($(CORE),m3vpss)
+ ISA = m3
+endif
+
+# m3video
+ifeq ($(CORE),m3video)
+ ISA = m3
+endif
+
+# a8host
+ifeq ($(CORE),a8host)
+ ISA = a8
+endif
+
+# c6xdsp
+ifeq ($(CORE),c6xdsp)
+ ifeq ($(SOC),ti816x)
+ ISA = c674
+ endif
+ ifeq ($(SOC),ti814x)
+ ISA = c674
+ endif
+ ifeq ($(SOC),omapl137)
+ ISA = c674
+ endif
+ ifeq ($(SOC),omapl138)
+ ISA = c674
+ endif
+ ifeq ($(SOC),c6472)
+ ISA = c64p
+ endif
+ # Note: The below is for Nyqyist Simulator - might change
+ ifeq ($(SOC),c6498)
+ ISA = c64p
+ endif
+endif
+
+
+#
+# Derive XDC/ISA specific settings
+#
+
+ifeq ($(ISA),m3)
+ ifeq ($(FORMAT),ELF)
+ TARGET_XDC = ti.targets.arm.elf.M3
+ FORMAT_EXT = e
+ else
+ TARGET_XDC = ti.targets.arm.M3
+ endif
+ ifeq ($(CORE),m3video)
+ PLATFORM_XDC = "ti.platforms.generic:DucatiPlatform_Core0"
+ else
+ PLATFORM_XDC = "ti.platforms.generic:DucatiPlatform_Core1"
+ endif
+
+ # If ENDIAN is set to "big", set ENDIAN_EXT to "e", that would be used in
+ # in the filename extension of object/library/executable files
+ ifeq ($(ENDIAN),big)
+ ENDIAN_EXT = e
+ endif
+
+ # Define the file extensions
+ OBJEXT = o$(FORMAT_EXT)$(ISA)$(ENDIAN_EXT)
+ LIBEXT = a$(FORMAT_EXT)$(ISA)$(ENDIAN_EXT)
+ EXEEXT = x$(FORMAT_EXT)$(ISA)$(ENDIAN_EXT)
+ ASMEXT = s$(FORMAT_EXT)$(ISA)$(ENDIAN_EXT)
+endif
+
+ifeq ($(ISA),c674)
+ ifeq ($(FORMAT),ELF)
+ TARGET_XDC = ti.targets.elf.C674
+ FORMAT_EXT = e
+ else
+ TARGET_XDC = ti.targets.C674
+ endif
+
+ # If ENDIAN is set to "big", set ENDIAN_EXT to "e", that would be used in
+ # in the filename extension of object/library/executable files
+ ifeq ($(ENDIAN),big)
+ ENDIAN_EXT = e
+ endif
+
+ # Define the file extensions
+ OBJEXT = o$(FORMAT_EXT)$(ISA)$(ENDIAN_EXT)
+ LIBEXT = a$(FORMAT_EXT)$(ISA)$(ENDIAN_EXT)
+ EXEEXT = x$(FORMAT_EXT)$(ISA)$(ENDIAN_EXT)
+ ASMEXT = s$(FORMAT_EXT)$(ISA)$(ENDIAN_EXT)
+endif
+
+ifeq ($(ISA),c64p)
+ ifeq ($(FORMAT),ELF)
+ ifeq ($(ENDIAN),big)
+ TARGET_XDC = ti.targets.elf.C64P_big_endian
+ else
+ TARGET_XDC = ti.targets.elf.C64P
+ endif
+ FORMAT_EXT = e
+ else
+ ifeq ($(ENDIAN),big)
+ TARGET_XDC = ti.targets.C64P_big_endian
+ else
+ TARGET_XDC = ti.targets.C64P
+ endif
+ endif
+# PLATFORM_XDC = "ti.platforms.generic:DucatiPlatform_Core0"
+
+ # If ENDIAN is set to "big", set ENDIAN_EXT to "e", that would be used in
+ # in the filename extension of object/library/executable files
+ ifeq ($(ENDIAN),big)
+ ENDIAN_EXT = e
+ endif
+
+ # Define the file extensions
+ OBJEXT = o$(FORMAT_EXT)$(ISA)$(ENDIAN_EXT)
+ LIBEXT = a$(FORMAT_EXT)$(ISA)$(ENDIAN_EXT)
+ EXEEXT = x$(FORMAT_EXT)$(ISA)$(ENDIAN_EXT)
+ ASMEXT = s$(FORMAT_EXT)$(ISA)$(ENDIAN_EXT)
+endif
+
+ifeq ($(ISA),a8)
+ TARGET_XDC = gnu.targets.arm.GCArmv5T
+ PLATFORM_XDC = "host.platforms.arm"
+
+ # Define the file extensions
+ OBJEXT = ov5T
+ LIBEXT = av5T
+ EXEEXT = xv5T
+ ASMEXT = sv5T
+endif
+
+ifeq (sim,$(findstring sim,$(PLATFORM)))
+ OMX_PLATFORM = sim
+endif
+
+ifeq (ti816x-evm,$(findstring ti816x-evm,$(PLATFORM)))
+ # Don't know why platform define for XDC is separate for A8. TO DO.
+ ifeq ($(CORE),a8host)
+ OMX_PLATFORM = evmSi
+ else
+ OMX_PLATFORM = evmSi816X
+ endif
+endif
+
+ifeq ($(CORE),m3vpss)
+ CFGARGS_XDC = \"{mode: \\\"$(IPC_MODE)\\\", coreName: \\\"VPSS-M3\\\", tiler: \\\"DucatiTilerMemMgr\\\", platformMem: \\\"$(PLATFORM_MEM)\\\", maxResolution: \\\"$(MAX_RESOLUTION)\\\", omxBuildPlatform: \\\"$(OMX_PLATFORM)\\\"}\"
+endif
+ifeq ($(CORE),m3video)
+ CFGARGS_XDC = \"{mode: \\\"$(IPC_MODE)\\\", coreName:\\\"VIDEO-M3\\\", tiler: \\\"DucatiTilerMemMgr\\\", platformMem: \\\"$(PLATFORM_MEM)\\\", maxResolution: \\\"$(MAX_RESOLUTION)\\\", omxBuildPlatform: \\\"$(OMX_PLATFORM)\\\"}\"
+endif
+ifeq ($(CORE),c6xdsp)
+ CFGARGS_XDC =
+endif
+ifeq ($(CORE),a8host)
+ CFGARGS_XDC = \"{mode: \\\"$(IPC_MODE)\\\", coreName:\\\"HOST\\\", tiler: \\\"NullTilerMemMgr\\\", platformMem: \\\"$(PLATFORM_MEM)\\\", maxResolution: \\\"$(MAX_RESOLUTION)\\\", omxBuildPlatform: \\\"$(OMX_PLATFORM)\\\"}\"
+endif
+
+# Nothing beyond this point
diff --git a/makerules/rules_a8.mk b/makerules/rules_a8.mk
--- /dev/null
+++ b/makerules/rules_a8.mk
@@ -0,0 +1,141 @@
+# Filename: rules_a8.mk
+#
+# Make rules for A8 - This file has all the common rules and defines required
+# for Cortex-A8 ISA
+#
+# This file needs to change when:
+# 1. Code generation tool chain changes (currently it uses CodeSourcery)
+# 2. Internal switches (which are normally not touched) has to change
+# 3. XDC specific switches change
+# 4. a rule common for A8 ISA has to be added or modified
+
+# Set compiler/archiver/linker commands and include paths
+CODEGEN_INCLUDE = $(CODEGEN_PATH_A8)
+CC = $(CODEGEN_PATH_A8)/bin/arm-none-linux-gnueabi-gcc
+AR = $(CODEGEN_PATH_A8)/bin/arm-none-linux-gnueabi-ar
+LNK = $(CODEGEN_PATH_A8)/bin/arm-none-linux-gnueabi-ld
+
+# Internal CFLAGS - normally doesn't change
+CFLAGS_INTERNAL = -fPIC -fno-strict-aliasing -MD -MF $(DEPFILE).P -march=armv5t -Dfar= -D_DEBUG_=1 -DMULTICHANNEL_OPT=1
+CFLAGS_DIROPTS =
+
+# XDC specific CFLAGS
+CFLAGS_XDCINTERNAL = -Dxdc_target_name__=GCArmv5T -Dxdc_target_types__=gnu/targets/arm/std.h -Dxdc_bld__profile_$(PROFILE_$(CORE)) -Dxdc_bld__vers_1_0_4_3_3
+LNKFLAGS_INTERNAL_PROFILE =
+
+# Following 'if...' block is for an application; to add a #define for each
+# component in the build. This is required to know - at compile time - which
+# components are on which core.
+ifndef MODULE_NAME
+ # Derive list of all packages from each of the components needed by the app
+ PKG_LIST_LOCAL = $(foreach COMP,$(COMP_LIST_$(CORE)),$($(COMP)_PKG_LIST))
+
+ # Defines for the app and cfg source code to know which components/packages
+ # are included in the build for the local CORE...
+ CFLAGS_APP_DEFINES = $(foreach PKG,$(PKG_LIST_LOCAL),-D_LOCAL_$(PKG)_)
+ CFLAGS_APP_DEFINES += $(foreach PKG,$(PKG_LIST_LOCAL),-D_BUILD_$(PKG)_)
+
+ ifeq ($(CORE),m3vpss)
+ PKG_LIST_REMOTE = $(foreach COMP,$(COMP_LIST_m3video),$($(COMP)_PKG_LIST))
+ CFLAGS_APP_DEFINES += -D_LOCAL_CORE_m3vpss_
+ endif
+ ifeq ($(CORE),m3video)
+ PKG_LIST_REMOTE = $(foreach COMP,$(COMP_LIST_m3vpss),$($(COMP)_PKG_LIST))
+ CFLAGS_APP_DEFINES += -D_LOCAL_CORE_m3video_
+ endif
+ ifeq ($(CORE),a8host)
+ PKG_LIST_REMOTE = $(foreach COMP,$(COMP_LIST_m3video),$($(COMP)_PKG_LIST))
+ PKG_LIST_REMOTE += $(foreach COMP,$(COMP_LIST_m3vpss),$($(COMP)_PKG_LIST))
+ CFLAGS_APP_DEFINES += -D_LOCAL_CORE_a8host_
+ endif
+
+ # Defines for the app and cfg source code to know which components/packages
+ # are included in the build for the remote CORE...
+ CFLAGS_APP_DEFINES += $(foreach PKG,$(PKG_LIST_REMOTE),-D_REMOTE_$(PKG)_)
+ CFLAGS_APP_DEFINES += $(foreach PKG,$(PKG_LIST_REMOTE),-D_BUILD_$(PKG)_)
+endif
+
+# Assemble CFLAGS from all other CFLAGS definitions
+_CFLAGS = $(CFLAGS_GLOBAL_$(CORE)) $(CFLAGS_INTERNAL) $(CFLAGS_XDCINTERNAL) $(CFLAGS_LOCAL_COMMON) $(CFLAGS_LOCAL_$(CORE)) $(CFLAGS_LOCAL_$(PLATFORM)) $(CFLAGS_LOCAL_$(SOC)) $(CFLAGS_APP_DEFINES) $(CFLAGS_COMP_COMMON) $(CFLAGS_GLOBAL_$(PLATFORM))
+
+# 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
+ $(ECHO) \# Compiling $< to $@ ...
+ $(CC) $(_CFLAGS) $(INCLUDES) $(CFLAGS_DIROPTS) -o $(OBJDIR)/$(basename $(notdir $<)).$(OBJEXT) $<
+
+# Archive flags - normally doesn't change
+ARFLAGS = cr
+
+# Archive/library file creation
+$(LIBDIR)/$(MODULE_NAME).$(LIBEXT) : $(OBJ_PATHS)
+ $(ECHO) \#
+ $(ECHO) \# Archiving $(OBJ_PATHS) into $@...
+ $(ECHO) \#
+ $(AR) $(ARFLAGS) $@ $(OBJ_PATHS)
+
+# Linker options and rules
+LNKFLAGS_INTERNAL_COMMON = -lpthread -lrt -L$(CODEGEN_PATH_A8)/arm-none-linux-gnueabi/lib
+
+# Assemble Linker flags from all other LNKFLAGS definitions
+_LNKFLAGS = $(LNKFLAGS_INTERNAL_COMMON) $(LNKFLAGS_INTERNAL_PROFILE) $(LNKFLAGS_GLOBAL_$(CORE)) $(LNKFLAGS_LOCAL_COMMON) $(LNKFLAGS_LOCAL_$(CORE))
+
+# Path of the RTS library - normally doesn't change for a given tool-chain
+RTSLIB_PATH =
+LIB_PATHS +=
+
+LNK_LIBS = $(addprefix -l,$(LIB_PATHS))
+# Linker - to create executable file
+$(BINDIR)/$(APP_NAME)_$(CORE)_$(PROFILE_$(CORE)).$(EXEEXT) : $(OBJ_PATHS) $(LIB_PATHS) $(LNKCMD_FILE) $(OBJDIR)/$(CFG_COBJ_XDC)
+ $(ECHO) \# Linking into $@
+ $(ECHO) \#
+# $(LNK) $(OBJ_PATHS) $(OBJDIR)/$(CFG_COBJ_XDC) $(LNKCMD_FILE) $(_LNKFLAGS) -o $@ -Map $@.map $(LNK_LIBS)
+ $(CC) $(OBJ_PATHS) $(OBJDIR)/$(CFG_COBJ_XDC) $(LIB_PATHS) $(LNKCMD_FILE) $(_LNKFLAGS) -o $@
+ $(ECHO) \#
+ $(ECHO) \# $@ created.
+ $(ECHO) \#
+
+# XDC specific - assemble XDC-Configuro command
+CONFIGURO_CMD = $(xdc_PATH)/xs xdc.tools.configuro --generationOnly -o $(CONFIGURO_DIR) -t $(TARGET_XDC) -p $(PLATFORM_XDC) \
+ --cfgArgs $(CFGARGS_XDC) -r $(PROFILE_$(CORE)) -b $(CONFIG_BLD_XDC_$(ISA)) $(XDC_CFG_FILE_NAME)
+_XDC_GREP_STRING = \"$(XDC_GREP_STRING)\"
+EGREP_CMD = $(EGREP) -ivw $(XDC_GREP_STRING) $(XDCLNKCMD_FILE)
+
+# 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
+#$(CFG_CFILE_XDC) : $(XDC_CFG_FILE)
+xdc_configuro : $(XDC_CFG_FILE)
+ $(ECHO) \# Invoking configuro...
+ $(ECHO) -e $(CONFIGURO_CMD) > $(DEST_ROOT)/maketemp_configuro_cmd_$(CORE).bat
+ $(CHMOD) a+x $(DEST_ROOT)/maketemp_configuro_cmd_$(CORE).bat
+ $(DEST_ROOT)/maketemp_configuro_cmd_$(CORE).bat
+# $(CP) $(XDCLNKCMD_FILE) $(LNKCMD_FILE)
+# $(ECHO) @ $(EGREP_CMD) > maketemp_egrep_cmd.bat
+# ./maketemp_egrep_cmd.bat | $(CYGWINPATH)/bin/tail -n+3 > $(LNKCMD_FILE)
+ $(EGREP_CMD) > $(LNKCMD_FILE)
+# $(EGREP) -iv "$(XDC_GREP_STRING)" $(XDCLNKCMD_FILE) > $(LNKCMD_FILE)
+ $(ECHO) \# Configuro done!
+
+$(LNKCMD_FILE) :
+# $(CP) $(XDCLNKCMD_FILE) $(LNKCMD_FILE)
+# $(ECHO) @ $(EGREP_CMD) > maketemp_egrep_cmd.bat
+# ./maketemp_egrep_cmd.bat | $(CYGWINPATH)/bin/tail -n+3 > $(LNKCMD_FILE)
+# $(EGREP_CMD) > $(LNKCMD_FILE)
+
+ifndef MODULE_NAME
+$(OBJDIR)/$(CFG_COBJ_XDC) : $(CFG_C_XDC)
+ $(ECHO) \# Compiling generated $< to $@ ...
+ $(CC) $(_CFLAGS) $(INCLUDES) $(CFLAGS_DIROPTS) -o $(OBJDIR)/$(CFG_COBJ_XDC) $(CFG_C_XDC)
+endif
+
+# Include dependency make files that were generated by $(CC)
+-include $(SRCS:%.c=$(DEPDIR)/%.P)
+
+# Nothing beyond this point
diff --git a/makerules/rules_c64p.mk b/makerules/rules_c64p.mk
--- /dev/null
+++ b/makerules/rules_c64p.mk
@@ -0,0 +1,222 @@
+# Filename: rules_c64p.mk
+#
+# Make rules for c64p - This file has all the common rules and defines required
+# for DSP c64+ ISA
+#
+# This file needs to change when:
+# 1. Code generation tool chain changes (currently it uses TI CGT)
+# 2. Internal switches (which are normally not touched) has to change
+# 3. XDC specific switches change
+# 4. a rule common for c64p ISA has to be added or modified
+
+# Set compiler/archiver/linker commands and include paths - Currently different
+# for ELF and COFF. In a future release of the toolchain, it would merge.
+ifeq ($(FORMAT),COFF)
+ CODEGEN_PATH = $(CODEGEN_PATH_DSP)
+ CODEGEN_INCLUDE = $(CODEGEN_PATH_DSP)/include
+ CC = $(CODEGEN_PATH_DSP)/bin/cl6x
+ AR = $(CODEGEN_PATH_DSP)/bin/ar6x
+ LNK = $(CODEGEN_PATH_DSP)/bin/lnk6x
+endif
+ifeq ($(FORMAT),ELF)
+ CODEGEN_PATH = $(CODEGEN_PATH_DSPELF)
+ CODEGEN_INCLUDE = $(CODEGEN_PATH_DSPELF)/include
+ CC = $(CODEGEN_PATH_DSPELF)/bin/cl6x
+ AR = $(CODEGEN_PATH_DSPELF)/bin/ar6x
+ LNK = $(CODEGEN_PATH_DSPELF)/bin/lnk6x
+endif
+
+# Derive a part of RTS Library name based on ENDIAN: little/big
+ifeq ($(ENDIAN),little)
+ #RTSLIB_ENDIAN =
+ XDCINTERNAL_DEFINES += -Dxdc_target_name__=C64P
+else
+ CSWITCH_ENDIAN = -me
+ RTSLIB_ENDIAN = e
+ XDCINTERNAL_DEFINES += -DBIG_ENDIAN_MODE -Dxdc_target_name__=C64P_big_endian
+endif
+
+# Derive compiler switch and part of RTS Library name based on FORMAT: COFF/ELF
+ifeq ($(FORMAT),COFF)
+ CSWITCH_FORMAT =
+ #RTSLIB_FORMAT =
+ XDCINTERNAL_DEFINES += -Dxdc_target_types__=ti/targets/std.h -Dxdc_bld__vers_1_0_7_0_0
+endif
+ifeq ($(FORMAT),ELF)
+ CSWITCH_FORMAT = --abi=elfabi
+ RTSLIB_FORMAT = _elf
+ XDCINTERNAL_DEFINES += -Dxdc_target_types__=ti/targets/elf/std.h -Dxdc_bld__vers_1_0_7_2_0_10271
+endif
+
+# XDC Specific defines
+ifneq ($(XDC_CFG_FILE_$(CORE)),)
+ ifeq ($(PROFILE_$(CORE)),debug)
+ CFG_CFILENAMEPART_XDC =p$(FORMAT_EXT)64p$(RTSLIB_ENDIAN)
+ endif
+ ifeq ($(PROFILE_$(CORE)),release)
+ CFG_CFILENAMEPART_XDC =p$(FORMAT_EXT)64p$(RTSLIB_ENDIAN)
+ endif
+ ifeq ($(PROFILE_$(CORE)),whole_program_debug)
+ CFG_CFILENAMEPART_XDC =p$(FORMAT_EXT)$(ISA)$(ENDIAN_EXT)
+ CFG_LNKFILENAMEPART_XDC=_x
+ endif
+ CFG_CFILE_XDC =$(patsubst %.cfg,%_$(CFG_CFILENAMEPART_XDC).c,$(notdir $(XDC_CFG_FILE_$(CORE))))
+ CFG_C_XDC = $(addprefix $(CONFIGURO_DIR)/package/cfg/,$(CFG_CFILE_XDC))
+ XDCLNKCMD_FILE =$(patsubst %.c, %$(CFG_LNKFILENAMEPART_XDC)_x.xdl, $(CFG_C_XDC))
+ CFG_COBJ_XDC = $(patsubst %.c,%.$(OBJEXT),$(CFG_CFILE_XDC))
+# OBJ_PATHS += $(CFG_COBJ_XDC)
+ LNKCMD_FILE = $(CONFIGURO_DIR)/linker_mod.cmd
+ SPACE :=
+ SPACE +=
+ XDC_GREP_STRING = $(CONFIGURO_DIRNAME)
+# XDC_GREP_STRING = $(subst $(SPACE),\|,$(COMP_LIST_$(CORE)))
+# XDC_GREP_STRING += \|$(CONFIGURO_DIRNAME)
+endif
+
+# Internal CFLAGS - normally doesn't change
+CFLAGS_INTERNAL = -c -qq -pdsw225 -mv64p $(CSWITCH_FORMAT) $(CSWITCH_ENDIAN) -mo -eo.$(OBJEXT) -ea.$(ASMEXT)
+CFLAGS_DIROPTS = -fr=$(OBJDIR) -fs=$(OBJDIR)
+
+# CFLAGS based on profile selected
+ifeq ($(PROFILE_$(CORE)), debug)
+ CFLAGS_INTERNAL += --symdebug:dwarf
+ CFLAGS_XDCINTERNAL = -Dxdc_bld__profile_debug -D_DEBUG_=1
+ ifndef MODULE_NAME
+ CFLAGS_XDCINTERNAL += -Dxdc_cfg__header__='$(CONFIGURO_DIR)/package/cfg/VpsAppMain_xem3.h'
+ endif
+ LNKFLAGS_INTERNAL_PROFILE =
+endif
+ifeq ($(PROFILE_$(CORE)), release)
+ CFLAGS_INTERNAL += -O2
+ CFLAGS_XDCINTERNAL = -Dxdc_bld__profile_release -DGENERIC
+ ifndef MODULE_NAME
+ CFLAGS_XDCINTERNAL += -Dxdc_cfg__header__='$(CONFIGURO_DIR)/package/cfg/VpsAppMain_pem3.h'
+ endif
+ LNKFLAGS_INTERNAL_PROFILE = -o2
+# LNKFLAGS_INTERNAL_PROFILE =
+endif
+CFLAGS_XDCINTERNAL += $(XDCINTERNAL_DEFINES)
+
+# Following 'if...' block is for an application; to add a #define for each
+# component in the build. This is required to know - at compile time - which
+# components are on which core.
+ifndef MODULE_NAME
+ # Derive list of all packages from each of the components needed by the app
+ PKG_LIST_M3_LOCAL = $(foreach COMP,$(COMP_LIST_$(CORE)),$($(COMP)_PKG_LIST))
+
+ # Defines for the app and cfg source code to know which components/packages
+ # are included in the build for the local CORE...
+ CFLAGS_APP_DEFINES = $(foreach PKG,$(PKG_LIST_M3_LOCAL),-D_LOCAL_$(PKG)_)
+ CFLAGS_APP_DEFINES += $(foreach PKG,$(PKG_LIST_M3_LOCAL),-D_BUILD_$(PKG)_)
+
+ ifeq ($(CORE),m3vpss)
+ PKG_LIST_M3_REMOTE = $(foreach COMP,$(COMP_LIST_m3video),$($(COMP)_PKG_LIST))
+ CFLAGS_APP_DEFINES += -D_LOCAL_CORE_m3vpss_
+ endif
+ ifeq ($(CORE),m3video)
+ PKG_LIST_M3_REMOTE = $(foreach COMP,$(COMP_LIST_m3vpss),$($(COMP)_PKG_LIST))
+ CFLAGS_APP_DEFINES += -D_LOCAL_CORE_m3video_
+ endif
+ PKG_LIST_A8_REMOTE = $(foreach COMP,$(COMP_LIST_a8host),$($(COMP)_PKG_LIST))
+
+ # Defines for the app and cfg source code to know which components/packages
+ # are included in the build for the remote CORE...
+ CFLAGS_APP_DEFINES += $(foreach PKG,$(PKG_LIST_M3_REMOTE),-D_REMOTE_$(PKG)_)
+ CFLAGS_APP_DEFINES += $(foreach PKG,$(PKG_LIST_M3_REMOTE),-D_BUILD_$(PKG)_)
+ CFLAGS_APP_DEFINES += $(foreach PKG,$(PKG_LIST_A8_REMOTE),-D_REMOTE_$(PKG)_)
+ CFLAGS_APP_DEFINES += $(foreach PKG,$(PKG_LIST_A8_REMOTE),-D_BUILD_$(PKG)_)
+endif
+
+# Assemble CFLAGS from all other CFLAGS definitions
+_CFLAGS = $(CFLAGS_INTERNAL) $(CFLAGS_GLOBAL_$(CORE)) $(CFLAGS_XDCINTERNAL) $(CFLAGS_LOCAL_COMMON) $(CFLAGS_LOCAL_$(CORE)) $(CFLAGS_LOCAL_$(PLATFORM)) $(CFLAGS_LOCAL_$(SOC)) $(CFLAGS_APP_DEFINES) $(CFLAGS_COMP_COMMON) $(CFLAGS_GLOBAL_$(PLATFORM))
+
+# 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
+ $(ECHO) \# Compiling $< to $@ ...
+ $(CC) -ppd=$(DEPFILE).P $(_CFLAGS) $(INCLUDES) $(CFLAGS_DIROPTS) -fc $<
+ $(CC) $(_CFLAGS) $(INCLUDES) $(CFLAGS_DIROPTS) -fc $<
+
+# Archive flags - normally doesn't change
+ARFLAGS = rq
+
+# Archive/library file creation
+$(LIBDIR)/$(MODULE_NAME).$(LIBEXT) : $(OBJ_PATHS)
+ $(ECHO) \#
+ $(ECHO) \# Archiving $(OBJ_PATHS) into $@...
+ $(ECHO) \#
+ $(AR) $(ARFLAGS) $@ $(OBJ_PATHS)
+
+# Linker options and rules
+LNKFLAGS_INTERNAL_COMMON = --warn_sections -q -e=_c_int00 --silicon_version=64+ -c
+
+# Assemble Linker flags from all other LNKFLAGS definitions
+_LNKFLAGS = $(LNKFLAGS_INTERNAL_COMMON) $(LNKFLAGS_INTERNAL_PROFILE) $(LNKFLAGS_GLOBAL_$(CORE)) $(LNKFLAGS_LOCAL_COMMON) $(LNKFLAGS_LOCAL_$(CORE))
+
+# Path of the RTS library - normally doesn't change for a given tool-chain
+RTSLIB_PATH = $(CODEGEN_PATH)/lib/rts64plus$(RTSLIB_ENDIAN)$(RTSLIB_FORMAT).lib
+LIB_PATHS += $(RTSLIB_PATH)
+
+LNK_LIBS = $(addprefix -l,$(LIB_PATHS))
+ifeq ($(DEST_ROOT),)
+ TMPOBJDIR = .
+else
+ TMPOBJDIR = $(OBJDIR)
+endif
+# Linker - to create executable file
+$(BINDIR)/$(APP_NAME)_$(CORE)_$(PROFILE_$(CORE)).$(EXEEXT) : $(OBJ_PATHS) $(LIB_PATHS) $(LNKCMD_FILE) $(OBJDIR)/$(CFG_COBJ_XDC)
+ $(ECHO) \# Linking into $@
+ $(ECHO) \#
+ cd $(TMPOBJDIR) && $(LNK) $(_LNKFLAGS) $(OBJ_PATHS) $(OBJDIR)/$(CFG_COBJ_XDC) -l$(LNKCMD_FILE) sample_app/linker.cmd -o $@ -m $@.map $(LNK_LIBS)
+ $(ECHO) \#
+ $(ECHO) \# $@ created.
+ $(ECHO) \#
+
+# XDC specific - assemble XDC-Configuro command
+CONFIGURO_CMD = $(xdc_PATH)/xs xdc.tools.configuro --generationOnly -o $(CONFIGURO_DIR) -t $(TARGET_XDC) -p $(PLATFORM_XDC) \
+ -r whole_program -c $(CODEGEN_PATH) -b $(CONFIG_BLD_XDC_$(ISA)) $(XDC_CFG_FILE_NAME)
+_XDC_GREP_STRING = \"$(XDC_GREP_STRING)\"
+EGREP_CMD = $(EGREP) -ivw $(XDC_GREP_STRING) $(XDCLNKCMD_FILE)
+
+ifneq ($(DEST_ROOT),)
+ DEST_ROOT += /
+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
+#$(CFG_CFILE_XDC) : $(XDC_CFG_FILE)
+xdc_configuro : $(XDC_CFG_FILE)
+ $(ECHO) \# Invoking configuro...
+ $(ECHO) -e $(CONFIGURO_CMD) > $(DEST_ROOT)maketemp_configuro_cmd_$(CORE).bat
+ $(CHMOD) a+x $(DEST_ROOT)maketemp_configuro_cmd_$(CORE).bat
+ $(DEST_ROOT)maketemp_configuro_cmd_$(CORE).bat
+ $(CP) $(XDCLNKCMD_FILE) $(LNKCMD_FILE)
+# $(ECHO) @ $(EGREP_CMD) > maketemp_egrep_cmd.bat
+# ./maketemp_egrep_cmd.bat | $(CYGWINPATH)/bin/tail -n+3 > $(LNKCMD_FILE)
+# $(EGREP_CMD) > $(LNKCMD_FILE)
+# $(EGREP) -iv "$(XDC_GREP_STRING)" $(XDCLNKCMD_FILE) > $(LNKCMD_FILE)
+ $(ECHO) \# Configuro done!
+
+$(LNKCMD_FILE) :
+# $(CP) $(XDCLNKCMD_FILE) $(LNKCMD_FILE)
+# $(ECHO) @ $(EGREP_CMD) > maketemp_egrep_cmd.bat
+# ./maketemp_egrep_cmd.bat | $(CYGWINPATH)/bin/tail -n+3 > $(LNKCMD_FILE)
+# $(EGREP_CMD) > $(LNKCMD_FILE)
+
+ifndef MODULE_NAME
+$(OBJDIR)/$(CFG_COBJ_XDC) : $(CFG_C_XDC)
+ $(ECHO) \# Compiling generated $< to $@ ...
+ $(CC) -ppd=$(DEPFILE).P $(_CFLAGS) $(INCLUDES) $(CFLAGS_DIROPTS) -fc $(CFG_C_XDC)
+ $(CC) $(_CFLAGS) $(INCLUDES) $(CFLAGS_DIROPTS) -fc $(CFG_C_XDC)
+endif
+
+# Include dependency make files that were generated by $(CC)
+-include $(SRCS:%.c=$(DEPDIR)/%.P)
+
+# Nothing beyond this point
diff --git a/makerules/rules_c674.mk b/makerules/rules_c674.mk
--- /dev/null
+++ b/makerules/rules_c674.mk
@@ -0,0 +1,222 @@
+# Filename: rules_c674.mk
+#
+# Make rules for c674 - This file has all the common rules and defines required
+# for DSP - c674 ISA
+#
+# This file needs to change when:
+# 1. Code generation tool chain changes (currently it uses TI CGT)
+# 2. Internal switches (which are normally not touched) has to change
+# 3. XDC specific switches change
+# 4. a rule common for c674 ISA has to be added or modified
+
+# Set compiler/archiver/linker commands and include paths - Currently different
+# for ELF and COFF. In a future release of the toolchain, it would merge.
+ifeq ($(FORMAT),COFF)
+ CODEGEN_PATH = $(CODEGEN_PATH_DSP)
+ CODEGEN_INCLUDE = $(CODEGEN_PATH_DSP)/include
+ CC = $(CODEGEN_PATH_DSP)/bin/cl6x
+ AR = $(CODEGEN_PATH_DSP)/bin/ar6x
+ LNK = $(CODEGEN_PATH_DSP)/bin/lnk6x
+endif
+ifeq ($(FORMAT),ELF)
+ CODEGEN_PATH = $(CODEGEN_PATH_DSPELF)
+ CODEGEN_INCLUDE = $(CODEGEN_PATH_DSPELF)/include
+ CC = $(CODEGEN_PATH_DSPELF)/bin/cl6x
+ AR = $(CODEGEN_PATH_DSPELF)/bin/ar6x
+ LNK = $(CODEGEN_PATH_DSPELF)/bin/lnk6x
+endif
+
+
+# Derive a part of RTS Library name based on ENDIAN: little/big
+ifeq ($(ENDIAN),little)
+ #RTSLIB_ENDIAN =
+else
+ RTSLIB_ENDIAN = e
+endif
+
+# Derive compiler switch and part of RTS Library name based on FORMAT: COFF/ELF
+ifeq ($(FORMAT),COFF)
+ CSWITCH_FORMAT =
+ #RTSLIB_FORMAT =
+ XDCINTERNAL_DEFINES = -Dxdc_target_types__=ti/targets/std.h -Dxdc_bld__vers_1_0_7_0_0
+endif
+ifeq ($(FORMAT),ELF)
+ CSWITCH_FORMAT = --abi=elfabi
+ RTSLIB_FORMAT = _elf
+ XDCINTERNAL_DEFINES = -Dxdc_target_types__=ti/targets/elf/std.h -Dxdc_bld__vers_1_0_7_2_0_10271
+endif
+
+# XDC Specific defines
+ifneq ($(XDC_CFG_FILE_$(CORE)),)
+ ifeq ($(PROFILE_$(CORE)),debug)
+ CFG_CFILENAMEPART_XDC =p$(FORMAT_EXT)674
+ endif
+ ifeq ($(PROFILE_$(CORE)),release)
+ CFG_CFILENAMEPART_XDC =p$(FORMAT_EXT)674
+ endif
+ ifeq ($(PROFILE_$(CORE)),whole_program_debug)
+ CFG_CFILENAMEPART_XDC =p$(FORMAT_EXT)$(ISA)$(ENDIAN_EXT)
+ CFG_LNKFILENAMEPART_XDC=_x
+ endif
+ CFG_CFILE_XDC =$(patsubst %.cfg,%_$(CFG_CFILENAMEPART_XDC).c,$(notdir $(XDC_CFG_FILE_$(CORE))))
+ CFG_C_XDC = $(addprefix $(CONFIGURO_DIR)/package/cfg/,$(CFG_CFILE_XDC))
+ XDCLNKCMD_FILE =$(patsubst %.c, %$(CFG_LNKFILENAMEPART_XDC)_x.xdl, $(CFG_C_XDC))
+ CFG_COBJ_XDC = $(patsubst %.c,%.$(OBJEXT),$(CFG_CFILE_XDC))
+# OBJ_PATHS += $(CFG_COBJ_XDC)
+ LNKCMD_FILE = $(CONFIGURO_DIR)/linker_mod.cmd
+ SPACE :=
+ SPACE +=
+ XDC_GREP_STRING = $(CONFIGURO_DIRNAME)
+# XDC_GREP_STRING = $(subst $(SPACE),\|,$(COMP_LIST_$(CORE)))
+# XDC_GREP_STRING += \|$(CONFIGURO_DIRNAME)
+endif
+
+# Internal CFLAGS - normally doesn't change
+CFLAGS_INTERNAL = -c -qq -pdsw225 -mv6740 $(CSWITCH_FORMAT) -mo -eo.$(OBJEXT) -ea.$(ASMEXT)
+CFLAGS_DIROPTS = -fr=$(OBJDIR) -fs=$(OBJDIR)
+
+# CFLAGS based on profile selected
+ifeq ($(PROFILE_$(CORE)), debug)
+ CFLAGS_INTERNAL += --symdebug:dwarf
+ CFLAGS_XDCINTERNAL = -Dxdc_target_name__=C674 -Dxdc_bld__profile_debug -D_DEBUG_=1
+ ifndef MODULE_NAME
+ CFLAGS_XDCINTERNAL += -Dxdc_cfg__header__='$(CONFIGURO_DIR)/package/cfg/VpsAppMain_xem3.h'
+ endif
+ LNKFLAGS_INTERNAL_PROFILE =
+endif
+ifeq ($(PROFILE_$(CORE)), release)
+ CFLAGS_INTERNAL += -O2
+ CFLAGS_XDCINTERNAL = -Dxdc_target_name__=C674 -Dxdc_bld__profile_release -DGENERIC
+ ifndef MODULE_NAME
+ CFLAGS_XDCINTERNAL += -Dxdc_cfg__header__='$(CONFIGURO_DIR)/package/cfg/VpsAppMain_pem3.h'
+ endif
+ LNKFLAGS_INTERNAL_PROFILE = -o2
+# LNKFLAGS_INTERNAL_PROFILE =
+endif
+CFLAGS_XDCINTERNAL += $(XDCINTERNAL_DEFINES)
+
+# Following 'if...' block is for an application; to add a #define for each
+# component in the build. This is required to know - at compile time - which
+# components are on which core.
+ifndef MODULE_NAME
+ # Derive list of all packages from each of the components needed by the app
+ PKG_LIST_M3_LOCAL = $(foreach COMP,$(COMP_LIST_$(CORE)),$($(COMP)_PKG_LIST))
+
+ # Defines for the app and cfg source code to know which components/packages
+ # are included in the build for the local CORE...
+ CFLAGS_APP_DEFINES = $(foreach PKG,$(PKG_LIST_M3_LOCAL),-D_LOCAL_$(PKG)_)
+ CFLAGS_APP_DEFINES += $(foreach PKG,$(PKG_LIST_M3_LOCAL),-D_BUILD_$(PKG)_)
+
+ ifeq ($(CORE),m3vpss)
+ PKG_LIST_M3_REMOTE = $(foreach COMP,$(COMP_LIST_m3video),$($(COMP)_PKG_LIST))
+ CFLAGS_APP_DEFINES += -D_LOCAL_CORE_m3vpss_
+ endif
+ ifeq ($(CORE),m3video)
+ PKG_LIST_M3_REMOTE = $(foreach COMP,$(COMP_LIST_m3vpss),$($(COMP)_PKG_LIST))
+ CFLAGS_APP_DEFINES += -D_LOCAL_CORE_m3video_
+ endif
+ PKG_LIST_A8_REMOTE = $(foreach COMP,$(COMP_LIST_a8host),$($(COMP)_PKG_LIST))
+
+ # Defines for the app and cfg source code to know which components/packages
+ # are included in the build for the remote CORE...
+ CFLAGS_APP_DEFINES += $(foreach PKG,$(PKG_LIST_M3_REMOTE),-D_REMOTE_$(PKG)_)
+ CFLAGS_APP_DEFINES += $(foreach PKG,$(PKG_LIST_M3_REMOTE),-D_BUILD_$(PKG)_)
+ CFLAGS_APP_DEFINES += $(foreach PKG,$(PKG_LIST_A8_REMOTE),-D_REMOTE_$(PKG)_)
+ CFLAGS_APP_DEFINES += $(foreach PKG,$(PKG_LIST_A8_REMOTE),-D_BUILD_$(PKG)_)
+endif
+
+# Assemble CFLAGS from all other CFLAGS definitions
+_CFLAGS = $(CFLAGS_INTERNAL) $(CFLAGS_GLOBAL_$(CORE)) $(CFLAGS_XDCINTERNAL) $(CFLAGS_LOCAL_COMMON) $(CFLAGS_LOCAL_$(CORE)) $(CFLAGS_LOCAL_$(PLATFORM)) $(CFLAGS_LOCAL_$(SOC)) $(CFLAGS_APP_DEFINES) $(CFLAGS_COMP_COMMON) $(CFLAGS_GLOBAL_$(PLATFORM))
+
+# 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
+ $(ECHO) \# Compiling $< to $@ ...
+ $(CC) -ppd=$(DEPFILE).P $(_CFLAGS) $(INCLUDES) $(CFLAGS_DIROPTS) -fc $<
+ $(CC) $(_CFLAGS) $(INCLUDES) $(CFLAGS_DIROPTS) -fc $<
+
+# Archive flags - normally doesn't change
+ARFLAGS = rq
+
+# Archive/library file creation
+$(LIBDIR)/$(MODULE_NAME).$(LIBEXT) : $(OBJ_PATHS)
+ $(ECHO) \#
+ $(ECHO) \# Archiving $(OBJ_PATHS) into $@...
+ $(ECHO) \#
+ $(AR) $(ARFLAGS) $@ $(OBJ_PATHS)
+
+# Linker options and rules
+LNKFLAGS_INTERNAL_COMMON = --warn_sections -q -e=_c_int00 --silicon_version=6740 -c
+
+# Assemble Linker flags from all other LNKFLAGS definitions
+_LNKFLAGS = $(LNKFLAGS_INTERNAL_COMMON) $(LNKFLAGS_INTERNAL_PROFILE) $(LNKFLAGS_GLOBAL_$(CORE)) $(LNKFLAGS_LOCAL_COMMON) $(LNKFLAGS_LOCAL_$(CORE))
+
+# Path of the RTS library - normally doesn't change for a given tool-chain
+RTSLIB_PATH = $(CODEGEN_PATH)/lib/rts6740$(RTSLIB_ENDIAN)$(RTSLIB_FORMAT).lib
+LIB_PATHS += $(RTSLIB_PATH)
+
+LNK_LIBS = $(addprefix -l,$(LIB_PATHS))
+ifeq ($(DEST_ROOT),)
+ TMPOBJDIR = .
+else
+ TMPOBJDIR = $(OBJDIR)
+endif
+# Linker - to create executable file
+$(BINDIR)/$(APP_NAME)_$(CORE)_$(PROFILE_$(CORE)).$(EXEEXT) : $(OBJ_PATHS) $(LIB_PATHS) $(LNKCMD_FILE) $(OBJDIR)/$(CFG_COBJ_XDC)
+ $(ECHO) \# Linking into $@
+ $(ECHO) \#
+ cd $(TMPOBJDIR) && $(LNK) $(_LNKFLAGS) $(OBJ_PATHS) $(OBJDIR)/$(CFG_COBJ_XDC) -l$(LNKCMD_FILE) sample_app/linker.cmd -o $@ -m $@.map $(LNK_LIBS)
+ $(ECHO) \#
+ $(ECHO) \# $@ created.
+ $(ECHO) \#
+
+# XDC specific - assemble XDC-Configuro command
+CONFIGURO_CMD = $(xdc_PATH)/xs xdc.tools.configuro --generationOnly -o $(CONFIGURO_DIR) -t $(TARGET_XDC) -p $(PLATFORM_XDC) \
+ -r whole_program -c $(CODEGEN_PATH) -b $(CONFIG_BLD_XDC_$(ISA)) $(XDC_CFG_FILE_NAME)
+#CONFIGURO_CMD = $(xdc_PATH)/xs xdc.tools.configuro --generationOnly -o $(CONFIGURO_DIR) -t $(TARGET_XDC) -p $(PLATFORM_XDC) \
+# -r whole_program $(XDC_CFG_FILE_NAME)
+_XDC_GREP_STRING = \"$(XDC_GREP_STRING)\"
+EGREP_CMD = $(EGREP) -ivw $(XDC_GREP_STRING) $(XDCLNKCMD_FILE)
+
+ifneq ($(DEST_ROOT),)
+ DEST_ROOT += /
+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
+#$(CFG_CFILE_XDC) : $(XDC_CFG_FILE)
+xdc_configuro : $(XDC_CFG_FILE)
+ $(ECHO) \# Invoking configuro...
+ $(ECHO) -e $(CONFIGURO_CMD) > $(DEST_ROOT)maketemp_configuro_cmd_$(CORE).bat
+ $(CHMOD) a+x $(DEST_ROOT)maketemp_configuro_cmd_$(CORE).bat
+ $(DEST_ROOT)maketemp_configuro_cmd_$(CORE).bat
+ $(CP) $(XDCLNKCMD_FILE) $(LNKCMD_FILE)
+# $(ECHO) @ $(EGREP_CMD) > maketemp_egrep_cmd.bat
+# ./maketemp_egrep_cmd.bat | $(CYGWINPATH)/bin/tail -n+3 > $(LNKCMD_FILE)
+# $(EGREP_CMD) > $(LNKCMD_FILE)
+# $(EGREP) -iv "$(XDC_GREP_STRING)" $(XDCLNKCMD_FILE) > $(LNKCMD_FILE)
+ $(ECHO) \# Configuro done!
+
+$(LNKCMD_FILE) :
+# $(CP) $(XDCLNKCMD_FILE) $(LNKCMD_FILE)
+# $(ECHO) @ $(EGREP_CMD) > maketemp_egrep_cmd.bat
+# ./maketemp_egrep_cmd.bat | $(CYGWINPATH)/bin/tail -n+3 > $(LNKCMD_FILE)
+# $(EGREP_CMD) > $(LNKCMD_FILE)
+
+ifndef MODULE_NAME
+$(OBJDIR)/$(CFG_COBJ_XDC) : $(CFG_C_XDC)
+ $(ECHO) \# Compiling generated $< to $@ ...
+ $(CC) -ppd=$(DEPFILE).P $(_CFLAGS) $(INCLUDES) $(CFLAGS_DIROPTS) -fc $(CFG_C_XDC)
+ $(CC) $(_CFLAGS) $(INCLUDES) $(CFLAGS_DIROPTS) -fc $(CFG_C_XDC)
+endif
+
+# Include dependency make files that were generated by $(CC)
+-include $(SRCS:%.c=$(DEPDIR)/%.P)
+
+# Nothing beyond this point
diff --git a/makerules/rules_m3.mk b/makerules/rules_m3.mk
--- /dev/null
+++ b/makerules/rules_m3.mk
@@ -0,0 +1,170 @@
+# Filename: rules_m3.mk
+#
+# Make rules for M3 - This file has all the common rules and defines required
+# for Cortex-M3 ISA
+#
+# This file needs to change when:
+# 1. Code generation tool chain changes (currently it uses TMS470)
+# 2. Internal switches (which are normally not touched) has to change
+# 3. XDC specific switches change
+# 4. a rule common for M3 ISA has to be added or modified
+
+# Set compiler/archiver/linker commands and include paths
+CODEGEN_INCLUDE = $(CODEGEN_PATH_M3)/include
+CC = $(CODEGEN_PATH_M3)/bin/cl470
+AR = $(CODEGEN_PATH_M3)/bin/ar470
+LNK = $(CODEGEN_PATH_M3)/bin/lnk470
+
+# 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
+
+# Internal CFLAGS - normally doesn't change
+CFLAGS_INTERNAL = -c -qq -pdsw225 --endian=$(ENDIAN) -mv7M3 --abi=$(CSWITCH_FORMAT) -eo.$(OBJEXT) -ea.$(ASMEXT) --symdebug:dwarf
+CFLAGS_DIROPTS = -fr=$(OBJDIR) -fs=$(OBJDIR)
+
+# CFLAGS based on profile selected
+ifeq ($(PROFILE_$(CORE)), debug)
+ CFLAGS_XDCINTERNAL = -Dxdc_target_name__=M3 -Dxdc_target_types__=ti/targets/arm/elf/std.h -Dxdc_bld__profile_debug -Dxdc_bld__vers_1_0_4_6_1 -D_DEBUG_=1
+ ifndef MODULE_NAME
+ CFLAGS_XDCINTERNAL += -Dxdc_cfg__header__='$(CONFIGURO_DIR)/package/cfg/VpsAppMain_xem3.h'
+ endif
+ LNKFLAGS_INTERNAL_PROFILE =
+endif
+ifeq ($(PROFILE_$(CORE)), whole_program_debug)
+ CFLAGS_XDCINTERNAL = -Dxdc_target_name__=M3 -Dxdc_target_types__=ti/targets/arm/elf/std.h -Dxdc_bld__profile_whole_program_debug -Dxdc_bld__vers_1_0_4_6_1 -ms -oe
+ ifndef MODULE_NAME
+ CFLAGS_XDCINTERNAL += -Dxdc_cfg__header__='$(CONFIGURO_DIR)/package/cfg/VpsAppMain_pem3.h'
+ endif
+ LNKFLAGS_INTERNAL_PROFILE = --opt='--endian=$(ENDIAN) -mv7M3 --abi=$(CSWITCH_FORMAT) -qq -pdsw225 $(CFLAGS_GLOBAL_$(CORE)) -oe --symdebug:dwarf -ms -op2 -O3 -k -os --optimize_with_debug --inline_recursion_limit=20' --strict_compatibility=on
+# LNKFLAGS_INTERNAL_PROFILE =
+endif
+
+# Following 'if...' block is for an application; to add a #define for each
+# component in the build. This is required to know - at compile time - which
+# components are on which core.
+ifndef MODULE_NAME
+ # Derive list of all packages from each of the components needed by the app
+ PKG_LIST_M3_LOCAL = $(foreach COMP,$(COMP_LIST_$(CORE)),$($(COMP)_PKG_LIST))
+
+ # Defines for the app and cfg source code to know which components/packages
+ # are included in the build for the local CORE...
+ CFLAGS_APP_DEFINES = $(foreach PKG,$(PKG_LIST_M3_LOCAL),-D_LOCAL_$(PKG)_)
+ CFLAGS_APP_DEFINES += $(foreach PKG,$(PKG_LIST_M3_LOCAL),-D_BUILD_$(PKG)_)
+
+ ifeq ($(CORE),m3vpss)
+ PKG_LIST_M3_REMOTE = $(foreach COMP,$(COMP_LIST_m3video),$($(COMP)_PKG_LIST))
+ CFLAGS_APP_DEFINES += -D_LOCAL_CORE_m3vpss_
+ endif
+ ifeq ($(CORE),m3video)
+ PKG_LIST_M3_REMOTE = $(foreach COMP,$(COMP_LIST_m3vpss),$($(COMP)_PKG_LIST))
+ CFLAGS_APP_DEFINES += -D_LOCAL_CORE_m3video_
+ endif
+ PKG_LIST_A8_REMOTE = $(foreach COMP,$(COMP_LIST_a8host),$($(COMP)_PKG_LIST))
+
+ # Defines for the app and cfg source code to know which components/packages
+ # are included in the build for the remote CORE...
+ CFLAGS_APP_DEFINES += $(foreach PKG,$(PKG_LIST_M3_REMOTE),-D_REMOTE_$(PKG)_)
+ CFLAGS_APP_DEFINES += $(foreach PKG,$(PKG_LIST_M3_REMOTE),-D_BUILD_$(PKG)_)
+ CFLAGS_APP_DEFINES += $(foreach PKG,$(PKG_LIST_A8_REMOTE),-D_REMOTE_$(PKG)_)
+ CFLAGS_APP_DEFINES += $(foreach PKG,$(PKG_LIST_A8_REMOTE),-D_BUILD_$(PKG)_)
+endif
+
+# Assemble CFLAGS from all other CFLAGS definitions
+_CFLAGS = $(CFLAGS_INTERNAL) $(CFLAGS_GLOBAL_$(CORE)) $(CFLAGS_XDCINTERNAL) $(CFLAGS_LOCAL_COMMON) $(CFLAGS_LOCAL_$(CORE)) $(CFLAGS_LOCAL_$(PLATFORM)) $(CFLAGS_LOCAL_$(SOC)) $(CFLAGS_APP_DEFINES) $(CFLAGS_COMP_COMMON) $(CFLAGS_GLOBAL_$(PLATFORM))
+
+# 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
+ $(ECHO) \# Compiling $< to $@ ...
+ $(CC) -ppd=$(DEPFILE).P $(_CFLAGS) $(INCLUDES) $(CFLAGS_DIROPTS) -fc $<
+ $(CC) $(_CFLAGS) $(INCLUDES) $(CFLAGS_DIROPTS) -fc $<
+
+# Archive flags - normally doesn't change
+ARFLAGS = rq
+
+# Archive/library file creation
+$(LIBDIR)/$(MODULE_NAME).$(LIBEXT) : $(OBJ_PATHS)
+ $(ECHO) \#
+ $(ECHO) \# Archiving $(OBJ_PATHS) into $@...
+ $(ECHO) \#
+ $(AR) $(ARFLAGS) $@ $(OBJ_PATHS)
+
+# Linker options and rules
+LNKFLAGS_INTERNAL_COMMON = -w -q -u _c_int00 --silicon_version=7M3 -c --dynamic
+
+# Assemble Linker flags from all other LNKFLAGS definitions
+_LNKFLAGS = $(LNKFLAGS_INTERNAL_COMMON) $(LNKFLAGS_INTERNAL_PROFILE) $(LNKFLAGS_GLOBAL_$(CORE)) $(LNKFLAGS_LOCAL_COMMON) $(LNKFLAGS_LOCAL_$(CORE))
+
+# Path of the RTS library - normally doesn't change for a given tool-chain
+RTSLIB_PATH = $(CODEGEN_PATH_M3)/lib/rtsv7M3_T_$(RTSLIB_ENDIAN)_$(RTSLIB_FORMAT).lib
+LIB_PATHS += $(RTSLIB_PATH)
+
+LNK_LIBS = $(addprefix -l,$(LIB_PATHS))
+# Linker - to create executable file
+$(BINDIR)/$(APP_NAME)_$(CORE)_$(PROFILE_$(CORE)).$(EXEEXT) : $(OBJ_PATHS) $(LIB_PATHS) $(LNKCMD_FILE) $(OBJDIR)/$(CFG_COBJ_XDC)
+ $(ECHO) \# Linking into $@
+ $(ECHO) \#
+ cd $(OBJDIR) && $(LNK) $(_LNKFLAGS) $(OBJ_PATHS) $(OBJDIR)/$(CFG_COBJ_XDC) $(LNKCMD_FILE) -o $@ -m $@.map $(LNK_LIBS)
+ $(ECHO) \#
+ $(ECHO) \# $@ created.
+ $(ECHO) \#
+
+# XDC specific - assemble XDC-Configuro command
+CONFIGURO_CMD = $(xdc_PATH)/xs xdc.tools.configuro --generationOnly -o $(CONFIGURO_DIR) -t $(TARGET_XDC) -p $(PLATFORM_XDC) \
+ --cfgArgs $(CFGARGS_XDC) -r $(PROFILE_$(CORE)) -b $(CONFIG_BLD_XDC_$(ISA)) $(XDC_CFG_FILE_NAME)
+_XDC_GREP_STRING = \"$(XDC_GREP_STRING)\"
+EGREP_CMD = $(EGREP) -ivw $(XDC_GREP_STRING) $(XDCLNKCMD_FILE)
+
+# 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
+#$(CFG_CFILE_XDC) : $(XDC_CFG_FILE)
+xdc_configuro : $(XDC_CFG_FILE)
+ $(ECHO) \# Invoking configuro...
+ $(ECHO) -e $(CONFIGURO_CMD) > $(DEST_ROOT)/maketemp_configuro_cmd_$(CORE).bat
+ $(CHMOD) a+x $(DEST_ROOT)/maketemp_configuro_cmd_$(CORE).bat
+ $(DEST_ROOT)/maketemp_configuro_cmd_$(CORE).bat
+# $(CP) $(XDCLNKCMD_FILE) $(LNKCMD_FILE)
+# $(ECHO) @ $(EGREP_CMD) > maketemp_egrep_cmd.bat
+# ./maketemp_egrep_cmd.bat | $(CYGWINPATH)/bin/tail -n+3 > $(LNKCMD_FILE)
+ $(EGREP_CMD) > $(LNKCMD_FILE)
+# $(EGREP) -iv "$(XDC_GREP_STRING)" $(XDCLNKCMD_FILE) > $(LNKCMD_FILE)
+ $(ECHO) \# Configuro done!
+
+$(LNKCMD_FILE) :
+# $(CP) $(XDCLNKCMD_FILE) $(LNKCMD_FILE)
+# $(ECHO) @ $(EGREP_CMD) > maketemp_egrep_cmd.bat
+# ./maketemp_egrep_cmd.bat | $(CYGWINPATH)/bin/tail -n+3 > $(LNKCMD_FILE)
+# $(EGREP_CMD) > $(LNKCMD_FILE)
+
+ifndef MODULE_NAME
+$(OBJDIR)/$(CFG_COBJ_XDC) : $(CFG_C_XDC)
+ $(ECHO) \# Compiling generated $< to $@ ...
+ $(CC) -ppd=$(DEPFILE).P $(_CFLAGS) $(INCLUDES) $(CFLAGS_DIROPTS) -fc $(CFG_C_XDC)
+ $(CC) $(_CFLAGS) $(INCLUDES) $(CFLAGS_DIROPTS) -fc $(CFG_C_XDC)
+endif
+
+# Include dependency make files that were generated by $(CC)
+-include $(SRCS:%.c=$(DEPDIR)/%.P)
+
+# Nothing beyond this point