build support for Keystone1
authorAravind Batni <aravindbr@ti.com>
Mon, 19 Oct 2015 21:41:53 +0000 (17:41 -0400)
committerAravind Batni <aravindbr@ti.com>
Mon, 19 Oct 2015 21:41:53 +0000 (17:41 -0400)
12 files changed:
.gitignore [new file with mode: 0644]
Settings.xdc.xdt [changed mode: 0644->0755]
build/buildlib.xs [changed mode: 0644->0755]
config.bld [changed mode: 0644->0755]
device/Module.xs [changed mode: 0644->0755]
device/c6657/src/device_mcbsp_loopback.c [new file with mode: 0644]
device/c674x/src/device_mcbsp_loopback.c [moved from device/c674x/device_mcbsp_loopback.c with 100% similarity]
device/k2g/src/device_mcbsp_loopback.c [moved from device/k2g/device_mcbsp_loopback.c with 100% similarity]
mcbspver.h [new file with mode: 0644]
package.bld [changed mode: 0644->0755]
package.xs [changed mode: 0644->0755]
src/Module.xs [changed mode: 0644->0755]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..e547c9e
--- /dev/null
@@ -0,0 +1,27 @@
+*.sw?
+*~
+*.bak
+*.orig
+.dlls
+.executables
+.interfaces
+.libraries
+.xdcenv.mak
+Settings.h
+Settings.xdc
+build/c674?/
+build/c66/
+build/k2?/
+build/c6657/
+docs/Doxyfile
+docs/doxygen/
+docs/mcbsplldDocs.chm
+lib/
+/makefile
+package.mak
+package/
+packages/
+analysis/
+test/*/c66/bios/src
+Debug/
+Release/
old mode 100644 (file)
new mode 100755 (executable)
index 60fdf81..9fc6532
 
 module Settings
 {
+    /*! This is the McBSP Version */
     config string mcbspVersionString = `packageVersion`;
+
+    /*! This variable is to control the device type selection.
+     * By default this variable is set to NULL.
+     * 
+     * To use MCBSP for the selected device, add the following lines to config
+     * file and set the deviceType correctly:
+     * 
+     *      var hlink = xdc.useModule ('ti.drv.mcbsp.Settings');
+     *      hlink.deviceType = "k2g";
+     * 
+     * If this is not set, then hyperlink will use device independent
+     * library where user must supply compiled device_mcbsp_loopback.obj
+     */
+    metaonly config string deviceType = "";
 }
 
old mode 100644 (file)
new mode 100755 (executable)
index 01ef0d4..fe03505
  * Copyright (C) 2012, Texas Instruments, Inc.
  *****************************************************************************/
 
-/**************************************************************************
- * FUNCTION NAME : createMiniPkg
- **************************************************************************
- * DESCRIPTION   :
- *  The function is responsible for creating the mini tar package
- *  The MINI package has the following files:- 
- *      - Driver Source Files. 
- *      - Header files (exported and internal driver files) 
- *      - Simple Makefiles. 
- **************************************************************************/
-function createMiniPkg(pkgName)
-{
-    /* Get the package Name. */
-    var packageRepository = xdc.getPackageRepository(Pkg.name);
-    var packageBase       = xdc.getPackageBase(Pkg.name);
-    var packageName       = packageBase.substring(packageRepository.length + 1);
-
-    /* Convert the Package name by replacing back slashes with forward slashes. This is required because
-     * otherwise with long names the tar is unable to change directory. */
-    var newPkgName = new java.lang.String(packageRepository);
-    var newPkgRep  = newPkgName.replace('\\', '/');
-
-    /* Step1: Create the MINI Package and add the simple Big and Little Endian Makefiles to the package */
-    Pkg.makeEpilogue += "release: mini_pkg\n";
-    Pkg.makeEpilogue += "mini_pkg:\n";
-    Pkg.makeEpilogue += "\t tar -C " + "\"" + newPkgRep + "\"" + " -cf packages/" + pkgName + "_mini.tar " + packageName + "simpleC66LE.mak "  + packageName + "simpleC66BE.mak\n";
-
-    /* Step2: Add the exported header files to the package */
-    var includeFiles = libUtility.listAllFiles (".h", ".", false);
-    for (var k = 0 ; k < includeFiles.length; k++)
-        Pkg.makeEpilogue += "\t tar -C " + "\"" + newPkgRep + "\"" + " -rf packages/" + pkgName + "_mini.tar " + packageName + includeFiles[k] + "\n";
-
-    /* Step3: Add the internal header files to the package */
-    includeFiles = libUtility.listAllFiles (".h", "include", true);
-    for (var k = 0 ; k < includeFiles.length; k++)
-        Pkg.makeEpilogue += "\t tar -C " + "\"" + newPkgRep + "\"" + " -rf packages/" + pkgName + "_mini.tar " + packageName + includeFiles[k] + "\n";
-
-    includeFiles = libUtility.listAllFiles (".h", "device", true);
-    for (var k = 0 ; k < includeFiles.length; k++)
-        Pkg.makeEpilogue += "\t tar -C " + "\"" + newPkgRep + "\"" + " -rf packages/" + pkgName + "_mini.tar " + packageName + includeFiles[k] + "\n";
-
-    /* Step4: Add the device McBSP file (Example file) which illustrates McBSP device initialization. */
-    var deviceSrcFiles = libUtility.listAllFiles (".c", "device", true);
-    for (var k = 0 ; k < deviceSrcFiles.length; k++)
-        Pkg.makeEpilogue += "\t tar -C " + "\"" + newPkgRep + "\"" + " -rf packages/" + pkgName + "_mini.tar " + packageName + deviceSrcFiles[k] + "\n";
-
-    /* Step5: Add the driver source files to the package; the filter should have generated a source listing */
-    Pkg.makeEpilogue += "\t tar -C " + "\"" + newPkgRep + "\"" + " -T src.lst -rf packages/" + pkgName + "_mini.tar " + "\n";
-
-    /* Ensure that we clean up the mini package */
-    Pkg.makeEpilogue += "clean::\n";
-    Pkg.makeEpilogue += "\t $(RM) packages/" + pkgName + "_mini.tar\n";
-}
-
 /**************************************************************************
  * FUNCTION NAME : listAllFiles
  **************************************************************************
@@ -72,7 +18,7 @@ function createMiniPkg(pkgName)
  *  present in a directory and any directory inside it.
  **************************************************************************/
 function listAllFiles(ext, dir, recurse)
-{      
+{     
     var srcFile = [];
     var d;
 
@@ -81,9 +27,9 @@ function listAllFiles(ext, dir, recurse)
         recurse = true;
 
     if (dir == undefined) 
-           d = ".";
+          d = ".";
     else 
-       d = dir;
+      d = dir;
 
     /* Get access to the current directory. */
     var file = new java.io.File(d);
@@ -126,11 +72,13 @@ function listAllFiles(ext, dir, recurse)
                 }
             }
         }
+
         return srcFile;
     }
     return null;
 }
 
+
 function createMake(makefile)
 {
     /* Create the main make file */
@@ -167,6 +115,8 @@ function createMake(makefile)
       
       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 */
     
@@ -207,7 +157,7 @@ function createMake(makefile)
       makefile.writeLine("export ROOTDIR := "+pkgroot);
     
       makefile.writeLine("\n# INCLUDE Directory");
-      makefile.writeLine("export INCDIR := "+getxdcpath+";$(ROOTDIR)");       
+      makefile.writeLine("export INCDIR := "+getxdcpath+";$(ROOTDIR);$(C6X_GEN_INSTALL_PATH)/include");       
     
       makefile.writeLine("\n# Common Macros used in make");  
       makefile.writeLine("\nifndef RM");     
@@ -264,7 +214,7 @@ function createMake(makefile)
  return makefile;
 }
 
-function createLibMake(makelibname,targetname, objectPath)
+function createLibMake(device, makelibname,targetname, objectPath)
 {
    var tooldir;
    var stringname=String(targetname).replace("(xdc.bld.ITarget.Module)","");
@@ -316,7 +266,7 @@ function createLibMake(makelibname,targetname, objectPath)
     libmakefile.writeLine("#");
     libmakefile.writeLine("empty =");
     libmakefile.writeLine("space =$(empty) $(empty)");
-         
+  
     if(stringname.match("ti.targets"))
     {
 
@@ -342,20 +292,21 @@ function createLibMake(makelibname,targetname, objectPath)
       java.lang.System.exit(1);
 
     }
-       
+
     libmakefile.writeLine("INCS = -I. -I$(strip $(subst ;, -I,$(subst $(space),\\$(space),$(INCDIR))))");
     libmakefile.writeLine("OBJEXT = o"+targetname.suffix); 
     libmakefile.writeLine("AOBJEXT = s"+targetname.suffix);     
     /* 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)");    
+    libmakefile.writeLine("OBJDIR = $(LIBDIR)/" + device.toString() + "/obj");
+    libmakefile.writeLine("DEVOBJDIR = $(LIBDIR)/" + device.toString() + "/obj");
    
  return libmakefile;
 
 }
 
-function makeAddObjects(srcString, makefilename, srcfiles, flags,fileExt, targetName)
+function makeAddObjects(srcString, makefilename, srcfiles, flags,fileExt, targetName, objDir)
 {
   var  sourcestring = (srcString + fileExt).toString().toUpperCase();
   var  compileflagstring = sourcestring + "FLAGS";
@@ -390,8 +341,8 @@ function makeAddObjects(srcString, makefilename, srcfiles, flags,fileExt, target
  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);   
+ 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 +" $< ...");     
@@ -436,24 +387,60 @@ function makeAddObjects(srcString, makefilename, srcfiles, flags,fileExt, target
  *  Utility function which will build a specific library
  **************************************************************************/
 var makefilelocal;
-function buildLibrary (libOptions, libName, target, libFiles) 
+function buildLibrary (socName, isSoc, libOptions, libName, target, libFiles) 
 {
-    var lldFullLibraryPath = "./lib/" + libName;
-    var lldFullLibraryPathMake = "$(LIBDIR)/" + libName;
+    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 = lldFullLibraryPath+".a"+target.suffix;
+    lib = lldFullBuildPath+".a"+target.suffix;
     libMake = lldFullLibraryPathMake+".a"+target.suffix;
-    var objectPath= "./package/lib/"+lldFullLibraryPath;
+    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(lib+".mk",target,objectPath);  
+    var makefilelib= createLibMake(socName, lib+".mk",target,objectPath);  
 
     /* Rule to clean library in main makefile */
     makefilelocal.writeLine("# Rule to clean "+libMake+" library");                                              
@@ -490,44 +477,60 @@ function buildLibrary (libOptions, libName, target, libFiles)
      }
     if(cfiles.length > 0)
     {                                                
-      makeAddObjects("COMMONSRC",makefilelib,cfiles,libOptions,"c",target);
+      makeAddObjects("COMMONSRC",makefilelib,cfiles,libOptions,"c",target, "$(OBJDIR)");
       librule += " $(COMMONSRCCOBJS)";                   
     }
     if(afiles.length > 0)
     {                                                
-      makeAddObjects("COMMONSRC",makefilelib,afiles,libOptions,"asm",target);
-      librule += " $(COMMONSRCSOBJS)";                   
+      makeAddObjects("COMMONSRC",makefilelib,afiles,libOptions,"asm",target, "$(OBJDIR)");
+      librule += " $(COMMONSRCASMOBJS)";                   
     }
     if(safiles.length > 0)
     {                                                
-      makeAddObjects("COMMONSRC",makefilelib,safiles,libOptions,"sa",target);
+      makeAddObjects("COMMONSRC",makefilelib,safiles,libOptions,"sa",target, "$(OBJDIR)");
       librule += " $(COMMONSRCSAOBJS)";                   
     }
 
     makefilelib.writeLine(librule);
     makefilelib.writeLine("\t@echo archiving $? into $@ ...");
-               makefilelib.writeLine("\t$(ARIN) $@ $?");
-               makefilelib.close();   
-
-    /* Create the library file and add all the objects to the file. */
-    var lib = Pkg.addLibrary(lldFullLibraryPath, target, libOptions);
-
-    lib.addObjects (libFiles);
+    makefilelib.writeLine("\tif [ ! -d $(LIBDIR)/"+targetDir+" ]; then $(MKDIR) $(LIBDIR)/"+targetDir+" ; fi;"); 
+    makefilelib.writeLine("\t$(ARIN) $@ $?");
+    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. */
-    Pkg.makeEpilogue += ".libraries: benchmarking_" + target.suffix + "\n";
-    Pkg.makeEpilogue += "benchmarking_" + target.suffix + ":";
-    Pkg.makeEpilogue += "\n\t ofd6x.exe -x " + lldFullLibraryPath + ".a" + target.suffix + " > tmp.xml";
-    Pkg.makeEpilogue += "\n\t sectti.exe tmp.xml > " + lldFullLibraryPath + ".a" + target.suffix +  "_size.txt";
-    Pkg.makeEpilogue += "\n\t $(RM) tmp.xml\n\n";
+
+    /* 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++] = lldFullLibraryPath + ".a" + target.suffix + ".mk";
+    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 += "clean::\n\t";
-    Pkg.makeEpilogue += "$(RM) " + lldFullLibraryPath + ".a" + target.suffix + "_size.txt\n\n";
+    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;
 }
old mode 100644 (file)
new mode 100755 (executable)
index 6592da2..c284afd
 /* Get the Tools Base directory from the Environment Variable. */
 var toolsBaseDir = java.lang.System.getenv("XDCCGROOT");
 
+/* Get the extended debug flags */
+var extDbgFlags = java.lang.System.getenv("EXTDBGFLAGS");
 /* Get the base directory for the MCBSP Driver Package */
 var mcbspDriverPath = new java.io.File(".//").getPath();
 
 /* Read the part number from the environment variable. */
 var mcbspLLDPartNumber = java.lang.System.getenv("PARTNO");
 
+/* Get the base directory for the hyplnk LLD Package */
+var mcbsplldPath = new java.io.File(".//").getPath();
+/* Include Path */
+var mcbsplldIncPath = " -i" + mcbsplldPath;
 /* Configure the MCBSP Release Version Information */
-var mcbspDriverReleaseVersion = [01,00,00,02];
+var mcbspDriverReleaseVersion = (""+Pkg.version.replace(/\s/g, "")).split(',');
 
 /* C66 ELF compiler configuration for Little Endian Mode. */
 var C66LE           = xdc.useModule('ti.targets.elf.C66');
 C66LE.rootDir       = toolsBaseDir;
 C66LE.ccOpts.prefix = "-mo -o3 -q -k -eo.o";
+if(extDbgFlags)     
+    C66LE.ccOpts.prefix = C66LE.ccOpts.prefix + " " + extDbgFlags; 
 
 /* C6740 elf compiler configuration for Little Endian Mode. */
 var C67LE           = xdc.useModule('ti.targets.elf.C674');
 C67LE.rootDir       = toolsBaseDir;
 C67LE.ccOpts.prefix = "-mo -o3 -q -k -eo.o";
+if(extDbgFlags)     
+    C67LE.ccOpts.prefix = C67LE.ccOpts.prefix + " " + extDbgFlags; 
 
 /* C66 ELF compiler configuration for Big Endian Mode. */
 var C66BE           = xdc.useModule('ti.targets.elf.C66_big_endian');
 C66BE.rootDir       = toolsBaseDir;
 C66BE.ccOpts.prefix = "-mo -o3 -q -k -eo.o -DBIGENDIAN";
+if(extDbgFlags)     
+    C66BE.ccOpts.prefix = C66BE.ccOpts.prefix + " " + extDbgFlags;
 
-/* Check if we need to run the STATIC Analysis or not? */
-var coverityAnalysis = java.lang.System.getenv("STATIC_ANALYZE");
 
-/* Setup the Coverity Filters to perform Static Analysis. */
-if (coverityAnalysis == "ON") {
-    var coverityInstallPath = java.lang.System.getenv("STATIC_ANALYZE_PATH");
-    var cfgBase = xdc.getPackageBase("tisb.coverity.filters") + "cfg";
 
-    var coverityFilter = [
+/* device name (k2?) is inserted between first an second element of this
+   list to construct device file name for each device */
+var deviceConstruct = [ "device/", "/src/device_mcbsp_loopback.c" ];
+
+/* Create the SoC List  */
+var socs = { 
+    /* device independent libraries */
+    all :
     {
-        moduleName: "tisb.coverity.filters.Coverity",
-        params: {
-            cfgDir:  cfgBase,  // The Coverity configuration file directory
-            rootDir: coverityInstallPath,
-            outDir: xdc.csd() + "cov_out",
-            analyzeLibs: true
-        }
+        /* Build this library */
+        build: "true",
+        /* SoC lib disabled as this is device independent lib */
+        socDevLib: "false",
+        /* Library options */
+        copts: "",
+        /* target lists, kept blank now, would be updated based on argument lists */
+        targets: []
+    },
+    k2g :
+    {
+        /* this variable would be reinitialized to true, if XDCARGS contains k2g */
+        build: "false",
+        /* SoC lib enabled */
+        socDevLib: "true",
+        /* Library options */
+        copts: " -DDEVICE_K2G -DSOC_K2G",
+        /* target list */
+        targets: [ C66LE, C66BE ]
+    },
+    c674x :
+    {
+        /* this variable would be reinitialized to true, if XDCARGS contains c674x */
+        build: "false",
+        /* SoC lib enabled */
+        socDevLib: "true",
+        /* Library options */
+        copts: " -DSOC_C674X",
+        /* target list */
+        targets: [ C66LE, C66BE ]
+    },
+    c6657 :
+    {
+        /* this variable would be reinitialized to true, if XDCARGS contains c6657 */
+        build: "false",
+        /* SoC lib enabled */
+        socDevLib: "true",
+        /* Library options */
+        copts: " -DSOC_C6657",
+        /* target list */
+        targets: [ C66LE, C66BE ]
     },
-    ];
+};
 
-    /* Run the coverity filters on the LE Build only. */
-    C66LE.profiles["release"].filters = coverityFilter;
+/**************************************************************************
+ * FUNCTION NAME : merge
+ **************************************************************************
+ * DESCRIPTION   :
+ *  The function is used to merge two arrarys
+ **************************************************************************/
+function merge() {
+    var args = arguments;
+    var hash = {};
+    var arr = [];
+    for (var i = 0; i < args.length; i++) {
+       for (var j = 0; j < args[i].length; j++) {
+         if (hash[args[i][j]] !== true) {
+           arr[arr.length] = args[i][j];
+           hash[args[i][j]] = true;
+         }
+       }
+     }
+    return arr;
 }
 
-/* Check if we need to create the Makefiles? */
-var miniBuild = java.lang.System.getenv("MINI_PACKAGE");
-if (miniBuild == "ON")
+/* Grab input from XDCARGS */
+var buildArguments  = [];
+
+/* Construct the build arguments */
+for (var tmp=0; arguments[tmp] != undefined; tmp++)
 {
-    var makeC66LEFilter = {
-        moduleName: "build.filter.Make",
-        params: {
-          makefileName: "simpleC66LE.mak",
+
+    /* If no arguments are provided, override for building all */
+    if ( ( arguments.length == 1) && (arguments[tmp].equals("./config.bld")) )
+        buildArguments[buildArguments.length++] = "all";
+    else
+        buildArguments[buildArguments.length++] = arguments[tmp];
+}
+
+/* Build targets on this build */
+var build_targets = [];
+var soc_names = Object.keys(socs);
+
+for (var i=0; i < buildArguments.length; i++ ) {
+    /* Build it for all targets */
+    if (buildArguments[i] == "all") {
+        for (var j = 0; j < soc_names.length; j++)  {
+            build_targets = merge (build_targets.slice(0), socs[soc_names[j]].targets.slice(0));
+            /* Set build to "true" for that SoC */
+            socs[soc_names[j]].build = "true";
         }
-    };
-    C66LE.profiles["release"].filters[C66LE.profiles["release"].filters.length++] = makeC66LEFilter;
-    
-    var makeC66BEFilter = {
-        moduleName: "build.filter.Make",
-        params: {
-          makefileName: "simpleC66BE.mak",
+    }
+    else {
+        /* Skip the first argument, which is ./config.bld to get to next SoCs */
+        if (i == 0) continue;          
+        /* Set that build to true if it is found in supported build socs */
+        for (j = 0; j < soc_names.length; j++) {
+            if (buildArguments[i] == soc_names[j]) {
+                socs[buildArguments[i]].build = "true";
+                build_targets = merge (build_targets.slice(0), socs[buildArguments[i]].targets.slice(0));
+                break;
+            }
         }
-    }; 
-    C66BE.profiles["release"].filters[C66BE.profiles["release"].filters.length++] = makeC66BEFilter;
+    }   
 }
 
-/* List all the build targets here. */
-Build.targets = [ C66LE ];
-
+/* Update the Build target generated list */
+socs["all"].targets = build_targets; 
+Build.targets   = build_targets;
old mode 100644 (file)
new mode 100755 (executable)
index d942184..71a646e
@@ -25,4 +25,9 @@ function modBuild()
     var configFiles = libUtility.listAllFiles (".c", "device", true);
     for (var k = 0 ; k < configFiles.length; k++)
         Pkg.otherFiles[Pkg.otherFiles.length++] = configFiles[k];
+
+    /* Add all the .h files to the release package. */
+    var configFiles = libUtility.listAllFiles (".h", "device", true);
+    for (var k = 0 ; k < configFiles.length; k++)
+        Pkg.otherFiles[Pkg.otherFiles.length++] = configFiles[k];
 }
diff --git a/device/c6657/src/device_mcbsp_loopback.c b/device/c6657/src/device_mcbsp_loopback.c
new file mode 100644 (file)
index 0000000..334dcaa
--- /dev/null
@@ -0,0 +1,180 @@
+/*\r
+ * mcbsp_device.c\r
+ *\r
+ * This file contains MCBSP IP related EVM (platform) specific routines\r
+ * implementation. This file contains the board specific code for enabling \r
+ * the use of mcbsp driver, and may contain related device pre-driver \r
+ * initialization routines. The file is provided as a sample configuration \r
+ * and should be modified by customers for their own platforms and \r
+ * configurations.\r
+ *\r
+ * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/\r
+ *\r
+ *\r
+ *  Redistribution and use in source and binary forms, with or without\r
+ *  modification, are permitted provided that the following conditions\r
+ *  are met:\r
+ *\r
+ *    Redistributions of source code must retain the above copyright\r
+ *    notice, this list of conditions and the following disclaimer.\r
+ *\r
+ *    Redistributions in binary form must reproduce the above copyright\r
+ *    notice, this list of conditions and the following disclaimer in the\r
+ *    documentation and/or other materials provided with the\r
+ *    distribution.\r
+ *\r
+ *    Neither the name of Texas Instruments Incorporated nor the names of\r
+ *    its contributors may be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
+ *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\r
+ *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\r
+ *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r
+ *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r
+ *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r
+ *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r
+ *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
+ *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
+ *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+*/\r
+\r
+/* MCBSP Driver Includes. */\r
+#include <ti/drv/mcbsp/mcbsp_types.h>\r
+#include <ti/drv/mcbsp/mcbsp_drv.h>\r
+#include <ti/drv/mcbsp/mcbsp_osal.h>\r
+\r
+/* CSL MCBSP Register Layer */\r
+#include <ti/csl/cslr_mcbsp.h>\r
+\r
+/* CSL Chip Functional Layer */\r
+#include <ti/csl/csl_chip.h>\r
+\r
+\r
+/*============================================================================*/\r
+/*                           IMPORTED VARIABLES                               */\r
+/*============================================================================*/\r
+\r
+extern Mcbsp_HwInfo Mcbsp_deviceInstInfo[CSL_MCBSP_PER_CNT];\r
+extern Mcbsp_TempBuffer Mcbsp_muteBuf[CSL_MCBSP_PER_CNT];\r
+\r
+#ifdef MCBSP_LOOPJOB_ENABLE\r
+extern Mcbsp_TempBuffer Mcbsp_loopDstBuf[CSL_MCBSP_PER_CNT];\r
+extern Mcbsp_TempBuffer Mcbsp_loopSrcBuf[CSL_MCBSP_PER_CNT];\r
+#endif /* MCBSP_LOOPJOB_ENABLE */\r
+\r
+/* ========================================================================== */\r
+/*                           MODULE FUNCTIONS                                 */\r
+/* ========================================================================== */\r
+/**\r
+ * \brief   Initializes McBSP driver's data structures\r
+ *\r
+ *          This function initializes the McBSP driver's data structures\r
+ *          including instance objects and channel objects. This is the \r
+ *          MCBSP Driver Initialization API which needs to be invoked by \r
+ *          the users to initialize the MCBSP peripheral. This call is \r
+ *          *mandatory* and should be called before calling any of the \r
+ *          other driver API's.  This can be modified by customers for \r
+ *          their application and configuration.\r
+ *\r
+ * \return  None\r
+ */\r
+void McbspDevice_init(void)\r
+{\r
+    int32_t devId = 0;\r
+    void *key;\r
+\r
+    /* Begin Critical Section before accessing shared resources. */\r
+    key = Mcbsp_osalEnterMultipleCoreCriticalSection ();\r
+\r
+    /* Invalidate the Cache Contents */\r
+    Mcbsp_osalBeginMemAccess ((void *)Mcbsp_deviceInstInfo, sizeof(Mcbsp_deviceInstInfo));\r
+\r
+    /* initialize the loop job buffers and the mute buffers for all instances  */\r
+#ifdef MCBSP_LOOPJOB_ENABLE\r
+    Mcbsp_osalBeginMemAccess ((void *)Mcbsp_loopDstBuf, sizeof(Mcbsp_loopDstBuf));\r
+    Mcbsp_osalBeginMemAccess ((void *)Mcbsp_loopSrcBuf, sizeof(Mcbsp_loopSrcBuf));\r
+    memset((void *)Mcbsp_loopDstBuf,0x0,\r
+        sizeof(Mcbsp_TempBuffer) * CSL_MCBSP_PER_CNT);\r
+    memset((void *)Mcbsp_loopSrcBuf,0x0,\r
+        sizeof(Mcbsp_TempBuffer) * CSL_MCBSP_PER_CNT);\r
+#endif /* MCBSP_LOOPJOB_ENABLE */\r
+    Mcbsp_osalBeginMemAccess ((void *)Mcbsp_muteBuf, sizeof(Mcbsp_muteBuf));\r
+    memset((void *)Mcbsp_muteBuf,0x0,\r
+        sizeof(Mcbsp_TempBuffer) * CSL_MCBSP_PER_CNT);\r
+\r
+    /* initialize the information for all the device instances                */\r
+    for (devId = 0; devId < CSL_MCBSP_PER_CNT; devId++)\r
+    {\r
+        if (0 == devId)\r
+        {\r
+            /* instance 0 initialisation                                      */\r
+            Mcbsp_deviceInstInfo[devId].obj.instNum = (uint32_t)devId;\r
+            Mcbsp_deviceInstInfo[devId].obj.regs =\r
+                (CSL_McbspRegsOvly)CSL_Mcbsp0_CFG_DATA_REGS;\r
+            Mcbsp_deviceInstInfo[devId].obj.fifoRegs =\r
+                (CSL_BfifoRegsOvly)CSL_Mcbsp0_FIFO_CFG_REGS;\r
+            Mcbsp_deviceInstInfo[devId].obj.dataAddress =\r
+                (CSL_BdataRegsOvly)CSL_Mcbsp0_FIFO_DATA_REGS;\r
+            Mcbsp_deviceInstInfo[devId].obj.edmaTxEventNum =\r
+                (uint32_t)CSL_EDMA3CC2_XEVT0_MCBSP_A;\r
+            Mcbsp_deviceInstInfo[devId].obj.edmaRxEventNum =\r
+                (uint32_t)CSL_EDMA3CC2_REVT0_MCBSP_A;\r
+            Mcbsp_deviceInstInfo[devId].obj.cpuTxEventNum =\r
+                (uint32_t)CSL_INTC0_XEVT0;\r
+            Mcbsp_deviceInstInfo[devId].obj.cpuRxEventNum =\r
+                (uint32_t)CSL_INTC0_REVT0;\r
+        }\r
+        else if (1 == devId)\r
+        {\r
+            /* instance 1 initialisation                                      */\r
+            Mcbsp_deviceInstInfo[devId].obj.instNum = (uint32_t)devId;\r
+            Mcbsp_deviceInstInfo[devId].obj.regs =\r
+                (CSL_McbspRegsOvly)CSL_Mcbsp1_CFG_DATA_REGS;\r
+            Mcbsp_deviceInstInfo[devId].obj.fifoRegs =\r
+                (CSL_BfifoRegsOvly)CSL_Mcbsp1_FIFO_CFG_REGS;\r
+            Mcbsp_deviceInstInfo[devId].obj.dataAddress =\r
+                (CSL_BdataRegsOvly)CSL_Mcbsp1_FIFO_DATA_REGS;\r
+            Mcbsp_deviceInstInfo[devId].obj.edmaTxEventNum =\r
+                (uint32_t)CSL_EDMA3CC2_XEVT1_MCBSP_B;\r
+            Mcbsp_deviceInstInfo[devId].obj.edmaRxEventNum =\r
+                (uint32_t)CSL_EDMA3CC2_REVT1_MCBSP_B;\r
+            Mcbsp_deviceInstInfo[devId].obj.cpuTxEventNum =\r
+                (uint32_t)CSL_INTC0_XEVT1;\r
+            Mcbsp_deviceInstInfo[devId].obj.cpuRxEventNum =\r
+                (uint32_t)CSL_INTC0_REVT1;\r
+        }\r
+        else\r
+        {\r
+            /* do nothing                                                     */\r
+        }\r
+#ifdef MCBSP_LOOPJOB_ENABLE\r
+        /* align the buffers to the cache line size                           */\r
+        Mcbsp_loopSrcBuf[devId].scratchBuffer = (uint32_t *)\r
+            (((uint32_t)Mcbsp_loopSrcBuf[devId].scratchBuf + 0x7F) & ~0x7F);\r
+\r
+        Mcbsp_loopDstBuf[devId].scratchBuffer = (uint32_t *)\r
+            (((uint32_t)Mcbsp_loopDstBuf[devId].scratchBuf + 0x7F) & ~0x7F);\r
+\r
+        Mcbsp_osalEndMemAccess ((void *)Mcbsp_loopSrcBuf, sizeof(Mcbsp_loopSrcBuf));\r
+        Mcbsp_osalEndMemAccess ((void *)Mcbsp_loopDstBuf, sizeof(Mcbsp_loopDstBuf));\r
+#endif /* MCBSP_LOOPJOB_ENABLE */\r
+        Mcbsp_muteBuf[devId].scratchBuffer = (uint32_t *)\r
+            (((uint32_t)Mcbsp_muteBuf[devId].scratchBuf + 0x7F) & ~0x7F);\r
+        Mcbsp_osalEndMemAccess ((void *)Mcbsp_muteBuf, sizeof(Mcbsp_muteBuf));\r
+    }\r
+\r
+    /* Writeback Global Objects */\r
+    Mcbsp_osalEndMemAccess ((void *)Mcbsp_deviceInstInfo, sizeof(Mcbsp_deviceInstInfo));\r
+\r
+    /* End Critical Section */\r
+    Mcbsp_osalExitMultipleCoreCriticalSection (key);\r
+\r
+    return;\r
+}\r
+\r
+/* ========================================================================== */\r
+/*                              END OF FILE                                   */\r
+/* ========================================================================== */\r
diff --git a/mcbspver.h b/mcbspver.h
new file mode 100644 (file)
index 0000000..4685b0a
--- /dev/null
@@ -0,0 +1,68 @@
+#ifndef _MCBSPVER_H
+#define _MCBSPVER_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ============================================================= */
+/**
+ *   @file  mcbspver.h
+ *
+ *   path  ti/drv/mcbsp/mcbspver.h
+ *
+ *   @brief  MCBSP Driver Version Definitions
+ *
+ *  ============================================================
+ *  Copyright (c) Texas Instruments Incorporated 2012
+ * 
+ *  Redistribution and use in source and binary forms, with or without 
+ *  modification, are permitted provided that the following conditions 
+ *  are met:
+ *
+ *    Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ *    Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the 
+ *    documentation and/or other materials provided with the   
+ *    distribution.
+ *
+ *    Neither the name of Texas Instruments Incorporated nor the names of
+ *    its contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
+ *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
+ *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
+ *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
+ *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+ *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+*/
+
+/**
+ * @brief   This is the MCBSP Driver Version. Versions numbers are encoded in the following 
+ * format:
+ *  0xAABBCCDD -> Arch (AA); API Changes (BB); Major (CC); Minor (DD)
+ */
+#define MCBSP_DRV_VERSION_ID                     (0x01000002)
+
+/**
+ * @brief   This is the version string which describes the MCBSP driver along with the
+ * date and build information.
+ */
+#define MCBSP_DRV_VERSION_STR                    "MCBSP Driver Revision: 01.00.00.02"
+
+
+#ifdef __cplusplus
+}
+#endif
+  
+
+#endif  /* _MCBSPVER_H */
old mode 100644 (file)
new mode 100755 (executable)
index 138f643..c256078
@@ -52,7 +52,6 @@ print ("MCBSP Driver LLD Version  : " + mcbspDriverReleaseVersion);
 print ("Tools Directory           : " + toolsBaseDir);
 print ("RTSC File Name           : " + mcbspRTSCFileName);
 print ("MCBSP Driver LLD Path     : " + mcbspDriverPath);
-print ("Coverity Analysis         : " + (coverityAnalysis == "ON" ? "ON" : "OFF"));
 print ("CC LE opts                : " + C66LE.ccOpts.prefix);
 print ("CC BE opts                : " + C66BE.ccOpts.prefix);
 print ("****************************************************************");
@@ -112,73 +111,4 @@ tplt.genFile("./Settings.xdc",mcbspDriverReleaseVersion);
 var tplt = xdc.loadTemplate("./mcbspver.h.xdt");
 tplt.genFile("./mcbspver.h",mcbspDriverReleaseVersion);      
 
-/********************************************************************* 
- *********************** INSTALL-JAMMER Support **********************
- * In order to create the InstallJammer Application; we need to UNTAR
- * the package into a temporary directory. This is required because 
- * currently the InstallJammer does not support the TAR Files and thus
- * creating an UNTAR of the file. So to work-around the problem we will
- * do the following in the EPILOGUE Section:-
- *  (a) Create a temporary directory called 'tmp'
- *  (b) UNTAR the package into 'tmp'
- *  (c) Run the INSTALL Jammer on 'tmp'
- *  (d) Remove the 'tmp' directory.
- *
- * This can be done only after the 'release' package has been created.
- * Thus all of this work is being done in the EPILOGUE.
- *********************************************************************/
-if (mcbspDriverInstallType == "SETUP")
-{
-    /* Create the Install Jammer Version Variable. This is used inside the 
-     * MPI File to create the Final executable. 
-     *  The format supported is as follows:-
-     *   - setupwin32_mcbsp_<device>_<version>.exe 
-     */
-    var InstallJammerVersion = "-DVersion " + mcbspLLDPartNumber + "_" + 
-                               mcbspDriverReleaseVersion[0] + "_" + mcbspDriverReleaseVersion[1] + "_" +  
-                               mcbspDriverReleaseVersion[2] + "_" + mcbspDriverReleaseVersion[3];
-
-    /* This is the location where the tmp directory is located; this is used as 
-     * the input directory for the Install Jammer. */ 
-    var PackageBaseDir = " -DPackageBaseDir " + mcbspDriverPath + "./tmp";
-
-    /* This is the location where the MCBSP LLD will be installed by default. */
-    var WinInstallDir = " -DWinInstallDir C:/Program Files/Texas Instruments/mcbsp" + "_" + 
-                            mcbspLLDPartNumber + "_" + 
-                            mcbspDriverReleaseVersion[0] + "_" +  mcbspDriverReleaseVersion[1] + "_" +  
-                            mcbspDriverReleaseVersion[2]  + "_" + mcbspDriverReleaseVersion[3];
-
-    /* Create the actual EPILOGUE Section for the INSTALLER */
-    Pkg.makeEpilogue += "release: install_application\n";
-    Pkg.makeEpilogue += "install_application:\n";
-    Pkg.makeEpilogue += "\t @echo -------------------------------------------------------\n";
-    Pkg.makeEpilogue += "\t @echo Creating the Install\n";
-    Pkg.makeEpilogue += "\t @echo -------------------------------------------------------\n";
-    Pkg.makeEpilogue += "\t -$(MKDIR) tmp\n";
-    Pkg.makeEpilogue += "\t -$(MKDIR) tmp/packages\n";
-    Pkg.makeEpilogue += "\t -$(MKDIR) tmp/eclipse\n";
-    Pkg.makeEpilogue += "\t -$(CP) -R eclipse tmp\n";
-    Pkg.makeEpilogue += "\t tar -xf ./packages/" + mcbspRTSCFileName + ".tar" + " -Ctmp/packages \n";
-    Pkg.makeEpilogue += "\t installjammer " + InstallJammerVersion + PackageBaseDir + WinInstallDir + 
-                        " --output-dir packages/ --build install/mcbsplld.mpi\n";
-    Pkg.makeEpilogue += "\t -$(RMDIR) /S /Q tmp\n\n";
-
-    /* We need to clean after ourselves; extend the 'clean' target to take care of this. */
-    Pkg.makeEpilogue += "clean::\n";
-    Pkg.makeEpilogue += "\t $(RM) packages/*.exe\n";
-    Pkg.makeEpilogue += "\t $(RM) packages/*.bin\n";
-    Pkg.makeEpilogue += "\t $(RMDIR) /S /Q eclipse\n";
-    Pkg.makeEpilogue += "\t $(RMDIR) /S /Q tmp\n";
-}
-
-/***************************************************************************
- ********************************* MINI Package ****************************
- ***************************************************************************/
-/* Check if we need to create the mini package? */
-if (miniBuild == "ON")
-{
-    /* Create the MINI RTSC Package */
-    var libUtility = xdc.loadCapsule ("build/buildlib.xs");
-    libUtility.createMiniPkg(mcbspRTSCFileName);
-}
+    
old mode 100644 (file)
new mode 100755 (executable)
index 6c60d7d..c6259ef
 
 function getLibs(prog)
 {
-    var suffix;
+    var suffix = prog.build.target.suffix;
 
-    /* find a compatible suffix */
-    if ("findSuffix" in prog.build.target) {
-        suffix = prog.build.target.findSuffix(this);
+    var name = this.$name + ".a" + suffix;
+
+    /* Read LIBDIR variable */
+    var lib = java.lang.System.getenv("LIBDIR");
+
+    /* If NULL, default to "lib" folder */
+    if (lib == null)
+    {
+        lib = "./lib";
+    } else {
+        print ("\tSystem environment LIBDIR variable defined : " + lib);
     }
-    else {
-        suffix = prog.build.target.suffix;
+
+    /* Device types supported */
+    var deviceTypes = [
+                        'k2g',
+                        'c674x',
+                        'c6657'
+                      ];
+    
+    /* Search for the supported devices (defined in config.bld) */
+    for each(var device in deviceTypes)
+    {
+        if (this.Settings.deviceType.equals(device))
+        {
+            lib = lib + "/" + device;
+            break;
+        }
     }
 
-    var name = this.$name + ".a" + suffix;
-    var lib = "";
+    /* Get target folder, if applicable */
+    if ( java.lang.String(suffix).contains('66') )
+        lib = lib + "/c66";
 
-    lib = "lib/" + name;
+    /* Get library name with path */
+    lib = lib + "/" + name;
     if (java.io.File(this.packageBase + lib).exists()) {
-        return lib;
+       print ("\tLinking with library " + this.$name + ":" + lib);
+       return lib;
     }
 
-    /* could not find any library, throw exception */
-    throw Error("Library not found: " + name);
+    /* Could not find any library, throw exception */
+    throw new Error("\tLibrary not found: " + this.packageBase + lib);
 }
 
 /*
old mode 100644 (file)
new mode 100755 (executable)
index aad0b48..96debe7
@@ -27,27 +27,53 @@ var mcbsplldFile = [
  **************************************************************************/
 function modBuild() 
 {
-    /* Build the libraries for all the targets specified. */
-    for (var targets=0; targets < Build.targets.length; targets++)
+
+    /* Build the device independent libraries for all the targets specified. */
+    for (var targets=0; targets < socs["all"].targets.length; targets++)
     {
+        var targetFiles = mcbsplldFile.slice(); /* make copy */
         var libOptions = {
+            copts: socs["all"].copts,
+            incs:  mcbsplldIncPath, 
         };
+        libUtility.buildLibrary ("",  "false", libOptions, Pkg.name, socs["all"].targets[targets], targetFiles);
+    }
+
+    
+    /* Build library targets for device dependent SoCs */
+    for (var soc=0; soc < soc_names.length; soc++) 
+    {
+        var dev = socs[soc_names[soc]];
         
-        libUtility.buildLibrary (libOptions, "ti.drv.mcbsp", Build.targets[targets], mcbsplldFile);
+        /* do not proceed if this SoC is not configured to be built */
+        if (dev.build == "false")
+           continue;
+
+        if (dev.socDevLib == "true")
+        { 
+            var targetFiles_soc = mcbsplldFile.slice(); /* make copy */
+            targetFiles_soc.push (deviceConstruct[0]+soc_names[soc]+deviceConstruct[1]);
+            /* Build the libraries for all the targets specified. */
+            for (var targets=0; targets < dev.targets.length; targets++)
+            {
+                var libOptions = {
+                    copts: dev.copts,
+                    incs:  mcbsplldIncPath, 
+                };
+                libUtility.buildLibrary (soc_names[soc], "true", libOptions, Pkg.name, dev.targets[targets], targetFiles_soc);
+            }
+         }
+
+            
     }
 
     /* Add all the .c files to the release package. */
-    var testFiles = libUtility.listAllFiles (".c", "src");
+    var testFiles = libUtility.listAllFiles (".c", "src", true);
     for (var k = 0 ; k < testFiles.length; k++)
         Pkg.otherFiles[Pkg.otherFiles.length++] = testFiles[k];
 
     /* Add all the .h files to the release package. */
-    var testFiles = libUtility.listAllFiles (".h", "src");
-    for (var k = 0 ; k < testFiles.length; k++)
-        Pkg.otherFiles[Pkg.otherFiles.length++] = testFiles[k];
-
-    /* Add all the .c files in the device directory to the release package also */
-    var testFiles = libUtility.listAllFiles (".c", "device");
+    var testFiles = libUtility.listAllFiles (".h", "src", true);
     for (var k = 0 ; k < testFiles.length; k++)
         Pkg.otherFiles[Pkg.otherFiles.length++] = testFiles[k];
 }