CATREQ-2702: Descoping c6x big-endian targets
[keystone-rtos/fault_mgmt.git] / config.bld
1 /******************************************************************************
2  * FILE PURPOSE: Build configuration Script for the Fault Management
3  ******************************************************************************
4  * FILE NAME: config.bld
5  *
6  * DESCRIPTION: 
7  *  This file contains the build configuration script for Fault Management
8  *  and is responsible for configuration of the paths for the various tools
9  *  required to build Fault Management.
10  *
11  * Copyright (C) 2012-2015, Texas Instruments, Inc.
12  *****************************************************************************/
14 /* Get the Tools Base directory from the Environment Variable. */
15 var c66ToolsBaseDir = java.lang.System.getenv("C6X_GEN_INSTALL_PATH");
17 /* Get the extended debug flags for C66x, 
18  * did not change the name for backwards compatibilty */
19 var extDbgFlags = java.lang.System.getenv("EXTDBGFLAGS");
21 /* Get the base directory for the FM Package */
22 var lldPath = new java.io.File(".//").getPath();
24 var lldInstallType;
26 /* Read the part number from the environment variable. */
27 var lldPartNumber = java.lang.System.getenv("PARTNO");
29 /* Include Path */
30 var lldIncludePath = " -I" + lldPath + "/src" + " -I" + lldPath  + " -I" + lldPath + "/test";
32 /* Configure the Fault Management Release Version Information */
33 /* 3 steps: remove SPACE and TAB, convert to string and split to make array */
34 var lldReleaseVersion = (""+Pkg.version.replace(/\s/g, "")).split(',');
36 /* Fault Management Coverity Analysis: Check the environment variable to determine if Static
37  * Analysis has to be done on the Fault Management Code base or not? */
38 var lldCoverityAnalysis = java.lang.System.getenv("LLDCOV");
40 /* C66 ELF compiler configuration for Little Endian Mode. */
41 var C66LE          = xdc.useModule('ti.targets.elf.C66');
42 C66LE.rootDir       = c66ToolsBaseDir;
43 C66LE.ccOpts.prefix  = "-mo -o3 --gcc -q -k -eo.o";
44 if(extDbgFlags)     
45     C66LE.ccOpts.prefix = C66LE.ccOpts.prefix + " " + extDbgFlags; 
47 /* Check if we need to run the STATIC Analysis or not? */
48 var coverityAnalysis = java.lang.System.getenv("STATIC_ANALYZE");
50 /* Setup the Coverity Filters to perform Static Analysis. */
51 if (coverityAnalysis == "ON") {
52     var coverityInstallPath = java.lang.System.getenv("STATIC_ANALYZE_PATH");
53     var cfgBase = xdc.getPackageBase("tisb.coverity.filters") + "cfg";
55     var coverityFilter = [
56     {
57         moduleName: "tisb.coverity.filters.Coverity",
58         params: {
59             cfgDir:  cfgBase,  // The Coverity configuration file directory
60             rootDir: coverityInstallPath,
61             outDir: xdc.csd() + "cov_out",
62             analyzeLibs: true
63         }
64     },
65     ];
67     /* Run the coverity filters on the LE Build only. */
68     C66LE.profiles["release"].filters = coverityFilter;
69 }
71 /* Check if we need to create the Makefiles? */
72 var miniBuild = java.lang.System.getenv("MINI_PACKAGE");
74 if (miniBuild == "ON")
75 {
76     /* Add the filter for simple Makefile generation. */
78     var makeC66LEFilter = {
79         moduleName: "build.filter.Make",
80         params: {
81           makefileName: "simpleC66LE.mak",
82         }
83     };
85     C66LE.profiles["release"].filters[C66LE.profiles["release"].filters.length++] = makeC66LEFilter;
87 }
89 /* soc name (am?) is inserted between first an second element of this
90    list to construct device file name for each device */
91 var deviceConstruct = [ "device/", "/src/fm_device.c" ];
93 /* Create the SoC List  */
94 var socs = { 
95     /* device independent libraries */
96     all :
97     {
98         /* Currently, only device dependent libraries supported */
99         build: "false",
100         /* SoC lib enabled */
101         socDevLib: "false",
102         /* Library options */
103         copts: "",
104         /* target lists, kept blank now, would be updated based on argument lists */
105         targets: []
106     },
107     tci6614 :
108     {
109         /* This variable will be reinitialized to true, if XDCARGS contains tci6614 */
110         build: "false", 
111         /* SoC lib enabled */
112         socDevLib: "true",
113         /* Library options */
114         copts: "",
115         /* target list */
116         targets: [ C66LE ]
117     },
118     k2h :
119     {
120         /* This variable will be reinitialized to true, if XDCARGS contains k2h */
121         build: "false", 
122         /* SoC lib enabled */
123         socDevLib: "true",
124         /* Library options */
125         copts: " -DDEVICE_K2H",
126         /* target list */
127         targets: [ C66LE ]
128     },
129     k2k :
130     {
131         /* This variable will be reinitialized to true, if XDCARGS contains k2k */
132         build: "false", 
133         /* SoC lib enabled */
134         socDevLib: "true",
135         /* Library options */
136         copts: " -DDEVICE_K2K",
137         /* target list */
138         targets: [ C66LE ]
139     },
140     k2e :
141     {
142         /* This variable will be reinitialized to true, if XDCARGS contains k2e */
143         build: "false", 
144         /* SoC lib enabled */
145         socDevLib: "true",
146         /* Library options */
147         copts: " -DDEVICE_K2E",
148         /* target list */
149         targets: [ C66LE ]
150     },
151     k2l :
152     {
153         /* This variable will be reinitialized to true, if XDCARGS contains k2l */
154         build: "false", 
155         /* SoC lib enabled */
156         socDevLib: "true",
157         /* Library options */
158         copts: " -DDEVICE_K2L",
159         /* target list */
160         targets: [ C66LE ]
161     }
162 };
164 /**************************************************************************
165  * FUNCTION NAME : merge
166  **************************************************************************
167  * DESCRIPTION   :
168  *  The function is used to merge two arrarys
169  **************************************************************************/
170 function merge() {
171     var args = arguments;
172     var hash = {};
173     var arr = [];
174     for (var i = 0; i < args.length; i++) {
175        for (var j = 0; j < args[i].length; j++) {
176          if (hash[args[i][j]] !== true) {
177            arr[arr.length] = args[i][j];
178            hash[args[i][j]] = true;
179          }
180        }
181      }
182     return arr;
185 /* Grab input from XDCARGS */
186 var buildArguments  = [];
188 /* Construct the build arguments */
189 for (var tmp=0; arguments[tmp] != undefined; tmp++)
192     /* If no arguments are provided, override for building all */
193     if ( ( arguments.length == 1) && (arguments[tmp].equals("./config.bld")) )
194         buildArguments[buildArguments.length++] = "all";
195     else
196         buildArguments[buildArguments.length++] = arguments[tmp];
199 /* Build targets on this build */
200 var build_targets = [];
201 var soc_names = Object.keys(socs);
203 for (var i=0; i < buildArguments.length; i++ ) {
204     /* Build it for all targets */
205     if (buildArguments[i] == "all") {
206         for (var j = 0; j < soc_names.length; j++)  {
207             build_targets = merge (build_targets.slice(0), socs[soc_names[j]].targets.slice(0));
208             /* Set build to "true" for that SoC */
209             socs[soc_names[j]].build = "true";
210         }
211     }
212     else {
213         /* Skip the first argument, which is ./config.bld to get to next SoCs */
214         if (i == 0) continue;          
215         /* Set that build to true if it is found in supported build socs */
216         for (j = 0; j < soc_names.length; j++) {
217             if (buildArguments[i] == soc_names[j]) {
218                 socs[buildArguments[i]].build = "true";
219                 build_targets = merge (build_targets.slice(0), socs[buildArguments[i]].targets.slice(0));
220                 break;
221             }
222         }
223     }   
226 /* Update the Build target generated list */
227 socs["all"].targets = build_targets; 
228 Build.targets   = build_targets;