merged from k2-rtos
authorAravind Batni <aravindbr@ti.com>
Thu, 22 Oct 2015 23:00:41 +0000 (19:00 -0400)
committerAravind Batni <aravindbr@ti.com>
Thu, 22 Oct 2015 23:00:41 +0000 (19:00 -0400)
26 files changed:
1  2 
.gitignore
Settings.xdc.xdt
build/buildlib.xs
config.bld
device/k2h/global-resource-list.c
device/k2h/policy_dsp-only.c
package.bld
package.xs
src/Module.xs
test/k2e/c66/bios/rmK2EArmv7LinuxDspClientTestProject.txt
test/k2e/c66/bios/rmK2EC66DspMtBiosTestProject.txt
test/k2h/c66/bios/rmK2HArmv7LinuxDspClientTestProject.txt
test/k2h/c66/bios/rmK2HC66BiosTestProject.txt
test/k2h/c66/bios/rmK2HC66DspMtBiosTestProject.txt
test/k2h/c66/bios/rmMemK2HC66BiosTestProject.txt
test/k2h/c66/bios/rmSharedK2HC66BiosTestProject.txt
test/k2k/c66/bios/rmK2KArmv7LinuxDspClientTestProject.txt
test/k2k/c66/bios/rmK2KC66BiosTestProject.txt
test/k2k/c66/bios/rmK2KC66DspMtBiosTestProject.txt
test/k2k/c66/bios/rmMemK2KC66BiosTestProject.txt
test/k2k/c66/bios/rmSharedK2KC66BiosTestProject.txt
test/k2l/c66/bios/rmK2LArmv7LinuxDspClientTestProject.txt
test/k2l/c66/bios/rmK2LC66BiosTestProject.txt
test/k2l/c66/bios/rmK2LC66DspMtBiosTestProject.txt
test/k2l/c66/bios/rmMemK2LC66BiosTestProject.txt
test/k2l/c66/bios/rmSharedK2LC66BiosTestProject.txt

diff --cc .gitignore
index f97d6318beb3f75c463faa40abf48c09f970cb81,f97d6318beb3f75c463faa40abf48c09f970cb81..d17d49c571afb727389ff8b02ac6dc7a12ae487b
@@@ -19,3 -19,3 +19,5 @@@ package.ma
  package/
  packages/
  install/
++test/*/*/bios/src/
++build/*/ti*.mk
index a56b44d6037aa6a766767722c6cd0a7bbff295ad,133e0c3599edb15fdc934596d6ff9f1cee31fb50..133e0c3599edb15fdc934596d6ff9f1cee31fb50
mode 100644,100755..100644
index 8bbee0e6159e4ab90b680d0e3adf369cff0fce25,97b7aa55940d623e27915adbdca23d3789ad4679..87431f54a6f5eb0736443d0284717781cc1af46f
mode 100644,100755..100755
--/******************************************************************************\r
-- * FILE PURPOSE: Build Library Utilities\r
-- ******************************************************************************\r
-- * FILE NAME: buildlib.xs\r
-- *\r
-- * DESCRIPTION: \r
-- *  This file contains common routines that are used by the various RM \r
-- *  components.\r
-- *\r
-  * Copyright (C) 2012-2013, Texas Instruments, Inc.\r
 - * Copyright (C) 2012-2015, Texas Instruments, Inc.\r
-- *****************************************************************************/\r
--\r
--/**************************************************************************\r
-- * FUNCTION NAME : listAllFiles\r
-- **************************************************************************\r
-- * DESCRIPTION   :\r
-- *  Utility function which lists all files with a specific extension \r
-- *  present in a directory and any directory inside it.\r
-- **************************************************************************/\r
--function listAllFiles(ext, dir, recurse)\r
--{     \r
--    var srcFile = [];\r
--    var d;\r
--\r
--    /* If recurse parameter is not specified we default to recursive search. */\r
--    if (recurse == null)\r
--        recurse = true;\r
--\r
--    if (dir == undefined) \r
--          d = ".";\r
--    else \r
--      d = dir;\r
--\r
--    /* Get access to the current directory. */\r
--    var file = new java.io.File(d);\r
--\r
--    /* Check if the file exists and it is a directory. */\r
--    if (file.exists() && file.isDirectory()) \r
--    {\r
--        /* Get a list of all files in the specific directory. */\r
--        var fileList = file.listFiles();\r
--        for (var i = 0; i < fileList.length; i++) \r
--        {\r
--            /* Dont add the generated directory 'package' and any of its files \r
--             * to the list here. */\r
--            if (fileList[i].getName().matches("package") == false)\r
--            {\r
--                /* Check if the detected file is a directory */\r
--                if (fileList[i].isDirectory())\r
--                {\r
--                    /* We will recurse into the subdirectory only if required to do so. */\r
--                    if (recurse == true)\r
--                    {\r
--                        /* Generate the directory Name in which we will recurse. */ \r
--                        var directoryName = d + "/" + fileList[i].getName();\r
--\r
--                        /* Get a list of all files in this directory */\r
--                        var fileListing = listAllFiles (ext, directoryName, recurse);\r
--                        if (fileListing != null)\r
--                        {\r
--                            /* Return a list of all file names in the directory. */\r
--                            for (var j = 0 ; j < fileListing.length; j++) \r
--                                srcFile[srcFile.length++] = fileListing[j];\r
--                        }\r
--                    }\r
--                }\r
--                else\r
--                {\r
--                    /* This was a file. Check if the file name matches the extension */\r
--                    if (fileList[i].getName().endsWith(ext) == true)\r
--                        srcFile[srcFile.length++] = d + "/" + fileList[i].getName();\r
--                }\r
--            }\r
--        }\r
--\r
--        return srcFile;\r
--    }\r
--    return null;\r
--}\r
--\r
--\r
--function createMake(makefile)\r
--{\r
--    /* Create the main make file */\r
--    var fileModule = xdc.module('xdc.services.io.File');\r
--    if(makefile==undefined)\r
--    {\r
--      try{\r
--          makefile = fileModule.open("makefile", "w");\r
--         } catch (ex)\r
--         {\r
--           print("makefile cannot be written to. Please check Writing Permissions.");\r
--           java.lang.System.exit(1);\r
--         }   \r
--    \r
--      Pkg.makePrologue += "\ninclude makefile\n"; \r
--         \r
--      Pkg.makeEpilogue += "\nclean::\n\t-$(RM)  makefile\n";\r
--      makefile.writeLine("#*******************************************************************************");\r
--      makefile.writeLine("#* FILE PURPOSE: Top level makefile for Creating Component Libraries");\r
--      makefile.writeLine("#*******************************************************************************");\r
--      makefile.writeLine("#* FILE NAME: makefile");\r
--      makefile.writeLine("#*");\r
--      makefile.writeLine("#* DESCRIPTION: Defines Compiler tools paths, libraries , Build Options ");\r
--      makefile.writeLine("#*");\r
--      makefile.writeLine("#*");\r
--      makefile.writeLine("#*******************************************************************************");\r
--      makefile.writeLine("#*");\r
--      makefile.writeLine("# (Mandatory) Specify where various tools are installed.");\r
--\r
--      var file = xdc.module('xdc.services.io.File');\r
--    \r
-       var xdcTargetType = java.lang.System.getenv("XDCTARGET");\r
-       var toolsBaseDir = java.lang.System.getenv("XDCCGROOT");   \r
--      \r
--      makefile.writeLine("\n# Output for prebuilt generated libraries");\r
--      makefile.writeLine("export LIBDIR ?= ./lib");\r
--      /* use sectti.exe from path */\r
--      makefile.writeLine("export SECTTI ?= sectti");\r
--\r
--      /* Create INCDIR from XDCPATH */\r
--    \r
--      /* copy the environment array from the current environment */\r
--      var env   = java.lang.System.getenv();\r
--      var getxdcpath=String(java.lang.System.getenv("XDCPATH"));\r
--      getxdcpath= getxdcpath.replace(/\\/g,"/");\r
--      var keys  = env.keySet().toArray();\r
--      var key;\r
--      var stat={};\r
--      var env_j=[];\r
--      var listxdcpath = new Array();\r
--      for (var i = 0; i < keys.length; i++) {\r
--           key = String(keys[i]);\r
--           if((key.match("INSTALL_PATH")) || (key.match("INSTALLDIR")))\r
--           {\r
--             var keyPath=String(env.get(key));\r
--             keyPath=keyPath.replace(/\\/g,"/");\r
--             var file = xdc.module('xdc.services.io.File');\r
--             keyPath=file.getDOSPath(keyPath);\r
--             if(getxdcpath.toString().match(keyPath))\r
--             {\r
--                 listxdcpath.push({keyname: key,keypath: keyPath});\r
--                 while(getxdcpath.toString().match(keyPath))\r
--                 {\r
--                   getxdcpath=getxdcpath.toString().replace(keyPath,"$("+key+")");\r
--                 }\r
--             }\r
--           }\r
--    \r
--     }\r
--       var pkgroot="..";\r
--       for (var i = Pkg.name.split('.').length; i > 1; i--) {\r
--              pkgroot+="/..";\r
--          }\r
--        \r
--      makefile.writeLine("\n# ROOT Directory");        \r
--      makefile.writeLine("export ROOTDIR := "+pkgroot);\r
--    \r
--      makefile.writeLine("\n# INCLUDE Directory");\r
-       makefile.writeLine("export INCDIR := "+getxdcpath+";$(ROOTDIR);$(C6X_GEN_INSTALL_PATH)/include");       \r
 -      makefile.writeLine("export INCDIR := "+getxdcpath+";$(ROOTDIR)");       \r
--    \r
--      makefile.writeLine("\n# Common Macros used in make");  \r
--      makefile.writeLine("\nifndef RM");     \r
--      makefile.writeLine("export RM = rm -f");\r
--      makefile.writeLine("endif");        \r
--    \r
--      makefile.writeLine("\nifndef CP");     \r
--      makefile.writeLine("export CP = cp -p");    \r
--      makefile.writeLine("endif");    \r
--        \r
--      makefile.writeLine("\nexport MKDIR = mkdir -p");\r
--    \r
--      makefile.writeLine("\nifndef RMDIR");         \r
--      makefile.writeLine("export RMDIR = rm -rf");\r
--      makefile.writeLine("endif");        \r
--    \r
--      makefile.writeLine("\nifndef SED"); \r
--      makefile.writeLine("export SED = sed");    \r
--      makefile.writeLine("endif");    \r
--    \r
--      makefile.writeLine("\nifndef MAKE"); \r
--      makefile.writeLine("export MAKE = make");    \r
--      makefile.writeLine("endif");        \r
--\r
--      makefile.writeLine("\n# PHONY Targets");                \r
--      makefile.writeLine(".PHONY: all clean cleanall ");    \r
--      \r
--      makefile.writeLine("\n# FORCE Targets");                \r
--      makefile.writeLine("FORCE: ");          \r
--      \r
--      makefile.writeLine("\n# all rule");                \r
--      makefile.writeLine("all: .executables");           \r
--      makefile.writeLine(".executables: .libraries");\r
--      makefile.writeLine(".libraries:");\r
--      \r
--      makefile.writeLine("\n# Clean Rule");          \r
--      makefile.writeLine("clean:: clean_package");                  \r
--      makefile.writeLine("# Clean Top Level Object Directory ");          \r
-       makefile.writeLine("clean_package :\n\t$(RMDIR) $(LIBDIR)/*/");      \r
 -      makefile.writeLine("clean_package:")\r
 -      makefile.writeLine("\t$(RMDIR) $(LIBDIR)/*");  \r
--      makefile.writeLine("\t$(RMDIR) package/cfg");            \r
--   }\r
--   else\r
--   {\r
--     try{\r
--          makefile = fileModule.open("makefile", "a");\r
--         } catch (ex)\r
--         {\r
--           print("makefile cannot be written to. Please check Writing Permissions.");\r
--           java.lang.System.exit(1);\r
--         }  \r
--    \r
--    }\r
--\r
-- return makefile;\r
--}\r
--\r
- function createLibMake(makelibname,targetname, objectPath)\r
 -function createLibMake(device, makelibname,targetname, objectPath)\r
--{\r
--   var tooldir;\r
 -   var cmdprefix;\r
 -   var targetDir;\r
--   var stringname=String(targetname).replace("(xdc.bld.ITarget.Module)","");\r
-    if(stringname.match("ARM11"))\r
-    {\r
-      tooldir="TI_ARM11_GEN_INSTALL_PATH"; \r
-    }\r
-    else\r
-    {\r
-      tooldir="C6X_GEN_INSTALL_PATH";\r
-    }\r
 -   \r
--   switch(stringname)\r
--   {\r
--    case String(C66LE):\r
 -      tooldir="C6X_GEN_INSTALL_PATH";\r
 -      cmdprefix="";\r
 -      targetDir="c66";\r
--      targetname=C66LE;\r
--      break;\r
--    case String(C66BE):\r
 -      tooldir="C6X_GEN_INSTALL_PATH";\r
 -      cmdprefix="";\r
 -      targetDir="c66";\r
--      targetname=C66BE;\r
--      break;\r
\r
 -    case String(A15LE):\r
 -      tooldir="TOOLCHAIN_PATH_A15"; \r
 -      cmdprefix="CROSS_TOOL_PRFX";\r
 -      targetDir="armv7";\r
 -      targetname=A15LE;\r
 -      break;\r
 -    case String(A9LE):\r
 -      tooldir="TOOLCHAIN_PATH_A9";\r
 -      cmdprefix="CROSS_TOOL_PRFX";\r
 -      targetDir="armv7";\r
 -      targetname=A9LE;\r
 -      break;\r
 -    case String(A8LE):\r
 -      tooldir="TOOLCHAIN_PATH_A8";\r
 -      cmdprefix="CROSS_TOOL_PRFX";\r
 -      targetDir="armv7";\r
 -      targetname=A8LE;\r
 -      break;\r
 -    case String(M4LE):\r
 -      tooldir="TOOLCHAIN_PATH_M4";\r
 -      cmdprefix="";\r
 -      targetDir="m4";\r
 -      targetname=M4LE;\r
 -      break;\r
 -    case String(ARM11):\r
 -      tooldir="TI_ARM11_GEN_INSTALL_PATH"; \r
 -      break;\r
--   }\r
 -\r
--    var fileModule = xdc.module('xdc.services.io.File');\r
--    try{\r
--     var dstFile = new java.io.File(makelibname);\r
--     dstFile.getParentFile().mkdirs();    \r
--     libmakefile = fileModule.open(makelibname, "w");\r
--     /* Add to Archive list */\r
--    } catch (ex)\r
--    {\r
--     print(makelibname+" cannot be written to. Please check Writing Permissions.");\r
--     java.lang.System.exit(1);\r
--    }   \r
--    libmakefile.writeLine("#*******************************************************************************");\r
--    libmakefile.writeLine("#* FILE PURPOSE: Lower level makefile for Creating Component Libraries");\r
--    libmakefile.writeLine("#*******************************************************************************");\r
--    libmakefile.writeLine("#* FILE NAME: "+makelibname);\r
--    libmakefile.writeLine("#*");\r
--    libmakefile.writeLine("#* DESCRIPTION: Defines Source Files, Compilers flags and build rules");\r
--    libmakefile.writeLine("#*");\r
--    libmakefile.writeLine("#*");\r
--    libmakefile.writeLine("#*******************************************************************************");\r
--    libmakefile.writeLine("#");\r
--    libmakefile.writeLine("");\r
--    libmakefile.writeLine("#");\r
--    libmakefile.writeLine("# Macro definitions referenced below");\r
--    libmakefile.writeLine("#");\r
--    libmakefile.writeLine("empty =");\r
--    libmakefile.writeLine("space =$(empty) $(empty)");\r
--        \r
-     if(stringname.match("ti.targets"))\r
 -    if ((targetname.name == "A15F") || (targetname.name == "A9F") || (targetname.name == "A8F"))\r
--    {\r
\r
-        var rtslibtemp = targetname.lnkOpts.suffix.toString().split("/");\r
-        var rtslib;\r
-        for(n=0;n<rtslibtemp.length;n++)\r
-        {\r
-           if(rtslibtemp[n].match(".lib"))\r
-           { \r
-              rtslib=rtslibtemp[n];\r
-           }\r
-        }\r
 -    \r
 -        if(stringname.match("gnu.targets"))\r
 -        {\r
 -            libmakefile.writeLine("CC = $("+tooldir+")/bin/$("+cmdprefix+")gcc");\r
 -            libmakefile.writeLine("AC = $("+tooldir+")/bin/$("+cmdprefix+")as");    \r
 -            libmakefile.writeLine("ARIN = $("+tooldir+")/bin/$("+cmdprefix+")ar");    \r
 -            libmakefile.writeLine("LD = $("+tooldir+")/bin/$("+cmdprefix+")gcc");   \r
 -        }\r
 -        else\r
 -        {\r
 -            print("Error: Non-GNU targets are not currently supported ");\r
 -            java.lang.System.exit(1);\r
--\r
-       libmakefile.writeLine("CC = $("+tooldir+")/bin/"+targetname.cc.cmd +" "+targetname.ccOpts.prefix+" "+targetname.cc.opts);\r
-       libmakefile.writeLine("AC = $("+tooldir+")/bin/"+targetname.asm.cmd +" "+targetname.asmOpts.prefix+" "+targetname.asm.opts);    \r
-       libmakefile.writeLine("ARIN = $("+tooldir+")/bin/"+targetname.ar.cmd +" "+targetname.ar.opts);    \r
-       libmakefile.writeLine("LD = $("+tooldir+")/bin/"+targetname.lnk.cmd +" "+targetname.lnk.opts);   \r
-       libmakefile.writeLine("RTSLIB = -l $("+tooldir+")/lib/"+rtslib);        \r
 -        }\r
 -      \r
 -        libmakefile.writeLine("INCS = -I. -I$(strip $(subst ;, -I,$(subst $(space),\\$(space),$(INCDIR)))) -I$("+tooldir+")/include");\r
 -        libmakefile.writeLine("OBJEXT = o"+targetname.suffix); \r
 -        libmakefile.writeLine("AOBJEXT = s"+targetname.suffix);     \r
 -        libmakefile.writeLine("CFLAGS_INTERNAL = " +targetname.ccOpts.prefix+" "+targetname.cc.opts);\r
 -        libmakefile.writeLine("ASFLAGS_INTERNAL = " +targetname.asmOpts.prefix+" "+targetname.asm.opts);\r
 -        libmakefile.writeLine("ARFLAGS_INTERNAL = " +targetname.ar.opts);\r
 -        libmakefile.writeLine("LNKFLAGS_INTERNAL = " +targetname.lnk.opts);\r
 -        libmakefile.writeLine("INTERNALDEFS = -MD -MF $@.dep");\r
 -        libmakefile.writeLine("INTERNALLINKDEFS = -o $@ -m $@.map");  /* TBD */\r
 -        libmakefile.writeLine("OBJDIR =  $(LIBDIR)/" + device.toString() + "/" + targetDir +"/obj"); \r
 -    \r
--    }\r
--    else\r
--    {\r
-       print("Error: Non-TI targets are not currently supported ");\r
-       java.lang.System.exit(1);\r
 -  \r
 -        if(stringname.match("ti.targets"))\r
 -        {\r
--\r
-     }\r
 -            var rtslibtemp = targetname.lnkOpts.suffix.toString().split("/");\r
 -            var rtslib;\r
 -            for(n=0;n<rtslibtemp.length;n++)\r
 -            {\r
 -                if(rtslibtemp[n].match(".lib"))\r
 -                { \r
 -                    rtslib=rtslibtemp[n];\r
 -                }\r
 -            }\r
 -\r
 -            libmakefile.writeLine("CC = $("+tooldir+")/bin/"+targetname.cc.cmd);\r
 -            libmakefile.writeLine("AC = $("+tooldir+")/bin/"+targetname.asm.cmd);    \r
 -            libmakefile.writeLine("ARIN = $("+tooldir+")/bin/"+targetname.ar.cmd);    \r
 -            libmakefile.writeLine("LD = $("+tooldir+")/bin/"+targetname.lnk.cmd);   \r
 -            libmakefile.writeLine("RTSLIB = -l $("+tooldir+")/lib/"+rtslib);        \r
 -        }\r
 -        else\r
 -        {\r
 -            print("Error: Non-TI targets are not currently supported ");\r
 -            java.lang.System.exit(1);\r
 -\r
 -        }\r
--      \r
-     libmakefile.writeLine("INCS = -I. -I$(strip $(subst ;, -I,$(subst $(space),\\$(space),$(INCDIR))))");\r
-     libmakefile.writeLine("OBJEXT = o"+targetname.suffix); \r
-     libmakefile.writeLine("AOBJEXT = s"+targetname.suffix);     \r
-     /* libmakefile.writeLine("INTERNALDEFS = -D"+stringname.replace(/\./g,"_")+" -Dxdc_target_types__=ti/targets/std.h -DMAKEFILE_BUILD -eo.$(OBJEXT) -ea.$(AOBJEXT) -fr=$(@D) -fs=$(@D) -ppa -ppd=$@.dep");*/\r
-     libmakefile.writeLine("INTERNALDEFS = -D"+stringname.replace(/\./g,"_")+"  -DMAKEFILE_BUILD -eo.$(OBJEXT) -ea.$(AOBJEXT) -fr=$(@D) -fs=$(@D) -ppa -ppd=$@.dep");\r
-     libmakefile.writeLine("INTERNALLINKDEFS = -o $@ -m $@.map");\r
-     libmakefile.writeLine("OBJDIR =  $(LIBDIR)/obj"); \r
 -        libmakefile.writeLine("INCS = -I. -I$(strip $(subst ;, -I,$(subst $(space),\\$(space),$(INCDIR)))) -I$("+tooldir+")/include");\r
 -        libmakefile.writeLine("OBJEXT = o"+targetname.suffix); \r
 -        libmakefile.writeLine("AOBJEXT = s"+targetname.suffix);     \r
 -        libmakefile.writeLine("CFLAGS_INTERNAL = " +targetname.ccOpts.prefix+" "+targetname.cc.opts);\r
 -        libmakefile.writeLine("ASFLAGS_INTERNAL = " +targetname.asmOpts.prefix+" "+targetname.asm.opts);\r
 -        libmakefile.writeLine("ARFLAGS_INTERNAL = " +targetname.ar.opts);\r
 -        libmakefile.writeLine("LNKFLAGS_INTERNAL = " +targetname.lnk.opts);\r
 -        /* libmakefile.writeLine("INTERNALDEFS = -D"+stringname.replace(/\./g,"_")+" -Dxdc_target_types__=ti/targets/std.h -DMAKEFILE_BUILD -eo.$(OBJEXT) -ea.$(AOBJEXT) -fr=$(@D) -fs=$(@D) -ppa -ppd=$@.dep");*/\r
 -        libmakefile.writeLine("INTERNALDEFS = -D"+stringname.replace(/\./g,"_")+"  -DMAKEFILE_BUILD -eo.$(OBJEXT) -ea.$(AOBJEXT) -fr=$(@D) -fs=$(@D) -ppa -ppd=$@.dep");\r
 -        libmakefile.writeLine("INTERNALLINKDEFS = -o $@ -m $@.map");\r
 -        libmakefile.writeLine("OBJDIR =  $(LIBDIR)/" + device.toString() + "/" + targetDir +"/obj"); \r
 -    }     \r
--   \r
-- return libmakefile;\r
--\r
--}\r
--\r
- function makeAddObjects(srcString, makefilename, srcfiles, flags,fileExt, targetName)\r
 -function makeAddObjects(srcString, makefilename, srcfiles, flags,fileExt, targetName, objDir)\r
--{\r
--  var  sourcestring = (srcString + fileExt).toString().toUpperCase();\r
--  var  compileflagstring = sourcestring + "FLAGS";\r
--  var  objectliststring = sourcestring + "OBJS";\r
--  /* List all the source files */\r
--  makefilename.writeLine("\n#List the "+srcString+" Files");  \r
--  makefilename.writeLine(sourcestring + "= \\");\r
--  for(var i=0;i<srcfiles.length-1;i++)\r
--  {\r
--    makefilename.writeLine("    "+srcfiles[i]+"\\");\r
--  }\r
--    makefilename.writeLine("    "+srcfiles[i]+"\n");\r
--    \r
-- /* Flags for the source files */\r
-- makefilename.writeLine("# FLAGS for the "+srcString+" Files"); \r
-- var compileflags="";\r
-- if(fileExt == "asm" && flags.aopts != undefined)\r
-- {\r
--   compileflags+=" "+flags.aopts;\r
-- }\r
-- else if((fileExt == "c" || fileExt == "sa")&& flags.copts != undefined)\r
-- {\r
--   compileflags+=" "+flags.copts;\r
-- } \r
--\r
-- if(flags.incs != undefined)\r
-- {\r
--   compileflags+=" "+flags.incs;\r
-- }\r
--\r
--\r
-- makefilename.writeLine(compileflagstring+" = "+compileflags +" \n");     \r
-- makefilename.writeLine("# Make Rule for the "+srcString+" Files");  \r
-- \r
-  makefilename.writeLine(objectliststring +" = $(patsubst %."+fileExt+", $(OBJDIR)/%.$(OBJEXT), $(" + sourcestring + "))"); \r
-  makefilename.writeLine("\n$("+objectliststring+"): $(OBJDIR)/%.$(OBJEXT): %."+fileExt);   \r
 - makefilename.writeLine(objectliststring +" = $(patsubst %."+fileExt+", "+objDir+"/%.$(OBJEXT), $(" + sourcestring + "))"); \r
 - makefilename.writeLine("\n$("+objectliststring+"): "+objDir+"/%.$(OBJEXT): %."+fileExt);   \r
-- if(fileExt == "c")\r
-- { \r
--   makefilename.writeLine("\t-@echo cl"+targetName.suffix +" $< ...");     \r
-- }\r
-- else\r
-- {\r
--   makefilename.writeLine("\t-@echo asm"+targetName.suffix +" $< ...");      \r
-- }\r
-- makefilename.writeLine("\tif [ ! -d $(@D) ]; then $(MKDIR) $(@D) ; fi;");           \r
-- \r
-- if(fileExt == "c")\r
-- {\r
-    makefilename.writeLine("\t$(RM) $@.dep");\r
-    makefilename.writeLine("\t$(CC) $("+compileflagstring+") $(INTERNALDEFS) $(INCS) -fc $< ");\r
-    makefilename.writeLine("\t-@$(CP) $@.dep $@.pp; \\");\r
-    makefilename.writeLine("         $(SED) -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\\\$$//' \\");\r
-    makefilename.writeLine("             -e '/^$$/ d' -e 's/$$/ :/' < $@.pp >> $@.dep; \\");\r
-    makefilename.writeLine("         $(RM) $@.pp ");\r
 -   if ((targetName.name == "A15F") || (targetName.name == "A9F") || (targetName.name == "A8F"))\r
 -   {\r
 -    makefilename.writeLine("\t$(RM) $@.dep");\r
 -    makefilename.writeLine("\t$(CC) $(CFLAGS_INTERNAL) $("+compileflagstring+") $(INTERNALDEFS) $(INCS) $< -o $@");\r
 -   /* \r
 -    TBD\r
 -   */\r
 -   }\r
 -   else\r
 -   {\r
 -    makefilename.writeLine("\t$(RM) $@.dep");\r
 -    makefilename.writeLine("\t$(CC) $(CFLAGS_INTERNAL) $("+compileflagstring+") $(INTERNALDEFS) $(INCS) -fc $< ");\r
 -    makefilename.writeLine("\t-@$(CP) $@.dep $@.pp; \\");\r
 -    makefilename.writeLine("         $(SED) -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\\\$$//' \\");\r
 -    makefilename.writeLine("             -e '/^$$/ d' -e 's/$$/ :/' < $@.pp >> $@.dep; \\");\r
 -    makefilename.writeLine("         $(RM) $@.pp ");\r
 -   }\r
-- }\r
-- else if(fileExt == "asm")\r
-- {\r
-    makefilename.writeLine("\t$(AC) $("+compileflagstring+") $(INTERNALDEFS) $(INCS) -fa $< ");\r
 -   makefilename.writeLine("\t$(AC) $(ASFLAGS_INTERNAL) $("+compileflagstring+") $(INTERNALDEFS) $(INCS) -fa $< ");\r
-- }\r
-- else if(fileExt == "sa")\r
-- {\r
-    makefilename.writeLine("\t$(AC) $("+compileflagstring+") $(INTERNALDEFS) $(INCS) $< ");\r
 -   makefilename.writeLine("\t$(AC) $(ASFLAGS_INTERNAL) $("+compileflagstring+") $(INTERNALDEFS) $(INCS) $< ");\r
-- }\r
 - \r
--   makefilename.writeLine("\n#Create Empty rule for dependency");\r
--   makefilename.writeLine("$("+objectliststring+"):"+makefilename.$private.fd);\r
--   makefilename.writeLine(makefilename.$private.fd+":");\r
--   makefilename.writeLine("\n#Include Depedency for "+srcString+" Files");\r
--   makefilename.writeLine("ifneq (clean,$(MAKECMDGOALS))");\r
--   makefilename.writeLine(" -include $("+objectliststring+":%.$(OBJEXT)=%.$(OBJEXT).dep)");\r
--   makefilename.writeLine("endif");\r
-- \r
--}\r
--\r
--/**************************************************************************\r
-- * FUNCTION NAME : buildLibrary\r
-- **************************************************************************\r
-- * DESCRIPTION   :\r
-- *  Utility function which will build a specific library\r
-- **************************************************************************/\r
--var makefilelocal;\r
- function buildLibrary (libOptions, libName, target, libFiles) \r
 -function buildLibrary (socName, isDmaSoc, isSoc, libOptions, libName, target, libFiles) \r
--{\r
-     var lldFullLibraryPath = "./lib/c66/" + libName;\r
-     var lldFullBuildPath = "./build/c66/" + libName;\r
-     var lldFullLibraryPathMake = "$(LIBDIR)/" + "c66/" + libName;\r
 -    var targetDir;\r
 -\r
 -    if (target.name == "A15F")\r
 -    {\r
 -        targetDir = "armv7";\r
 -    }\r
 -      else if (target.name == "A9F")\r
 -    {\r
 -        targetDir = "armv7";\r
 -    }\r
 -      else if (target.name == "A8F")\r
 -    {\r
 -        targetDir = "armv7";\r
 -    }\r
 -    else if (target.name == "M4")\r
 -    {\r
 -        targetDir = "m4";\r
 -    }\r
 -    else\r
 -    {\r
 -        targetDir = "c66";\r
 -    }\r
 -    \r
 -    /* Derive the operating system and soc names */\r
 -    if (isDmaSoc == "true") {\r
 -        var libNameExp = libName+"."+socName+".dma";\r
 -        targetDir = socName+"/"+targetDir;\r
 -    }\r
 -    else if (isSoc == "true") {\r
 -        var libNameExp = libName+"."+socName;\r
 -        targetDir = socName+"/"+targetDir;\r
 -    }\r
 -    else  {\r
 -        var libNameExp = libName;\r
 -    }\r
 -        \r
 -    var lldFullLibraryPath = "./lib/" + targetDir +"/" + libNameExp;\r
 -    var lldFullBuildPath = "./build/" + targetDir +"/" + libNameExp;\r
 -    var lldFullLibraryPathMake = "$(LIBDIR)/" + targetDir +"/" + libNameExp;\r
--\r
--    /* Create Main make file in the root of package folder */\r
--    makefilelocal = createMake(makefilelocal);\r
--\r
--    /* Write the rule to make library in main makefile */\r
--    lib = lldFullBuildPath+".a"+target.suffix;\r
--    libMake = lldFullLibraryPathMake+".a"+target.suffix;\r
--    var objectPath= "./package/"+lldFullBuildPath;\r
--    makefilelocal.writeLine("\n\n# Make rule to create "+libMake+" library");\r
--    makefilelocal.writeLine(".libraries: "+ libMake);\r
--    makefilelocal.writeLine(libMake+": FORCE\n\t$(MAKE) -f "+lib+".mk $@");                                 \r
--\r
--    /* Create Library make file in the lib folder */\r
-     var makefilelib= createLibMake(lib+".mk",target,objectPath);  \r
 -    var makefilelib= createLibMake(socName, lib+".mk",target,objectPath);  \r
--\r
--    /* Rule to clean library in main makefile */\r
--    makefilelocal.writeLine("# Rule to clean "+libMake+" library");                                              \r
--    makefilelocal.writeLine("clean ::\n\t$(RM) "+ libMake);                                          \r
--    librule="\n\n"+libMake+" :";\r
--\r
--    /* Add files to be compiled */\r
--    /* Separate out the C and assembly files */\r
--    var cfiles= new Array();\r
--    var afiles= new Array();\r
--    var safiles= new Array();\r
--    for each(var srcFile in libFiles)\r
--    {\r
--        var srcFile=String(srcFile);\r
--        var dot = srcFile.lastIndexOf(".");\r
--        var extension = srcFile.substr(dot,srcFile.length);      \r
--        if(extension == ".c")\r
--        {\r
--          cfiles.push(srcFile);\r
--        }\r
--        else if(extension == ".sa")\r
--        {\r
--          safiles.push(srcFile);\r
--        }\r
--        else if(extension == ".asm")\r
--        {\r
--           afiles.push(srcFile);\r
--        }\r
--        else\r
--        {\r
--           print("ERROR: Unsupported file extension");\r
--           java.lang.System.exit(1);\r
--        }\r
--     }\r
--    if(cfiles.length > 0)\r
--    {                                                \r
-       makeAddObjects("COMMONSRC",makefilelib,cfiles,libOptions,"c",target);\r
 -      makeAddObjects("COMMONSRC",makefilelib,cfiles,libOptions,"c",target, "$(OBJDIR)");\r
--      librule += " $(COMMONSRCCOBJS)";                   \r
--    }\r
--    if(afiles.length > 0)\r
--    {                                                \r
-       makeAddObjects("COMMONSRC",makefilelib,afiles,libOptions,"asm",target);\r
 -      makeAddObjects("COMMONSRC",makefilelib,afiles,libOptions,"asm",target, "$(OBJDIR)");\r
--      librule += " $(COMMONSRCASMOBJS)";                   \r
--    }\r
--    if(safiles.length > 0)\r
--    {                                                \r
-       makeAddObjects("COMMONSRC",makefilelib,safiles,libOptions,"sa",target);\r
 -      makeAddObjects("COMMONSRC",makefilelib,safiles,libOptions,"sa",target, "$(OBJDIR)");\r
--      librule += " $(COMMONSRCSAOBJS)";                   \r
--    }\r
--\r
--    makefilelib.writeLine(librule);\r
--    makefilelib.writeLine("\t@echo archiving $? into $@ ...");\r
-     makefilelib.writeLine("\tif [ ! -d $(LIBDIR)/c66 ]; then $(MKDIR) $(LIBDIR)/c66 ; fi;"); \r
-               makefilelib.writeLine("\t$(ARIN) $@ $?");\r
 -    makefilelib.writeLine("\tif [ ! -d $(LIBDIR)/" + targetDir + " ]; then $(MKDIR) $(LIBDIR)/" + targetDir + " ; fi;"); \r
 -    makefilelib.writeLine("\t$(ARIN) $(ARFLAGS_INTERNAL) $@ $?");\r
--              makefilelib.close();   \r
--\r
--    /* Create the Epilogue; which executes after all the builds are completed. \r
--     * This is used to generate the benchmark information for the built library. \r
--     * Also add the benchmarking information file to the package. */\r
--\r
--    /* Put the temp file in object directory since javascript doesn't have a built in tmpname, \r
--     * and don't want --jobs=# with # > 1 to result in collisions */\r
--    var libFullName = lldFullLibraryPath + ".a" + target.suffix;\r
--    var tempFile = libFullName + ".xml";\r
--    Pkg.makeEpilogue += ".libraries: " + libFullName +  "_size.txt\n";\r
--    Pkg.makeEpilogue += libFullName +  "_size.txt: " + libFullName + "\n";\r
--    if ( java.lang.String(target.name).contains('66') )\r
--    {    \r
--        Pkg.makeEpilogue += "\n\t $(C6X_GEN_INSTALL_PATH)/bin/ofd6x -x " + libFullName + " > " + tempFile;\r
--        Pkg.makeEpilogue += "\n\t $(SECTTI) " + tempFile + " > " + libFullName +  "_size.txt";\r
--        Pkg.makeEpilogue += "\n\t $(RM) " + tempFile + "\n\n";\r
--    }   \r
--    else if (target.name == "M4")\r
--    {\r
--        Pkg.makeEpilogue += "\n\t $(TOOLCHAIN_PATH_M4)/bin/armofd -x " + libFullName + " > " + tempFile;\r
--        Pkg.makeEpilogue += "\n\t $(SECTTI) " + tempFile + " > " + libFullName +  "_size.txt";\r
--        Pkg.makeEpilogue += "\n\t $(RM) " + tempFile + "\n\n";\r
--    }\r
--    else\r
--    {\r
--        Pkg.makeEpilogue += "\n\t $(TOOLCHAIN_PATH_A15)/bin/$(CROSS_TOOL_PRFX)size " + libFullName + " > " + libFullName + "_size.txt";\r
-     }                \r
 -    }       \r
--    Pkg.otherFiles[Pkg.otherFiles.length++] = lldFullLibraryPath + ".a" + target.suffix + "_size.txt";\r
--    Pkg.otherFiles[Pkg.otherFiles.length++] = lldFullBuildPath + ".a" + target.suffix + ".mk";\r
--    Pkg.otherFiles[Pkg.otherFiles.length++] = lldFullLibraryPath + ".a" + target.suffix;\r
--\r
--    /* We need to clean after ourselves; extend the 'clean' target to take care of this. */\r
-     Pkg.makeEpilogue += "clean::\n";\r
 -    Pkg.makeEpilogue += "\nclean::\n";\r
--    Pkg.makeEpilogue += "\t$(RM) " + lldFullBuildPath + ".a" + target.suffix + "_size.txt\n";    \r
-     Pkg.makeEpilogue += "\t$(RMDIR) " + "$(LIBDIR)/" + "c66/ \n\n";\r
 -    Pkg.makeEpilogue += "\t$(RMDIR) " + "$(LIBDIR)/" + targetDir + "/ \n\n";\r
--\r
--    return lib;\r
--}\r
--\r
--/**************************************************************************\r
-- * FUNCTION NAME : createMiniPkg\r
-- **************************************************************************\r
-- * DESCRIPTION   :\r
-- *  The function is responsible for creating the mini tar package\r
-- *  The MINI package has the following files:- \r
-- *      - Driver Source Files. \r
-- *      - Header files (exported and internal driver files) \r
-- *      - Simple Makefiles. \r
-- **************************************************************************/\r
--function createMiniPkg(pkgName)\r
--{\r
--    /* Get the package Name. */\r
--    var packageRepository = xdc.getPackageRepository(Pkg.name);\r
--    var packageBase       = xdc.getPackageBase(Pkg.name);\r
--    var packageName       = packageBase.substring(packageRepository.length + 1);\r
--\r
--    /* Convert the Package name by replacing back slashes with forward slashes. This is required because\r
--     * otherwise with long names the tar is unable to change directory. */\r
--    var newPkgName = new java.lang.String(packageRepository);\r
--    var newPkgRep  = newPkgName.replace('\\', '/');\r
--\r
--    /* Step1: Create the MINI Package and add the simple Big and Little Endian Makefiles to the package */\r
--    Pkg.makeEpilogue += "release: mini_pkg\n";\r
--    Pkg.makeEpilogue += "mini_pkg:\n";\r
--    Pkg.makeEpilogue += "\t tar -C " + "\"" + newPkgRep + "\"" + " -cf packages/" + pkgName + "_mini.tar " + \r
--                        packageName + "simpleC66LE.mak " + packageName + "simpleC66BE.mak\n";\r
--                        \r
--\r
--    /* Step2: Add the exported header files to the package */\r
--    var includeFiles = libUtility.listAllFiles (".h", ".", false);\r
--    for (var k = 0 ; k < includeFiles.length; k++)\r
--        Pkg.makeEpilogue += "\t tar -C " + "\"" + newPkgRep + "\"" + " -rf packages/" + pkgName + "_mini.tar " + \r
--                        packageName + includeFiles[k] + "\n";\r
--\r
--    /* Step3: Add the internal header files to the package */\r
--    includeFiles = libUtility.listAllFiles (".h", "include", true);\r
--    for (var k = 0 ; k < includeFiles.length; k++)\r
--        Pkg.makeEpilogue += "\t tar -C " + "\"" + newPkgRep + "\"" + " -rf packages/" + pkgName + "_mini.tar " + \r
--                        packageName + includeFiles[k] + "\n";\r
--\r
--    /* Step4: Add the PDSP firmware files to the package */\r
--    includeFiles = libUtility.listAllFiles (".h", "firmware", true);\r
--    for (var k = 0 ; k < includeFiles.length; k++)\r
--        Pkg.makeEpilogue += "\t tar -C " + "\"" + newPkgRep + "\"" + " -rf packages/" + pkgName + "_mini.tar " + \r
--                        packageName + includeFiles[k] + "\n";\r
--\r
--    /* Step5: Add the device specific files to the package */\r
--    includeFiles = libUtility.listAllFiles (".c", "device", true);\r
--    for (var k = 0 ; k < includeFiles.length; k++)\r
--        Pkg.makeEpilogue += "\t tar -C " + "\"" + newPkgRep + "\"" + " -rf packages/" + pkgName + "_mini.tar " + \r
--                        packageName + includeFiles[k] + "\n";\r
--\r
--    /* Step4: Add the driver source files to the package; the filter should have generated a source listing */\r
--    Pkg.makeEpilogue += "\t tar -C " + "\"" + newPkgRep + "\"" + " -T src.lst -rf packages/" + pkgName + "_mini.tar " + "\n";\r
--\r
--    /* Ensure that we clean up the mini package */\r
--    Pkg.makeEpilogue += "clean::\n";\r
--    Pkg.makeEpilogue += "\t $(RM) packages/" + pkgName + "_mini.tar\n";\r
--}\r
--\r
--\r
++/******************************************************************************
++ * FILE PURPOSE: Build Library Utilities
++ ******************************************************************************
++ * FILE NAME: buildlib.xs
++ *
++ * DESCRIPTION: 
++ *  This file contains common routines that are used by the various RM 
++ *  components.
++ *
++ * Copyright (C) 2012-2015, Texas Instruments, Inc.
++ *****************************************************************************/
++
++/**************************************************************************
++ * FUNCTION NAME : listAllFiles
++ **************************************************************************
++ * DESCRIPTION   :
++ *  Utility function which lists all files with a specific extension 
++ *  present in a directory and any directory inside it.
++ **************************************************************************/
++function listAllFiles(ext, dir, recurse)
++{     
++    var srcFile = [];
++    var d;
++
++    /* If recurse parameter is not specified we default to recursive search. */
++    if (recurse == null)
++        recurse = true;
++
++    if (dir == undefined) 
++          d = ".";
++    else 
++      d = dir;
++
++    /* Get access to the current directory. */
++    var file = new java.io.File(d);
++
++    /* Check if the file exists and it is a directory. */
++    if (file.exists() && file.isDirectory()) 
++    {
++        /* Get a list of all files in the specific directory. */
++        var fileList = file.listFiles();
++        for (var i = 0; i < fileList.length; i++) 
++        {
++            /* Dont add the generated directory 'package' and any of its files 
++             * to the list here. */
++            if (fileList[i].getName().matches("package") == false)
++            {
++                /* Check if the detected file is a directory */
++                if (fileList[i].isDirectory())
++                {
++                    /* We will recurse into the subdirectory only if required to do so. */
++                    if (recurse == true)
++                    {
++                        /* Generate the directory Name in which we will recurse. */ 
++                        var directoryName = d + "/" + fileList[i].getName();
++
++                        /* Get a list of all files in this directory */
++                        var fileListing = listAllFiles (ext, directoryName, recurse);
++                        if (fileListing != null)
++                        {
++                            /* Return a list of all file names in the directory. */
++                            for (var j = 0 ; j < fileListing.length; j++) 
++                                srcFile[srcFile.length++] = fileListing[j];
++                        }
++                    }
++                }
++                else
++                {
++                    /* This was a file. Check if the file name matches the extension */
++                    if (fileList[i].getName().endsWith(ext) == true)
++                        srcFile[srcFile.length++] = d + "/" + fileList[i].getName();
++                }
++            }
++        }
++
++        return srcFile;
++    }
++    return null;
++}
++
++
++function createMake(makefile)
++{
++    /* Create the main make file */
++    var fileModule = xdc.module('xdc.services.io.File');
++    if(makefile==undefined)
++    {
++      try{
++          makefile = fileModule.open("makefile", "w");
++         } catch (ex)
++         {
++           print("makefile cannot be written to. Please check Writing Permissions.");
++           java.lang.System.exit(1);
++         }   
++    
++      Pkg.makePrologue += "\ninclude makefile\n"; 
++         
++      Pkg.makeEpilogue += "\nclean::\n\t-$(RM)  makefile\n";
++      makefile.writeLine("#*******************************************************************************");
++      makefile.writeLine("#* FILE PURPOSE: Top level makefile for Creating Component Libraries");
++      makefile.writeLine("#*******************************************************************************");
++      makefile.writeLine("#* FILE NAME: makefile");
++      makefile.writeLine("#*");
++      makefile.writeLine("#* DESCRIPTION: Defines Compiler tools paths, libraries , Build Options ");
++      makefile.writeLine("#*");
++      makefile.writeLine("#*");
++      makefile.writeLine("#*******************************************************************************");
++      makefile.writeLine("#*");
++      makefile.writeLine("# (Mandatory) Specify where various tools are installed.");
++
++      var file = xdc.module('xdc.services.io.File');
++    
++      
++      makefile.writeLine("\n# Output for prebuilt generated libraries");
++      makefile.writeLine("export LIBDIR ?= ./lib");
++      /* use sectti.exe from path */
++      makefile.writeLine("export SECTTI ?= sectti");
++
++      /* Create INCDIR from XDCPATH */
++    
++      /* copy the environment array from the current environment */
++      var env   = java.lang.System.getenv();
++      var getxdcpath=String(java.lang.System.getenv("XDCPATH"));
++      getxdcpath= getxdcpath.replace(/\\/g,"/");
++      var keys  = env.keySet().toArray();
++      var key;
++      var stat={};
++      var env_j=[];
++      var listxdcpath = new Array();
++      for (var i = 0; i < keys.length; i++) {
++           key = String(keys[i]);
++           if((key.match("INSTALL_PATH")) || (key.match("INSTALLDIR")))
++           {
++             var keyPath=String(env.get(key));
++             keyPath=keyPath.replace(/\\/g,"/");
++             var file = xdc.module('xdc.services.io.File');
++             keyPath=file.getDOSPath(keyPath);
++             if(getxdcpath.toString().match(keyPath))
++             {
++                 listxdcpath.push({keyname: key,keypath: keyPath});
++                 while(getxdcpath.toString().match(keyPath))
++                 {
++                   getxdcpath=getxdcpath.toString().replace(keyPath,"$("+key+")");
++                 }
++             }
++           }
++    
++     }
++       var pkgroot="..";
++       for (var i = Pkg.name.split('.').length; i > 1; i--) {
++              pkgroot+="/..";
++          }
++        
++      makefile.writeLine("\n# ROOT Directory");        
++      makefile.writeLine("export ROOTDIR := "+pkgroot);
++    
++      makefile.writeLine("\n# INCLUDE Directory");
++      makefile.writeLine("export INCDIR := "+getxdcpath+";$(ROOTDIR)");       
++    
++      makefile.writeLine("\n# Common Macros used in make");  
++      makefile.writeLine("\nifndef RM");     
++      makefile.writeLine("export RM = rm -f");
++      makefile.writeLine("endif");        
++    
++      makefile.writeLine("\nifndef CP");     
++      makefile.writeLine("export CP = cp -p");    
++      makefile.writeLine("endif");    
++        
++      makefile.writeLine("\nexport MKDIR = mkdir -p");
++    
++      makefile.writeLine("\nifndef RMDIR");         
++      makefile.writeLine("export RMDIR = rm -rf");
++      makefile.writeLine("endif");        
++    
++      makefile.writeLine("\nifndef SED"); 
++      makefile.writeLine("export SED = sed");    
++      makefile.writeLine("endif");    
++    
++      makefile.writeLine("\nifndef MAKE"); 
++      makefile.writeLine("export MAKE = make");    
++      makefile.writeLine("endif");        
++
++      makefile.writeLine("\n# PHONY Targets");                
++      makefile.writeLine(".PHONY: all clean cleanall ");    
++      
++      makefile.writeLine("\n# FORCE Targets");                
++      makefile.writeLine("FORCE: ");          
++      
++      makefile.writeLine("\n# all rule");                
++      makefile.writeLine("all: .executables");           
++      makefile.writeLine(".executables: .libraries");
++      makefile.writeLine(".libraries:");
++      
++      makefile.writeLine("\n# Clean Rule");          
++      makefile.writeLine("clean:: clean_package");                  
++      makefile.writeLine("# Clean Top Level Object Directory ");          
++      makefile.writeLine("clean_package :\n\t$(RMDIR) $(LIBDIR)/*/");  
++      makefile.writeLine("\t$(RMDIR) package/cfg");            
++   }
++   else
++   {
++     try{
++          makefile = fileModule.open("makefile", "a");
++         } catch (ex)
++         {
++           print("makefile cannot be written to. Please check Writing Permissions.");
++           java.lang.System.exit(1);
++         }  
++    
++    }
++
++ return makefile;
++}
++
++function createLibMake(device, makelibname,targetname, objectPath)
++{
++   var tooldir;
++   var cmdprefix;
++   var targetDir;
++   var stringname=String(targetname).replace("(xdc.bld.ITarget.Module)","");
++   
++   switch(stringname)
++   {
++    case String(C66LE):
++      tooldir="C6X_GEN_INSTALL_PATH";
++      cmdprefix="";
++      targetDir="c66";
++      targetname=C66LE;
++      break;
++    case String(C66BE):
++      tooldir="C6X_GEN_INSTALL_PATH";
++      cmdprefix="";
++      targetDir="c66";
++      targetname=C66BE;
++      break;
++    case String(A15LE):
++      tooldir="TOOLCHAIN_PATH_A15"; 
++      cmdprefix="CROSS_TOOL_PRFX";
++      targetDir="armv7";
++      targetname=A15LE;
++      break;
++    case String(A9LE):
++      tooldir="TOOLCHAIN_PATH_A9";
++      cmdprefix="CROSS_TOOL_PRFX";
++      targetDir="armv7";
++      targetname=A9LE;
++      break;
++    case String(A8LE):
++      tooldir="TOOLCHAIN_PATH_A8";
++      cmdprefix="CROSS_TOOL_PRFX";
++      targetDir="armv7";
++      targetname=A8LE;
++      break;
++    case String(M4LE):
++      tooldir="TOOLCHAIN_PATH_M4";
++      cmdprefix="";
++      targetDir="m4";
++      targetname=M4LE;
++      break;
++    case String(ARM11):
++      tooldir="TI_ARM11_GEN_INSTALL_PATH"; 
++      break;
++   }
++
++    var fileModule = xdc.module('xdc.services.io.File');
++    try{
++     var dstFile = new java.io.File(makelibname);
++     dstFile.getParentFile().mkdirs();    
++     libmakefile = fileModule.open(makelibname, "w");
++     /* Add to Archive list */
++    } catch (ex)
++    {
++     print(makelibname+" cannot be written to. Please check Writing Permissions.");
++     java.lang.System.exit(1);
++    }   
++    libmakefile.writeLine("#*******************************************************************************");
++    libmakefile.writeLine("#* FILE PURPOSE: Lower level makefile for Creating Component Libraries");
++    libmakefile.writeLine("#*******************************************************************************");
++    libmakefile.writeLine("#* FILE NAME: "+makelibname);
++    libmakefile.writeLine("#*");
++    libmakefile.writeLine("#* DESCRIPTION: Defines Source Files, Compilers flags and build rules");
++    libmakefile.writeLine("#*");
++    libmakefile.writeLine("#*");
++    libmakefile.writeLine("#*******************************************************************************");
++    libmakefile.writeLine("#");
++    libmakefile.writeLine("");
++    libmakefile.writeLine("#");
++    libmakefile.writeLine("# Macro definitions referenced below");
++    libmakefile.writeLine("#");
++    libmakefile.writeLine("empty =");
++    libmakefile.writeLine("space =$(empty) $(empty)");
++        
++    if ((targetname.name == "A15F") || (targetname.name == "A9F") || (targetname.name == "A8F"))
++    {
++    
++        if(stringname.match("gnu.targets"))
++        {
++            libmakefile.writeLine("CC = $("+tooldir+")/bin/$("+cmdprefix+")gcc");
++            libmakefile.writeLine("AC = $("+tooldir+")/bin/$("+cmdprefix+")as");    
++            libmakefile.writeLine("ARIN = $("+tooldir+")/bin/$("+cmdprefix+")ar");    
++            libmakefile.writeLine("LD = $("+tooldir+")/bin/$("+cmdprefix+")gcc");   
++        }
++        else
++        {
++            print("Error: Non-GNU targets are not currently supported ");
++            java.lang.System.exit(1);
++
++        }
++      
++        libmakefile.writeLine("INCS = -I. -I$(strip $(subst ;, -I,$(subst $(space),\\$(space),$(INCDIR)))) -I$("+tooldir+")/include");
++        libmakefile.writeLine("OBJEXT = o"+targetname.suffix); 
++        libmakefile.writeLine("AOBJEXT = s"+targetname.suffix);     
++        libmakefile.writeLine("CFLAGS_INTERNAL = " +targetname.ccOpts.prefix+" "+targetname.cc.opts);
++        libmakefile.writeLine("ASFLAGS_INTERNAL = " +targetname.asmOpts.prefix+" "+targetname.asm.opts);
++        libmakefile.writeLine("ARFLAGS_INTERNAL = " +targetname.ar.opts);
++        libmakefile.writeLine("LNKFLAGS_INTERNAL = " +targetname.lnk.opts);
++        libmakefile.writeLine("INTERNALDEFS = -MD -MF $@.dep");
++        libmakefile.writeLine("INTERNALLINKDEFS = -o $@ -m $@.map");  /* TBD */
++        libmakefile.writeLine("OBJDIR =  $(LIBDIR)/" + device.toString() + "/" + targetDir +"/obj"); 
++    
++    }
++    else
++    {
++  
++        if(stringname.match("ti.targets"))
++        {
++
++            var rtslibtemp = targetname.lnkOpts.suffix.toString().split("/");
++            var rtslib;
++            for(n=0;n<rtslibtemp.length;n++)
++            {
++                if(rtslibtemp[n].match(".lib"))
++                { 
++                    rtslib=rtslibtemp[n];
++                }
++            }
++
++            libmakefile.writeLine("CC = $("+tooldir+")/bin/"+targetname.cc.cmd);
++            libmakefile.writeLine("AC = $("+tooldir+")/bin/"+targetname.asm.cmd);    
++            libmakefile.writeLine("ARIN = $("+tooldir+")/bin/"+targetname.ar.cmd);    
++            libmakefile.writeLine("LD = $("+tooldir+")/bin/"+targetname.lnk.cmd);   
++            libmakefile.writeLine("RTSLIB = -l $("+tooldir+")/lib/"+rtslib);        
++        }
++        else
++        {
++            print("Error: Non-TI targets are not currently supported ");
++            java.lang.System.exit(1);
++
++        }
++      
++        libmakefile.writeLine("INCS = -I. -I$(strip $(subst ;, -I,$(subst $(space),\\$(space),$(INCDIR)))) -I$("+tooldir+")/include");
++        libmakefile.writeLine("OBJEXT = o"+targetname.suffix); 
++        libmakefile.writeLine("AOBJEXT = s"+targetname.suffix);     
++        libmakefile.writeLine("CFLAGS_INTERNAL = " +targetname.ccOpts.prefix+" "+targetname.cc.opts);
++        libmakefile.writeLine("ASFLAGS_INTERNAL = " +targetname.asmOpts.prefix+" "+targetname.asm.opts);
++        libmakefile.writeLine("ARFLAGS_INTERNAL = " +targetname.ar.opts);
++        libmakefile.writeLine("LNKFLAGS_INTERNAL = " +targetname.lnk.opts);
++        /* libmakefile.writeLine("INTERNALDEFS = -D"+stringname.replace(/\./g,"_")+" -Dxdc_target_types__=ti/targets/std.h -DMAKEFILE_BUILD -eo.$(OBJEXT) -ea.$(AOBJEXT) -fr=$(@D) -fs=$(@D) -ppa -ppd=$@.dep");*/
++        libmakefile.writeLine("INTERNALDEFS = -D"+stringname.replace(/\./g,"_")+"  -DMAKEFILE_BUILD -eo.$(OBJEXT) -ea.$(AOBJEXT) -fr=$(@D) -fs=$(@D) -ppa -ppd=$@.dep");
++        libmakefile.writeLine("INTERNALLINKDEFS = -o $@ -m $@.map");
++        libmakefile.writeLine("OBJDIR =  $(LIBDIR)/" + device.toString() + "/" + targetDir +"/obj"); 
++    }     
++   
++ return libmakefile;
++
++}
++
++function makeAddObjects(srcString, makefilename, srcfiles, flags,fileExt, targetName, objDir)
++{
++  var  sourcestring = (srcString + fileExt).toString().toUpperCase();
++  var  compileflagstring = sourcestring + "FLAGS";
++  var  objectliststring = sourcestring + "OBJS";
++  /* List all the source files */
++  makefilename.writeLine("\n#List the "+srcString+" Files");  
++  makefilename.writeLine(sourcestring + "= \\");
++  for(var i=0;i<srcfiles.length-1;i++)
++  {
++    makefilename.writeLine("    "+srcfiles[i]+"\\");
++  }
++    makefilename.writeLine("    "+srcfiles[i]+"\n");
++    
++ /* Flags for the source files */
++ makefilename.writeLine("# FLAGS for the "+srcString+" Files"); 
++ var compileflags="";
++ if(fileExt == "asm" && flags.aopts != undefined)
++ {
++   compileflags+=" "+flags.aopts;
++ }
++ else if((fileExt == "c" || fileExt == "sa")&& flags.copts != undefined)
++ {
++   compileflags+=" "+flags.copts;
++ } 
++
++ if(flags.incs != undefined)
++ {
++   compileflags+=" "+flags.incs;
++ }
++
++
++ makefilename.writeLine(compileflagstring+" = "+compileflags +" \n");     
++ makefilename.writeLine("# Make Rule for the "+srcString+" Files");  
++ 
++ makefilename.writeLine(objectliststring +" = $(patsubst %."+fileExt+", "+objDir+"/%.$(OBJEXT), $(" + sourcestring + "))"); 
++ makefilename.writeLine("\n$("+objectliststring+"): "+objDir+"/%.$(OBJEXT): %."+fileExt);   
++ if(fileExt == "c")
++ { 
++   makefilename.writeLine("\t-@echo cl"+targetName.suffix +" $< ...");     
++ }
++ else
++ {
++   makefilename.writeLine("\t-@echo asm"+targetName.suffix +" $< ...");      
++ }
++ makefilename.writeLine("\tif [ ! -d $(@D) ]; then $(MKDIR) $(@D) ; fi;");           
++ 
++ if(fileExt == "c")
++ {
++   if ((targetName.name == "A15F") || (targetName.name == "A9F") || (targetName.name == "A8F"))
++   {
++    makefilename.writeLine("\t$(RM) $@.dep");
++    makefilename.writeLine("\t$(CC) $(CFLAGS_INTERNAL) $("+compileflagstring+") $(INTERNALDEFS) $(INCS) $< -o $@");
++   /* 
++    TBD
++   */
++   }
++   else
++   {
++    makefilename.writeLine("\t$(RM) $@.dep");
++    makefilename.writeLine("\t$(CC) $(CFLAGS_INTERNAL) $("+compileflagstring+") $(INTERNALDEFS) $(INCS) -fc $< ");
++    makefilename.writeLine("\t-@$(CP) $@.dep $@.pp; \\");
++    makefilename.writeLine("         $(SED) -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\\\$$//' \\");
++    makefilename.writeLine("             -e '/^$$/ d' -e 's/$$/ :/' < $@.pp >> $@.dep; \\");
++    makefilename.writeLine("         $(RM) $@.pp ");
++   }
++ }
++ else if(fileExt == "asm")
++ {
++   makefilename.writeLine("\t$(AC) $(ASFLAGS_INTERNAL) $("+compileflagstring+") $(INTERNALDEFS) $(INCS) -fa $< ");
++ }
++ else if(fileExt == "sa")
++ {
++   makefilename.writeLine("\t$(AC) $(ASFLAGS_INTERNAL) $("+compileflagstring+") $(INTERNALDEFS) $(INCS) $< ");
++ }
++ 
++   makefilename.writeLine("\n#Create Empty rule for dependency");
++   makefilename.writeLine("$("+objectliststring+"):"+makefilename.$private.fd);
++   makefilename.writeLine(makefilename.$private.fd+":");
++   makefilename.writeLine("\n#Include Depedency for "+srcString+" Files");
++   makefilename.writeLine("ifneq (clean,$(MAKECMDGOALS))");
++   makefilename.writeLine(" -include $("+objectliststring+":%.$(OBJEXT)=%.$(OBJEXT).dep)");
++   makefilename.writeLine("endif");
++ 
++}
++
++/**************************************************************************
++ * FUNCTION NAME : buildLibrary
++ **************************************************************************
++ * DESCRIPTION   :
++ *  Utility function which will build a specific library
++ **************************************************************************/
++var makefilelocal;
++
++function buildLibrary (socName, isSoc, libOptions, libName, target, libFiles) 
++{
++    var targetDir;
++    var objExtDir;
++    
++
++    if (target.name == "A15F")
++    {
++        targetDir = "armv7";
++    }
++    else if (target.name == "A9F")
++    {
++        targetDir = "armv7";
++    }
++    else if (target.name == "A8F")
++
++    {
++        targetDir = "armv7";
++    }
++    else if (target.name == "M4")
++    {
++        targetDir = "m4";
++    }
++    else
++    {
++        targetDir = "c66";
++    }
++    
++    /* Derive the operating system and soc names */
++    if (isSoc == "true") {
++        var libNameExp = libName+"."+socName;
++        targetDir = socName+"/"+targetDir;
++        objExtDir = "soc";
++    }
++    else  {
++        var libNameExp = libName;
++        objExtDir = "all";
++    }
++
++
++    var lldFullLibraryPath = "./lib/" + targetDir +"/" + libNameExp;
++    var lldFullBuildPath = "./build/" + targetDir +"/" + libNameExp;
++    var lldFullLibraryPathMake = "$(LIBDIR)/" + targetDir +"/" + libNameExp;
++
++    /* Create Main make file in the root of package folder */
++    makefilelocal = createMake(makefilelocal);
++
++    /* Write the rule to make library in main makefile */
++    lib = lldFullBuildPath+".a"+target.suffix;
++    libMake = lldFullLibraryPathMake+".a"+target.suffix;
++    var objectPath= "./package/"+lldFullBuildPath;
++    makefilelocal.writeLine("\n\n# Make rule to create "+libMake+" library");
++    makefilelocal.writeLine(".libraries: "+ libMake);
++    makefilelocal.writeLine(libMake+": FORCE\n\t$(MAKE) -f "+lib+".mk $@");                                 
++
++    /* Create Library make file in the lib folder */
++    var makefilelib= createLibMake(socName, lib+".mk",target,objectPath);  
++
++    /* Rule to clean library in main makefile */
++    makefilelocal.writeLine("# Rule to clean "+libMake+" library");                                              
++    makefilelocal.writeLine("clean ::\n\t$(RM) "+ libMake);                                          
++    librule="\n\n"+libMake+" :";
++
++    /* Add files to be compiled */
++    /* Separate out the C and assembly files */
++    var cfiles= new Array();
++    var afiles= new Array();
++    var safiles= new Array();
++    for each(var srcFile in libFiles)
++    {
++        var srcFile=String(srcFile);
++        var dot = srcFile.lastIndexOf(".");
++        var extension = srcFile.substr(dot,srcFile.length);      
++        if(extension == ".c")
++        {
++          cfiles.push(srcFile);
++        }
++        else if(extension == ".sa")
++        {
++          safiles.push(srcFile);
++        }
++        else if(extension == ".asm")
++        {
++           afiles.push(srcFile);
++        }
++        else
++        {
++           print("ERROR: Unsupported file extension");
++           java.lang.System.exit(1);
++        }
++     }
++    if(cfiles.length > 0)
++    {                                                
++      makeAddObjects("COMMONSRC",makefilelib,cfiles,libOptions,"c",target, "$(OBJDIR)");
++      librule += " $(COMMONSRCCOBJS)";                   
++    }
++    if(afiles.length > 0)
++    {                                                
++      makeAddObjects("COMMONSRC",makefilelib,afiles,libOptions,"asm",target, "$(OBJDIR)");
++      librule += " $(COMMONSRCASMOBJS)";                   
++    }
++    if(safiles.length > 0)
++    {                                                
++      makeAddObjects("COMMONSRC",makefilelib,safiles,libOptions,"sa",target, "$(OBJDIR)");
++      librule += " $(COMMONSRCSAOBJS)";                   
++    }
++
++    makefilelib.writeLine(librule);
++    makefilelib.writeLine("\t@echo archiving $? into $@ ...");
++    makefilelib.writeLine("\tif [ ! -d $(LIBDIR)/" + targetDir + " ]; then $(MKDIR) $(LIBDIR)/" + targetDir + " ; fi;"); 
++    makefilelib.writeLine("\t$(ARIN) $(ARFLAGS_INTERNAL) $@ $?");
++    makefilelib.close();   
++
++    /* Create the Epilogue; which executes after all the builds are completed. 
++     * This is used to generate the benchmark information for the built library. 
++     * Also add the benchmarking information file to the package. */
++
++    /* Put the temp file in object directory since javascript doesn't have a built in tmpname, 
++     * and don't want --jobs=# with # > 1 to result in collisions */
++    var libFullName = lldFullLibraryPath + ".a" + target.suffix;
++    var tempFile = libFullName + ".xml";
++    Pkg.makeEpilogue += ".libraries: " + libFullName +  "_size.txt\n";
++    Pkg.makeEpilogue += libFullName +  "_size.txt: " + libFullName + "\n";
++    if ( java.lang.String(target.name).contains('66') )
++    {    
++        Pkg.makeEpilogue += "\n\t $(C6X_GEN_INSTALL_PATH)/bin/ofd6x -x " + libFullName + " > " + tempFile;
++        Pkg.makeEpilogue += "\n\t $(SECTTI) " + tempFile + " > " + libFullName +  "_size.txt";
++        Pkg.makeEpilogue += "\n\t $(RM) " + tempFile + "\n\n";
++    }   
++    else if (target.name == "M4")
++    {
++        Pkg.makeEpilogue += "\n\t $(TOOLCHAIN_PATH_M4)/bin/armofd -x " + libFullName + " > " + tempFile;
++        Pkg.makeEpilogue += "\n\t $(SECTTI) " + tempFile + " > " + libFullName +  "_size.txt";
++        Pkg.makeEpilogue += "\n\t $(RM) " + tempFile + "\n\n";
++    }
++    else
++    {
++        Pkg.makeEpilogue += "\n\t $(TOOLCHAIN_PATH_A15)/bin/$(CROSS_TOOL_PRFX)size " + libFullName + " > " + libFullName + "_size.txt";
++    }                
++    Pkg.otherFiles[Pkg.otherFiles.length++] = lldFullLibraryPath + ".a" + target.suffix + "_size.txt";
++    Pkg.otherFiles[Pkg.otherFiles.length++] = lldFullBuildPath + ".a" + target.suffix + ".mk";
++    Pkg.otherFiles[Pkg.otherFiles.length++] = lldFullLibraryPath + ".a" + target.suffix;
++
++    /* We need to clean after ourselves; extend the 'clean' target to take care of this. */
++    Pkg.makeEpilogue += "\nclean::\n";
++    Pkg.makeEpilogue += "\t$(RM) " + lldFullBuildPath + ".a" + target.suffix + "_size.txt\n";    
++    Pkg.makeEpilogue += "\t$(RMDIR) " + "$(LIBDIR)/" + targetDir + "/ \n\n";
++
++    return lib;
++}
++
++
++
diff --cc config.bld
index 0d31b4ebf28defaa65e1a45319a90d635ac07467,24dbbc27e00cbccf1ba2708a498666c617fb2544..24dbbc27e00cbccf1ba2708a498666c617fb2544
mode 100644,100755..100644
index 1ebcda89a48b7f44b347dc6046842e9e8201876a,f8a22555dd5060a1bb6855c892f2292f015d2406..f8a22555dd5060a1bb6855c892f2292f015d2406
mode 100644,100755..100644
index 7ed9ec72e77960ad1b1f8985b80b5e5dd43bba58,8e1fcfa915317f71c30f0990f6905248a5c6b158..8e1fcfa915317f71c30f0990f6905248a5c6b158
mode 100644,100755..100644
diff --cc package.bld
index d0c82a828f9fde8bcac6a7e6c847e97355f229fa,44fdc2c2e5d188d97eedbb8e12d255abc750fccd..44fdc2c2e5d188d97eedbb8e12d255abc750fccd
mode 100644,100755..100644
diff --cc package.xs
index 37b1ffcf83c33839055f33b72e9c23a9c7fac7ad,e75fa474856be7b8a7d6390bee32dcfa688268e2..e75fa474856be7b8a7d6390bee32dcfa688268e2
mode 100644,100755..100644
diff --cc src/Module.xs
index 00373459985bcaecca5cee97f06226c70786789c,8c44862561d3255dfbdf2bc470346897f8f8ee3b..8c44862561d3255dfbdf2bc470346897f8f8ee3b
mode 100644,100755..100644
index a127c12c5d73e6595d4b8d7ea69306f7aa0c9881,a5118540ae111aa8b76e19ba09ceb6680f14986f..a5118540ae111aa8b76e19ba09ceb6680f14986f
mode 100644,100755..100644
index dfbf6387b562252c0b9cc18829a282e245392276,6da3a578499a196ddaa289ac8d9ec960a2e369f6..6da3a578499a196ddaa289ac8d9ec960a2e369f6
mode 100644,100755..100644
index 80d4d3ccacf93cd3a32c6e32cc8733a77c1347d3,49d61698ce6e73fc0eeaea45c31adaab84e24fde..49d61698ce6e73fc0eeaea45c31adaab84e24fde
mode 100644,100755..100644
index 54cbf60eb715e6e31fab6b73d75813eb294b2a7e,cc9ea670615955f3232f5d62c582ec9e3ad8f456..cc9ea670615955f3232f5d62c582ec9e3ad8f456
mode 100644,100755..100644
index 40001221cda0da7fd2de312c8413346c4f6720eb,a1e4305892d4bcdcff8ab508d2d7b1c70be40eb7..a1e4305892d4bcdcff8ab508d2d7b1c70be40eb7
mode 100644,100755..100644
index 12db031a9f222b4944191d08efd14cb8c1324678,b132ec03b11b7739e7b39e98f891f3c15d8671ce..b132ec03b11b7739e7b39e98f891f3c15d8671ce
mode 100644,100755..100644
index f818aaf9651f08706737da40b670aaeaacc40a76,a6eaf21a4299d79139fea395d20f5adc5a4f71d1..a6eaf21a4299d79139fea395d20f5adc5a4f71d1
mode 100644,100755..100644
index 8effadc1fb079e601fec78018c5722de23336105,d44837130efe2ce7fa18cdfecd295cb0b784bd42..d44837130efe2ce7fa18cdfecd295cb0b784bd42
mode 100644,100755..100644
index a55ad386133953fe871f38f524b79695e91d10a3,f751fa3dfabdf5821996e9079e78ce2fb0900dec..f751fa3dfabdf5821996e9079e78ce2fb0900dec
mode 100644,100755..100644
index be2bf9f1eaa71acb9d8f18bd8c6246ebaaeb776b,3dd1dc7436bdb7dd735bf8c011b968659bf7c606..3dd1dc7436bdb7dd735bf8c011b968659bf7c606
mode 100644,100755..100644
index d6c79b99ca5e544c55a6e606ad2a3aa7c4428f95,0de0c3418a760230d47e739c61e6b8ed2295c21d..0de0c3418a760230d47e739c61e6b8ed2295c21d
mode 100644,100755..100644
index 85458e191b2ee4c1f6f40710f72df47a9ce19286,e6ae07daff6c8ebc668bd90425de4e65bd0ca506..e6ae07daff6c8ebc668bd90425de4e65bd0ca506
mode 100644,100755..100644
index f781caa4653c418c230270a80b3e387f5b25ad9a,ec2c08e526d0700266774a77b31ca5deb0e7dba4..ec2c08e526d0700266774a77b31ca5deb0e7dba4
mode 100644,100755..100644
index f062ec527e9f665efd3e39b79ad66e77d834104f,ce500120ff1efaa02f309666f5594fb9e19ba60e..ce500120ff1efaa02f309666f5594fb9e19ba60e
mode 100644,100755..100644
index 6c13611af320309d600e43366b3f24d7f3734466,bb51317e468b0ddd2b50526b08a8e6c4ecf964f7..bb51317e468b0ddd2b50526b08a8e6c4ecf964f7
mode 100644,100755..100644
index 35a56802a348ed20c2b11cd295fb122ca197d625,d1ddd14ad2308e31c9cd005a94f7e4032062b336..d1ddd14ad2308e31c9cd005a94f7e4032062b336
mode 100644,100755..100644
index 9db289556c8cf050dec89fdb154ad87aa6cbb8ca,dda1407372345abffcce678c67262e03b282238a..dda1407372345abffcce678c67262e03b282238a
mode 100644,100755..100644