diff --git a/src/make/c64x/makeeco.mk b/src/make/c64x/makeeco.mk
--- /dev/null
+++ b/src/make/c64x/makeeco.mk
@@ -0,0 +1,223 @@
+#*******************************************************************************
+#* FILE PURPOSE: Perform standard variable computation and targets for ECOs
+#*******************************************************************************
+#* FILE NAME: makeeco.mk
+#*
+#* DESCRIPTION: Make include file which computes some variables and defines
+#* standard targets for DSP ECOs.
+#*
+#* Input variables:
+#* CSRC : List of C Source files
+#* ASMSRC : List of assembly source files
+#* Output variables:
+#* OBJS : List of all object files
+#*
+#*
+#* (C) Copyright 1999-2001 TELOGY Networks, Inc.
+#*******************************************************************************
+
+# get definitions
+include $(IBL_ROOT)/make/$(ARCH)/makedefs.mk
+
+# If ECODIR is not defined, derive it from ECONAME
+ifndef ECODIR
+ ECODIR = $(IBL_ROOT)/$(ECONAME)
+endif
+
+# VPATH tells make how to find sources in other directories
+vpath %.$(ASMEXT) $(ECODIR)/$(CPUDIR)
+#The vpath below is needed to compile the dsp/memory folder properly
+vpath %.c $(ECODIR)/$(CPUDIR)/$(CPUTYPEDIR)
+vpath %.c $(ECODIR)/$(CPUDIR)
+vpath %.sa $(ECODIR)/$(CPUDIR)
+vpath %.s62 $(ECODIR)/$(CPUDIR)
+vpath % $(ECODIR)
+
+# Get filenames w/o paths
+
+CFILES = $(foreach file, $(CSRC), $(notdir $(file)))
+AFILES = $(foreach file, $(ASMSRC), $(notdir $(file)))
+LINAFILES = $(foreach file, $(LINASMSRC), $(notdir $(file)))
+BIOSSFILES = $(foreach file, $(BIOSASMSRC), $(notdir $(file)))
+EXCFILES = $(foreach file, $(EXCSRC), $(notdir $(file)))
+EXAFILES = $(foreach file, $(EXASMSRC), $(notdir $(file)))
+TESTCFILES = $(foreach file, $(TESTCSRC), $(notdir $(file)))
+TESTAFILES = $(foreach file, $(TESTASMSRC), $(notdir $(file)))
+TESTLINASMFILES = $(foreach file, $(TESTLINASMSRC), $(notdir $(file)))
+
+
+DFULLPATH = $(patsubst %.s62, %.$(ADEPEXT),$(BIOSSFILES) \
+ $(patsubst %.c, %.$(CDEPEXT), $(CFILES) $(EXCFILES) $(TESTCFILES)) \
+ $(patsubst %.$(ASMEXT), %.$(ADEPEXT), $(AFILES) $(EXAFILES) $(TESTAFILES) $(BIOSSFILES)) \
+ $(patsubst %.sa, %.$(LDEPEXT), $(LINAFILES) $(TESTLINASMFILES)))
+
+
+OBJS = $(COBJS) $(AOBJS)
+COBJS = $(patsubst %.c, %.$(COBJEXT), $(CFILES))
+AOBJS = $(patsubst %.s62, %.$(AOBJEXT), $(BIOSSFILES) \
+ $(patsubst %.$(ASMEXT), %.$(AOBJEXT), $(AFILES)) \
+ $(patsubst %.sa, %.$(LOBJEXT), $(LINAFILES)))
+REFTGT =
+
+DCS = $(CDCS) $(ADCS)
+CDCS = $(patsubst %.c, %.$(CDEPEXT), $(CFILES))
+ADCS = $(patsubst %.s62, %.$(CDEPEXT), $(BIOSSFILES) \
+ $(patsubst %.$(ASMEXT), %.$(CDEPEXT), $(AFILES)) \
+ $(patsubst %.sa, %.$(CDEPEXT), $(LINAFILES)))
+
+
+# extra objects (not built by builtin rules)
+EXOBJS = $(patsubst %.s62, %.$(AOBJEXT), $(BIOSSFILES) \
+ $(patsubst %.c, %.$(COBJEXT), $(EXCFILES)) \
+ $(patsubst %.$(ASMEXT), %.$(AOBJEXT), $(EXAFILES)))
+
+# extra objects (used for test code)
+TESTOBJS = $(patsubst %.s62, %.$(AOBJEXT), $(BIOSSFILES) \
+ $(patsubst %.c, %.$(COBJEXT), $(TESTCFILES)) \
+ $(patsubst %.$(ASMEXT), %.$(AOBJEXT), $(TESTAFILES)) \
+ $(patsubst %.$(LASMEXT), %.$(LOBJEXT), $(TESTLINASMFILES)))
+
+# intermediate files
+CLEAN_INTERMEDIATES = $(patsubst %.s62, %.lst, $(BIOSSFILES) \
+ $(patsubst %.c, %.asm, $(CFILES) $(EXCFILES) $(TESTCFILES)) \
+ $(patsubst %.c, %.lst, $(CFILES) $(EXCFILES) $(TESTCFILES)) \
+ $(patsubst %.$(ASMEXT), %.lst, $(AFILES) $(EXAFILES) $(TESTAFILES)) \
+ $(patsubst %.sa, %.asm, $(LINAFILES) $(TESTLINASMFILES)) \
+ $(patsubst %.sa, %.lst, $(LINAFILES) $(TESTLINASMFILES)) \
+ $(DFULLPATH))
+
+# Compute FLATFILES, if necessary
+ifndef FLATFILES
+ FLATFILES =$(patsubst %,$(ECODIR)/%,$(CSRC) $(ASMSRC) $(HDR) $(LINASMSRC) $(BIOSASMSRC) )
+endif
+
+# If FLATGGDIR isnt set, and we make flat, then we are making flat for test prg
+ifndef FLATGGDIR
+ # This has two magical effects: 1) causes FLATGGDIR to be set now, and
+ # causes recursive makefiles to set the correct FLAT directory even during
+ # recursion.
+ FLATFILES +=$(patsubst %,$(ECODIR)/%,$(TESTCSRC) $(TESTASMSRC) $(TESTHDR))
+ ifdef ECONAME
+ export FLATGGDIR = $(ECONAME)/c64x/make/flat
+ else
+ export FLATGGDIR = $(notdir $(ECODIR))/c64x/make/flat
+ endif
+endif
+
+FLATDIR =$(ROMROOT)/$(FLATGGDIR)
+
+ifneq ($(findstring $(FLAT),yes YES),)
+ FLAT_TARGET =$(REFTGT) flat
+else
+ FLAT_TARGET =$(REFTGT)
+endif
+
+.PHONY: clean flat gen_flatdir
+
+# standard targets
+clean:
+ -$(RM) $(OBJS) $(EXOBJS) $(TESTOBJS) $(CLEAN_TARGETS) $(CLEAN_INTERMEDIATES) $(REFTGT)
+ -$(RM) -r flat
+
+ifneq ($(findstring $(FLAT),yes YES),)
+flat:
+ -mkdir $(subst /,\,$(FLATDIR))
+ -$(CP) -u $(FLATFILES) $(FLATDIR)
+
+# Define command to copy targets to flat
+CPFLATCMD = $(CP) $@ $(FLATDIR)
+
+else
+
+CPFLATCMD =
+
+endif
+
+# Copy targets to delivery directory
+# The variables STDDLV and BOOTLD should be set by calling makefile
+ifneq ($(BOOTLD),none)
+ CPBOOTLD=$(CP) $(BOOTPATH)/$(BOOTLD) $(DELIVERY)/boot_$(OUTFILE).out
+ CPBOOTLD2=
+else
+ ifeq ($(GGDSP_CPU),12)
+ CPBOOTLD=$(CP) $(BOOTPATH)/boot5560_pg10_20.out $(DELIVERY)/bootpg10_20_$(OUTFILE).out
+ CPBOOTLD2=
+ else
+ CPBOOTLD=
+ CPBOOTLD2=
+ endif
+endif
+
+# how to build .c and .s files on c64x
+FNAMEDEF = -dTNFNAME=$(notdir $<)
+GGCCOMPILE = $(CC) $(CFLAGS) $(DCFLAGS) $(CDEFS) $(FNAMEDEF) $< -eo.$(COBJEXT)
+GGLCOMPILE = $(CC) $(CFLAGS) $(DCFLAGS) $(CDEFS) $(FNAMEDEF) $< -eo.$(LOBJEXT)
+GGACOMPILE = $(AS) $(AFLAGS) $(ADEFS) $< $@ -eo.$(AOBJEXT)
+GGCMAKEDEP = $(MAKEDEP) $(MAKEDEP_OPT) $(CDEPINC) -e$(COBJEXT) -o$$.$(CDEPEXT) $<
+GGLMAKEDEP = $(MAKEDEP) $(MAKEDEP_OPT) $(ADEPINC) -a -e$(AOBJEXT) -o$$.$(LDEPEXT) $<
+GGAMAKEDEP = $(MAKEDEP) $(MAKEDEP_OPT) $(ADEPINC) -a -e$(AOBJEXT) -o$$.$(ADEPEXT) $<
+GGALMAKEDEP = $(MAKEDEP) $(MAKEDEP_OPT) $(ALDEPINC) -a -e$(ALOBJEXT) -o$$.$(ALDEPEXT) $<
+
+#Two options of invoking blockexpn:
+# 1)Passing NUMCH for implicit expansion
+# 2)Explicitly giving the number of expansions in the .bex file
+GGBLOCKEXPN = $(BLOCKEXPN) $< $@
+GGBLOCKEXPNNUMCH = $(BLOCKEXPN) $< $@ $(NUMCH)
+
+%.$(COBJEXT): %.c
+ $(GGCCOMPILE)
+
+# Compilation of Linear Assembly files
+%.$(LOBJEXT): %.$(LASMEXT)
+ $(GGLCOMPILE)
+
+%.$(AOBJEXT): %.$(ASMEXT)
+ $(GGACOMPILE)
+
+# Special compilation for BIOS
+%.$(AOBJEXT): %.s62
+ $(GGACOMPILE)
+
+CDEPINC = $(subst \,/,-I$(subst ;, -I,$(C6X_C_DIR)))
+ADEPINC = $(subst \,/,-I$(subst ;, -I,$(C6X_A_DIR)))
+
+
+%.$(CDEPEXT): %.c
+ $(GGCMAKEDEP)
+
+# dependency for .sa files
+%.$(LDEPEXT): %.sa
+ $(GGLMAKEDEP)
+
+%.$(ADEPEXT): %.s
+ $(GGAMAKEDEP)
+
+%.$(ADEPEXT): %.s62
+ $(GGAMAKEDEP)
+
+# Preprocessing via blockexpn.pl
+# ggmbuf.bec and ggmheap.bec are not build specific but common.They need to use the
+# NUMCH parameter
+%.c: %.bec
+ $(GGBLOCKEXPNNUMCH)
+
+#Numch parameter not passed to linker command file / memmap as the number of expansion
+#required may be different from num channels in the build
+%.h: %.beh
+ $(GGBLOCKEXPN)
+
+%.cmd: %.becmd
+ $(GGBLOCKEXPN)
+
+# Reflection page symbol tables
+# %.oc is included so we inherit the dependancies from the .dc file
+# Set GGREFDBG=-v# on command line to debug
+%.ref: %.c %.oc $(REFPAGEDEP)
+ $(REFPAGE) $(GGREFDBG) -iC6X_C_DIR $< -s$@ $(CDEFS) -dGG_REF_PAGE -d6416 -t$(REFSYM)
+
+ifneq ($(DOMAKEDEP),no)
+# include generated dependancies.
+sinclude $(DFULLPATH)
+endif
+
+# Nothing past this point