NOTICE OF RELOCATION
[keystone-rtos/pa-lld.git] / config.bld
1 /******************************************************************************
2  * FILE PURPOSE: Build configuration Script for the PA LLD
3  ******************************************************************************
4  * FILE NAME: config.bld
5  *
6  * DESCRIPTION: 
7  *  This file contains the build configuration script for the PA LLD
8  *  and is responsible for configuration of the paths for the various 
9  *  tools required to build the driver.
10  *
11  * Copyright (C) 2009-2015, Texas Instruments, Inc.
12  *****************************************************************************/
14 /* Get the Tools Base directory from the Environment Variable. */
15 var xdcTargetType = java.lang.System.getenv("XDCTARGET");
16 var c66ToolsBaseDir = java.lang.System.getenv("C6X_GEN_INSTALL_PATH");
17 var a15ToolsBaseDir = java.lang.System.getenv("TOOLCHAIN_PATH_A15");
19 /* Get the extended debug flags for C66x, 
20  * did not change the name for backwards compatibilty */
21 var extDbgFlags = java.lang.System.getenv("EXTDBGFLAGS");
23 /* Get the extended debug flags for A15 */
24 var extDbgFlags_a15 = java.lang.System.getenv("EXTDBGFLAGS_A15");
26 /* Check if we need to create the Makefiles? */
27 var miniBuild = java.lang.System.getenv("MINI_PACKAGE");
29 /* Get the extended debug flags */
30 var extDbgFlags = java.lang.System.getenv("EXTDBGFLAGS");
32 /* Get the base directory for the PA LLD Package */
33 var palldPath = new java.io.File(".//").getPath();
35 /* This is the part Number for which the PA LLD is being created */
36 var palldPartNumber = java.lang.System.getenv("PARTNO");
38 if(palldPartNumber == null)
39 {
40     palldPartNumber = "c6616";
41 }
43 /* Include Path */
44 var palldIncPath = " -I" + palldPath;
46 /* Configure the PA LLD Version Information */
47 /* 3 steps: remove SPACE and TAB, convert to string and split to make array */
48 var palldReleaseVersion = (""+Pkg.version.replace(/\s/g, "")).split(',');
50 /* PA LLD Coverity Analysis: Check the environment variable to determine if Static
51  * Analysis has to be done on the driver Code base or not? */
52 var paCoverityAnalysis = java.lang.System.getenv("STATIC_ANALYZE");
54     /* C66 ELF compiler configuration for Little Endian Mode. */
55     var C66LE                = xdc.useModule('ti.targets.elf.C66');
56     C66LE.rootDir            = c66ToolsBaseDir;
57     C66LE.ccOpts.prefix      = "-mo -o3 -q -k -eo.o"; 
58     if(extDbgFlags)     
59         C66LE.ccOpts.prefix  = C66LE.ccOpts.prefix + " " + extDbgFlags; 
61 /* ARMv7 A15 compiler configuration */
62     var A15LE                = xdc.useModule('gnu.targets.arm.A15F');
63     A15LE.rootDir            = a15ToolsBaseDir; 
64     A15LE.ccOpts.prefix      = "-mno-unaligned-access -c -mtune=cortex-a15 -marm -DDRA7xx -gstrict-dwarf -Wall -D__ARMv7 -D_LITTLE_ENDIAN=1";  
65     if(extDbgFlags_a15)     
66         A15LE.ccOpts.prefix  = A15LE.ccOpts.prefix + " " + extDbgFlags_a15; 
68 /* Check if we need to run the STATIC Analysis or not? */
69 var coverityAnalysis = java.lang.System.getenv("STATIC_ANALYZE");
71 /* Setup the Coverity Filters to perform Static Analysis. */
72 if (coverityAnalysis == "ON") {
73     var file = xdc.module('xdc.services.io.File');
74         var coverityInstallPath = java.lang.System.getenv("STATIC_ANALYZE_PATH");
75         
76     var cfgBase = file.getDOSPath(xdc.getPackageBase("tisb.coverity.filters")) + "cfg";
78     var coverityFilter = [
79     {
80         moduleName: "tisb.coverity.filters.Coverity",
81         params: {
82             cfgDir:  cfgBase,  // The Coverity configuration file directory
83             rootDir: coverityInstallPath,
84             outDir: xdc.csd() + "cov_out",
85             analyzeLibs: true
86         }
87     },
88     ];
90     /* Run the coverity filters on the LE Build only. */
91     C66LE.profiles["release"].filters = coverityFilter;
92 }
94 if (miniBuild == "ON") {
96     var makeC66LEFilter = {
97         moduleName: "build.filter.Make",
98         params: {
99           makefileName: "simpleC66LE.mak",
100         }
101     };
103     C66LE.profiles["release"].filters[C66LE.profiles["release"].filters.length++] = makeC66LEFilter;
108 for ( i=0; i < arguments.length; i++)
110   print ("ARG[" + i + "] = " + arguments[i]);
113 /* Create the SoC List  */
114 var socs = { 
115     /* device independent libraries */
116     all :
117     {
118         /* Build this library */
119         build: "true",
120         /* target lists, kept blank now, would be updated based on argument lists */
121         targets: []
122     },
123     k2h :
124     {
125         /* Build this library */
126         build: "false",
127         /* target list */
128         targets: [ C66LE, A15LE ]
129     },
130     k2k :
131     {
132         /* Build this library */
133         build: "false",
134         /* target list */
135         targets: [ C66LE, A15LE ]
136     },
137     k2e:
138     {
139         /* Build this library */
140         build: "false",
141         /* target list */
142         targets: [ C66LE, A15LE ]
143     },
144     k2l :
145     {
146         /* Build this library */
147         build: "false",
148         /* target list */
149         targets: [ C66LE, A15LE ]
150     },
151     c6678 :
152     {
153         /* Build this library */
154         build: "false",
155         /* target list */
156         targets: [ C66LE ]
157     }
158 };
160 /**************************************************************************
161  * FUNCTION NAME : merge
162  **************************************************************************
163  * DESCRIPTION   :
164  *  The function is used to merge two arrarys
165  **************************************************************************/
166 function merge() {
167     var args = arguments;
168     var hash = {};
169     var arr = [];
170     for (var i = 0; i < args.length; i++) {
171        for (var j = 0; j < args[i].length; j++) {
172          if (hash[args[i][j]] !== true) {
173            arr[arr.length] = args[i][j];
174            hash[args[i][j]] = true;
175          }
176        }
177      }
178     return arr;
181 /* Grab input from XDCARGS */
182 var buildArguments  = [];
184 /* Construct the build arguments */
185 for (var tmp=0; arguments[tmp] != undefined; tmp++)
188     /* If no arguments are provided, override for building all */
189     if ( ( arguments.length == 1) && (arguments[tmp].equals("./config.bld")) )
190         buildArguments[buildArguments.length++] = "all";
191     else
192         buildArguments[buildArguments.length++] = arguments[tmp];
195 /* Build targets on this build */
196 var build_targets = [];
197 var soc_names = Object.keys(socs);
199 for (var i=0; i < buildArguments.length; i++ ) {
200     /* Build it for all targets */
201     if (buildArguments[i] == "all") {
202         for (var j = 0; j < soc_names.length; j++)  {
203             build_targets = merge (build_targets.slice(0), socs[soc_names[j]].targets.slice(0));
204             /* Set build to "true" for that SoC */
205             socs[soc_names[j]].build = "true";
206         }
207     }
208     else {
209         /* Skip the first argument, which is ./config.bld to get to next SoCs */
210         if (i == 0) continue;          
211         /* Set that build to true if it is found in supported build socs */
212         for (j = 0; j < soc_names.length; j++) {
213             if (buildArguments[i] == soc_names[j]) {
214                 socs[buildArguments[i]].build = "true";
215                 build_targets = merge (build_targets.slice(0), socs[buildArguments[i]].targets.slice(0));
216                 break;
217             }
218         }
219     }   
222 /* Update the Build target generated list */
223 socs["all"].targets = build_targets; 
224 Build.targets   = build_targets;