device-dependent library updates for Yocto
[keystone-rtos/fault_mgmt.git] / config.bld
index 40ca95f93927ade9cdc394b3c198deec79aa36ef..fb2ca6af04225bc57003b8281d0edbcfea9c2514 100644 (file)
  *****************************************************************************/
 
 /* Get the Tools Base directory from the Environment Variable. */
-var toolsBaseDir = java.lang.System.getenv("C6X_GEN_INSTALL_PATH");
+var c66ToolsBaseDir = java.lang.System.getenv("C6X_GEN_INSTALL_PATH");
 
-/* Get the base directory for the RM LLD Package */
-var fault_mgmtlibPath = new java.io.File(".//").getPath();
+/* Get the extended debug flags for C66x, 
+ * did not change the name for backwards compatibilty */
+var extDbgFlags = java.lang.System.getenv("EXTDBGFLAGS");
 
-var fault_mgmtlibInstallType;
+/* Get the base directory for the FM Package */
+var lldPath = new java.io.File(".//").getPath();
 
-/* Read the part number from the environment variable. */
-var fault_mgmtlibPartNumber = java.lang.System.getenv("PARTNO");
+var lldInstallType;
 
-/* Read the SOC family from the environment variable. */
-var fault_mgmtlibSocFamily = java.lang.System.getenv("SOC_FAMILY");
-if (fault_mgmtlibSocFamily == null) {
-    fault_mgmtlibSocFamily = "";
-}
+/* Read the part number from the environment variable. */
+var lldPartNumber = java.lang.System.getenv("PARTNO");
 
 /* Include Path */
-var fault_mgmtlibIncludePath = " -i" + fault_mgmtlibPath + "/src" + " -i" + fault_mgmtlibPath  + " -i" + fault_mgmtlibPath + "/test";
+var lldIncludePath = " -I" + lldPath + "/src" + " -I" + lldPath  + " -I" + lldPath + "/test";
 
 /* Configure the Fault Management Release Version Information */
 /* 3 steps: remove SPACE and TAB, convert to string and split to make array */
-var fault_mgmtlibReleaseVersion = (""+Pkg.version.replace(/\s/g, "")).split(',');
+var lldReleaseVersion = (""+Pkg.version.replace(/\s/g, "")).split(',');
 
 /* Fault Management Coverity Analysis: Check the environment variable to determine if Static
  * Analysis has to be done on the Fault Management Code base or not? */
-var fault_mgmtlibCoverityAnalysis = java.lang.System.getenv("STATIC_ANALYZE");
+var lldCoverityAnalysis = java.lang.System.getenv("LLDCOV");
 
 /* 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";
+C66LE.rootDir       = c66ToolsBaseDir;
+C66LE.ccOpts.prefix  = "-mo -o3 --gcc -q -k -eo.o";
+if(extDbgFlags)     
+    C66LE.ccOpts.prefix = C66LE.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";
+C66BE.rootDir       = c66ToolsBaseDir;
+C66BE.ccOpts.prefix  = "-mo -o3 --gcc -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");
@@ -100,14 +102,152 @@ if (miniBuild == "ON")
 
 }
 
-/* List all the build targets here. */
-Build.targets = [ C66LE, C66BE ];
+/* Create the SoC List  */
+var socs = { 
+    /* device independent libraries */
+    all :
+    {
+        /* Build this library */
+        build: "true",
+        /* SoC lib enabled */
+        socDevLib: "false",
+        /* dma lib enabled */
+        dmaDevLib: "false",     
+       /* Library options */
+        copts: "",
+        /* target lists, kept blank now, would be updated based on argument lists */
+        targets: []
+    },
+   tci6614 :
+    {
+        /* this variable would be reinitialized to true, if XDCARGS contains tci6614 */
+        build: "false", 
+        /* SoC lib enabled */
+        socDevLib: "false",
+        /* dma lib enabled */
+        dmaDevLib: "false",     
+       /* Library options */
+       copts: "",
+       /* target list */
+       targets: [ C66LE, C66BE]
+    },
+   k2h :
+    {
+        /* this variable would be reinitialized to true, if XDCARGS contains k2h */
+        build: "false", 
+        /* SoC lib enabled */
+        socDevLib: "false",
+        /* dma lib enabled */
+        dmaDevLib: "false",     
+       /* Library options */
+       copts: " -DDEVICE_K2H",
+       /* target list */
+       targets: [ C66LE, C66BE]
+    },
+   k2k :
+    {
+        /* this variable would be reinitialized to true, if XDCARGS contains k2k */
+        build: "false", 
+        /* SoC lib enabled */
+        socDevLib: "false",
+        /* dma lib enabled */
+        dmaDevLib: "false",     
+       /* Library options */
+       copts: " -DDEVICE_K2K",
+       /* target list */
+       targets: [ C66LE, C66BE]
+    },
+   k2e :
+    {
+        /* this variable would be reinitialized to true, if XDCARGS contains k2e */
+        build: "false", 
+        /* SoC lib enabled */
+        socDevLib: "false",
+        /* dma lib enabled */
+        dmaDevLib: "false",     
+      /* Library options */
+       copts: " -DDEVICE_K2E",
+       /* target list */
+       targets: [ C66LE, C66BE]
+    },
+   k2l :
+    {
+        /* this variable would be reinitialized to true, if XDCARGS contains k2l */
+        build: "false", 
+         /* SoC lib enabled */
+        socDevLib: "false",
+        /* dma lib enabled */
+        dmaDevLib: "false",     
+      /* Library options */
+       copts: " -DDEVICE_K2L",
+       /* target list */
+       targets: [ C66LE, C66BE]
+    }
+};
+
+/**************************************************************************
+ * 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;
+}
+
+/* Grab input from XDCARGS */
+var buildArguments  = [];
+
+/* Construct the build arguments */
+for (var tmp=0; arguments[tmp] != undefined; tmp++)
+{
 
-/* List of all devices that combine to make the fault_mgmt library. */
-var devices = [ "tci6614/c66", "k2h/c66", "k2k/c66", "k2e/c66", "k2l/c66" ];
+    /* 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";
+        }
+    }
+    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;
+            }
+        }
+    }   
+}
 
-/* Order must exactly match list in "var devices" */
-var devicesCCOpt = [ "", " -DDEVICE_K2H", " -DDEVICE_K2K", " -DDEVICE_K2E", " -DDEVICE_K2L"];
+/* Update the Build target generated list */
+socs["all"].targets = build_targets; 
+Build.targets   = build_targets;
 
-/* Order must exactly match list in "var devices" */
-var devicesSocFamily = [ "", "KeyStone2", "KeyStone2", "KeyStone2", "KeyStone2"];