]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - keystone-rtos/rm-lld.git/blobdiff - config.bld
rm: keystone 2: add A15 library build for Keystone II devices.
[keystone-rtos/rm-lld.git] / config.bld
old mode 100644 (file)
new mode 100755 (executable)
index 0d31b4e..24dbbc2
@@ -8,11 +8,31 @@
  *  and is responsible for configuration of the paths for the various tools\r
  *  required to build RM.\r
  *\r
- * Copyright (C) 2012-2013, Texas Instruments, Inc.\r
+ * Copyright (C) 2012-2015, Texas Instruments, Inc.\r
  *****************************************************************************/\r
 \r
 /* Get the Tools Base directory from the Environment Variable. */\r
-var toolsBaseDir = java.lang.System.getenv("XDCCGROOT");\r
+var c66ToolsBaseDir = java.lang.System.getenv("C6X_GEN_INSTALL_PATH");\r
+var m4ToolsBaseDir = java.lang.System.getenv("TOOLCHAIN_PATH_M4");\r
+var a15ToolsBaseDir = java.lang.System.getenv("TOOLCHAIN_PATH_A15");\r
+var a9ToolsBaseDir = java.lang.System.getenv("TOOLCHAIN_PATH_A9");\r
+var a8ToolsBaseDir = java.lang.System.getenv("TOOLCHAIN_PATH_A8");\r
+\r
+/* Get the extended debug flags for C66x, \r
+ * did not change the name for backwards compatibilty */\r
+var extDbgFlags = java.lang.System.getenv("EXTDBGFLAGS");\r
+\r
+/* Get the extended debug flags for A15 */\r
+var extDbgFlags_a15 = java.lang.System.getenv("EXTDBGFLAGS_A15");\r
+\r
+/* Get the extended debug flags for A8 */\r
+var extDbgFlags_a8 = java.lang.System.getenv("EXTDBGFLAGS_A8");\r
+\r
+/* Get the extended debug flags for A9 */\r
+var extDbgFlags_a9 = java.lang.System.getenv("EXTDBGFLAGS_A9");\r
+\r
+/* Get the extended debug flags for M4 */\r
+var extDbgFlags_m4 = java.lang.System.getenv("EXTDBGFLAGS_M4");\r
 \r
 /* Get the base directory for the RM Package */\r
 var lldPath = new java.io.File(".//").getPath();\r
@@ -23,7 +43,7 @@ var lldInstallType;
 var lldPartNumber = java.lang.System.getenv("PARTNO");\r
 \r
 /* Include Path */\r
-var lldIncludePath = " -i" + lldPath + "/src" + " -i" + lldPath  + " -i" + lldPath + "/test" + " -i" + lldPath + "/util/libfdt";\r
+var lldIncludePath = " -I" + lldPath + "/src" + " -I" + lldPath  + " -I" + lldPath + "/test" + " -I" + lldPath + "/util/libfdt";\r
 \r
 /* Configure the RM Release Version Information */\r
 /* 3 steps: remove SPACE and TAB, convert to string and split to make array */\r
@@ -35,13 +55,45 @@ var lldCoverityAnalysis = java.lang.System.getenv("LLDCOV");
 \r
 /* C66 ELF compiler configuration for Little Endian Mode. */\r
 var C66LE          = xdc.useModule('ti.targets.elf.C66');\r
-C66LE.rootDir       = toolsBaseDir;\r
+C66LE.rootDir       = c66ToolsBaseDir;\r
 C66LE.ccOpts.prefix  = "-mo -o3 --gcc -q -k -eo.o";\r
+if(extDbgFlags)     \r
+    C66LE.ccOpts.prefix = C66LE.ccOpts.prefix + " " + extDbgFlags; \r
 \r
 /* C66 ELF compiler configuration for Big Endian Mode. */\r
 var C66BE          = xdc.useModule('ti.targets.elf.C66_big_endian');\r
-C66BE.rootDir       = toolsBaseDir;\r
+C66BE.rootDir       = c66ToolsBaseDir;\r
 C66BE.ccOpts.prefix  = "-mo -o3 --gcc -q -k -eo.o -DBIGENDIAN";\r
+if(extDbgFlags)     \r
+    C66BE.ccOpts.prefix = C66BE.ccOpts.prefix + " " + extDbgFlags;\r
+\r
+/* ARMv7 A15 compiler configuration */\r
+var A15LE            = xdc.useModule('gnu.targets.arm.A15F');\r
+A15LE.rootDir        = a15ToolsBaseDir;\r
+A15LE.ccOpts.prefix  = "-mno-unaligned-access -c -mtune=cortex-a15 -marm -DDRA7xx -gstrict-dwarf -Wall -D__ARMv7 -D_LITTLE_ENDIAN=1";\r
+if(extDbgFlags_a15)     \r
+    A15LE.ccOpts.prefix = A15LE.ccOpts.prefix + " " + extDbgFlags_a15; \r
+\r
+/* ARMv7 A9 compiler configuration */\r
+var A9LE            = xdc.useModule('gnu.targets.arm.A9F');\r
+A9LE.rootDir        = a9ToolsBaseDir;\r
+A9LE.ccOpts.prefix  = "-mno-unaligned-access -c -mtune=cortex-a9 -marm -DDRA7xx -gstrict-dwarf -Wall -D__ARMv7 -D_LITTLE_ENDIAN=1";\r
+if(extDbgFlags_a9)     \r
+    A9LE.ccOpts.prefix = A9LE.ccOpts.prefix + " " + extDbgFlags_a9; \r
+\r
+/* ARMv7 A8 compiler configuration */\r
+var A8LE            = xdc.useModule('gnu.targets.arm.A8F');\r
+A8LE.rootDir        = a8ToolsBaseDir;\r
+A8LE.ccOpts.prefix  = "-mno-unaligned-access -c -mtune=cortex-a8 -marm -DDRA7xx -gstrict-dwarf -Wall -D__ARMv7 -D_LITTLE_ENDIAN=1";\r
+if(extDbgFlags_a8)     \r
+    A8LE.ccOpts.prefix = A8LE.ccOpts.prefix + " " + extDbgFlags_a8; \r
+\r
+/* M4 ELF compiler configuration for Little Endian Mode. */\r
+var M4LE            = xdc.useModule('ti.targets.arm.elf.M4');\r
+M4LE.rootDir        = m4ToolsBaseDir;\r
+M4LE.ccOpts.prefix  = "-o4 -qq -pdsw255 -DMAKEFILE_BUILD";\r
+if(extDbgFlags_m4)\r
+    M4LE.ccOpts.prefix = M4LE.ccOpts.prefix + " " + extDbgFlags_m4; \r
 \r
 /* Check if we need to run the STATIC Analysis or not? */\r
 var coverityAnalysis = java.lang.System.getenv("STATIC_ANALYZE");\r
@@ -94,5 +146,139 @@ if (miniBuild == "ON")
 \r
 }\r
 \r
-/* List all the build targets here. */\r
-Build.targets = [ C66LE, C66BE ];\r
+/* Create the SoC List  */\r
+var socs = { \r
+    /* device independent libraries */\r
+    all :\r
+    {\r
+        /* Build this library */\r
+        build: "true",\r
+        /* SoC lib enabled */\r
+        socDevLib: "false",\r
+        /* dma lib enabled */\r
+        dmaDevLib: "false",     \r
+       /* Library options */\r
+        copts: "",\r
+        /* target lists, kept blank now, would be updated based on argument lists */\r
+        targets: []\r
+    },\r
+   k2h :\r
+    {\r
+        /* this variable would be reinitialized to true, if XDCARGS contains k2h */\r
+        build: "false", \r
+        /* SoC lib enabled */\r
+        socDevLib: "false",\r
+        /* dma lib enabled */\r
+        dmaDevLib: "false",     \r
+       /* Library options */\r
+       copts: " -DSOC_K2H",\r
+       /* target list */\r
+       targets: [ C66LE, C66BE, A15LE]\r
+    },\r
+   k2k :\r
+    {\r
+        /* this variable would be reinitialized to true, if XDCARGS contains k2k */\r
+        build: "false", \r
+        /* SoC lib enabled */\r
+        socDevLib: "false",\r
+        /* dma lib enabled */\r
+        dmaDevLib: "false",     \r
+       /* Library options */\r
+       copts: " -DSOC_K2K",\r
+       /* target list */\r
+       targets: [ C66LE, C66BE, A15LE]\r
+    },\r
+   k2e :\r
+    {\r
+        /* this variable would be reinitialized to true, if XDCARGS contains k2e */\r
+        build: "false", \r
+        /* SoC lib enabled */\r
+        socDevLib: "false",\r
+        /* dma lib enabled */\r
+        dmaDevLib: "false",     \r
+      /* Library options */\r
+       copts: " -DSOC_K2E",\r
+       /* target list */\r
+       targets: [ C66LE, C66BE, A15LE]\r
+    },\r
+   k2l :\r
+    {\r
+        /* this variable would be reinitialized to true, if XDCARGS contains k2l */\r
+        build: "false", \r
+         /* SoC lib enabled */\r
+        socDevLib: "false",\r
+        /* dma lib enabled */\r
+        dmaDevLib: "false",     \r
+      /* Library options */\r
+       copts: " -DSOC_K2L",\r
+       /* target list */\r
+       targets: [ C66LE, C66BE, A15LE]\r
+    }\r
+};\r
+\r
+/**************************************************************************\r
+ * FUNCTION NAME : merge\r
+ **************************************************************************\r
+ * DESCRIPTION   :\r
+ *  The function is used to merge two arrarys\r
+ **************************************************************************/\r
+function merge() {\r
+    var args = arguments;\r
+    var hash = {};\r
+    var arr = [];\r
+    for (var i = 0; i < args.length; i++) {\r
+       for (var j = 0; j < args[i].length; j++) {\r
+         if (hash[args[i][j]] !== true) {\r
+           arr[arr.length] = args[i][j];\r
+           hash[args[i][j]] = true;\r
+         }\r
+       }\r
+     }\r
+    return arr;\r
+}\r
+\r
+/* Grab input from XDCARGS */\r
+var buildArguments  = [];\r
+\r
+/* Construct the build arguments */\r
+for (var tmp=0; arguments[tmp] != undefined; tmp++)\r
+{\r
+\r
+    /* If no arguments are provided, override for building all */\r
+    if ( ( arguments.length == 1) && (arguments[tmp].equals("./config.bld")) )\r
+        buildArguments[buildArguments.length++] = "all";\r
+    else\r
+        buildArguments[buildArguments.length++] = arguments[tmp];\r
+}\r
+\r
+/* Build targets on this build */\r
+var build_targets = [];\r
+var soc_names = Object.keys(socs);\r
+\r
+for (var i=0; i < buildArguments.length; i++ ) {\r
+    /* Build it for all targets */\r
+    if (buildArguments[i] == "all") {\r
+        for (var j = 0; j < soc_names.length; j++)  {\r
+            build_targets = merge (build_targets.slice(0), socs[soc_names[j]].targets.slice(0));\r
+            /* Set build to "true" for that SoC */\r
+            socs[soc_names[j]].build = "true";\r
+        }\r
+    }\r
+    else {\r
+        /* Skip the first argument, which is ./config.bld to get to next SoCs */\r
+        if (i == 0) continue;          \r
+        /* Set that build to true if it is found in supported build socs */\r
+        for (j = 0; j < soc_names.length; j++) {\r
+            if (buildArguments[i] == soc_names[j]) {\r
+                socs[buildArguments[i]].build = "true";\r
+                build_targets = merge (build_targets.slice(0), socs[buildArguments[i]].targets.slice(0));\r
+                break;\r
+            }\r
+        }\r
+    }   \r
+}\r
+\r
+/* Update the Build target generated list */\r
+socs["all"].targets = build_targets; \r
+Build.targets   = build_targets;\r
+\r