1 /******************************************************************************\r
2 * FILE PURPOSE: Build configuration Script for the RM\r
3 ******************************************************************************\r
4 * FILE NAME: config.bld\r
5 *\r
6 * DESCRIPTION: \r
7 * This file contains the build configuration script for RM \r
8 * and is responsible for configuration of the paths for the various tools\r
9 * required to build RM.\r
10 *\r
11 * Copyright (C) 2012-2015, Texas Instruments, Inc.\r
12 *****************************************************************************/\r
13 \r
14 /* Get the Tools Base directory from the Environment Variable. */\r
15 var c66ToolsBaseDir = java.lang.System.getenv("C6X_GEN_INSTALL_PATH");\r
16 var m4ToolsBaseDir = java.lang.System.getenv("TOOLCHAIN_PATH_M4");\r
17 var a15ToolsBaseDir = java.lang.System.getenv("TOOLCHAIN_PATH_A15");\r
18 var a9ToolsBaseDir = java.lang.System.getenv("TOOLCHAIN_PATH_A9");\r
19 var a8ToolsBaseDir = java.lang.System.getenv("TOOLCHAIN_PATH_A8");\r
20 \r
21 /* Get the extended debug flags for C66x, \r
22 * did not change the name for backwards compatibilty */\r
23 var extDbgFlags = java.lang.System.getenv("EXTDBGFLAGS");\r
24 \r
25 /* Get the extended debug flags for A15 */\r
26 var extDbgFlags_a15 = java.lang.System.getenv("EXTDBGFLAGS_A15");\r
27 \r
28 /* Get the extended debug flags for A8 */\r
29 var extDbgFlags_a8 = java.lang.System.getenv("EXTDBGFLAGS_A8");\r
30 \r
31 /* Get the extended debug flags for A9 */\r
32 var extDbgFlags_a9 = java.lang.System.getenv("EXTDBGFLAGS_A9");\r
33 \r
34 /* Get the extended debug flags for M4 */\r
35 var extDbgFlags_m4 = java.lang.System.getenv("EXTDBGFLAGS_M4");\r
36 \r
37 /* Get the base directory for the RM Package */\r
38 var lldPath = new java.io.File(".//").getPath();\r
39 \r
40 var lldInstallType;\r
41 \r
42 /* Read the part number from the environment variable. */\r
43 var lldPartNumber = java.lang.System.getenv("PARTNO");\r
44 \r
45 /* Include Path */\r
46 var lldIncludePath = " -I" + lldPath + "/src" + " -I" + lldPath + " -I" + lldPath + "/test" + " -I" + lldPath + "/util/libfdt";\r
47 \r
48 /* Configure the RM Release Version Information */\r
49 /* 3 steps: remove SPACE and TAB, convert to string and split to make array */\r
50 var lldReleaseVersion = (""+Pkg.version.replace(/\s/g, "")).split(',');\r
51 \r
52 /* RM Coverity Analysis: Check the environment variable to determine if Static\r
53 * Analysis has to be done on the RM Code base or not? */\r
54 var lldCoverityAnalysis = java.lang.System.getenv("LLDCOV");\r
55 \r
56 /* C66 ELF compiler configuration for Little Endian Mode. */\r
57 var C66LE = xdc.useModule('ti.targets.elf.C66');\r
58 C66LE.rootDir = c66ToolsBaseDir;\r
59 C66LE.ccOpts.prefix = "-mo -o3 --gcc -q -k -eo.o";\r
60 if(extDbgFlags) \r
61 C66LE.ccOpts.prefix = C66LE.ccOpts.prefix + " " + extDbgFlags; \r
62 \r
63 /* ARMv7 A15 compiler configuration */\r
64 var A15LE = xdc.useModule('gnu.targets.arm.A15F');\r
65 A15LE.rootDir = a15ToolsBaseDir;\r
66 A15LE.ccOpts.prefix = "-mno-unaligned-access -c -mtune=cortex-a15 -marm -DDRA7xx -gstrict-dwarf -Wall -D__ARMv7 -D_LITTLE_ENDIAN=1";\r
67 if(extDbgFlags_a15) \r
68 A15LE.ccOpts.prefix = A15LE.ccOpts.prefix + " " + extDbgFlags_a15; \r
69 \r
70 /* ARMv7 A9 compiler configuration */\r
71 var A9LE = xdc.useModule('gnu.targets.arm.A9F');\r
72 A9LE.rootDir = a9ToolsBaseDir;\r
73 A9LE.ccOpts.prefix = "-mno-unaligned-access -c -mtune=cortex-a9 -marm -DDRA7xx -gstrict-dwarf -Wall -D__ARMv7 -D_LITTLE_ENDIAN=1";\r
74 if(extDbgFlags_a9) \r
75 A9LE.ccOpts.prefix = A9LE.ccOpts.prefix + " " + extDbgFlags_a9; \r
76 \r
77 /* ARMv7 A8 compiler configuration */\r
78 var A8LE = xdc.useModule('gnu.targets.arm.A8F');\r
79 A8LE.rootDir = a8ToolsBaseDir;\r
80 A8LE.ccOpts.prefix = "-mno-unaligned-access -c -mtune=cortex-a8 -marm -DDRA7xx -gstrict-dwarf -Wall -D__ARMv7 -D_LITTLE_ENDIAN=1";\r
81 if(extDbgFlags_a8) \r
82 A8LE.ccOpts.prefix = A8LE.ccOpts.prefix + " " + extDbgFlags_a8; \r
83 \r
84 /* M4 ELF compiler configuration for Little Endian Mode. */\r
85 var M4LE = xdc.useModule('ti.targets.arm.elf.M4');\r
86 M4LE.rootDir = m4ToolsBaseDir;\r
87 M4LE.ccOpts.prefix = "-o4 -qq -pdsw255 -DMAKEFILE_BUILD";\r
88 if(extDbgFlags_m4)\r
89 M4LE.ccOpts.prefix = M4LE.ccOpts.prefix + " " + extDbgFlags_m4; \r
90 \r
91 /* Check if we need to run the STATIC Analysis or not? */\r
92 var coverityAnalysis = java.lang.System.getenv("STATIC_ANALYZE");\r
93 \r
94 /* Setup the Coverity Filters to perform Static Analysis. */\r
95 if (coverityAnalysis == "ON") {\r
96 var coverityInstallPath = java.lang.System.getenv("STATIC_ANALYZE_PATH");\r
97 var cfgBase = xdc.getPackageBase("tisb.coverity.filters") + "cfg";\r
98 \r
99 var coverityFilter = [\r
100 {\r
101 moduleName: "tisb.coverity.filters.Coverity",\r
102 params: {\r
103 cfgDir: cfgBase, // The Coverity configuration file directory\r
104 rootDir: coverityInstallPath,\r
105 outDir: xdc.csd() + "cov_out",\r
106 analyzeLibs: true\r
107 }\r
108 },\r
109 ];\r
110 \r
111 /* Run the coverity filters on the LE Build only. */\r
112 C66LE.profiles["release"].filters = coverityFilter;\r
113 }\r
114 \r
115 /* Check if we need to create the Makefiles? */\r
116 var miniBuild = java.lang.System.getenv("MINI_PACKAGE");\r
117 \r
118 if (miniBuild == "ON")\r
119 {\r
120 /* Add the filter for simple Makefile generation. */\r
121 \r
122 var makeC66LEFilter = {\r
123 moduleName: "build.filter.Make",\r
124 params: {\r
125 makefileName: "simpleC66LE.mak",\r
126 }\r
127 };\r
128 \r
129 C66LE.profiles["release"].filters[C66LE.profiles["release"].filters.length++] = makeC66LEFilter;\r
130 \r
131 }\r
132 \r
133 /* Create the SoC List */\r
134 var socs = { \r
135 /* device independent libraries */\r
136 all :\r
137 {\r
138 /* Build this library */\r
139 build: "true",\r
140 /* SoC lib enabled */\r
141 socDevLib: "false",\r
142 /* dma lib enabled */\r
143 dmaDevLib: "false", \r
144 /* Library options */\r
145 copts: "",\r
146 /* target lists, kept blank now, would be updated based on argument lists */\r
147 targets: []\r
148 },\r
149 k2g :\r
150 {\r
151 /* this variable would be reinitialized to true, if XDCARGS contains k2g */\r
152 build: "false", \r
153 /* SoC lib enabled */\r
154 socDevLib: "false",\r
155 /* dma lib enabled */\r
156 dmaDevLib: "false", \r
157 /* Library options */\r
158 copts: " -DSOC_K2G",\r
159 /* target list */\r
160 targets: [ C66LE, A15LE]\r
161 },\r
162 k2h :\r
163 {\r
164 /* this variable would be reinitialized to true, if XDCARGS contains k2h */\r
165 build: "false", \r
166 /* SoC lib enabled */\r
167 socDevLib: "false",\r
168 /* dma lib enabled */\r
169 dmaDevLib: "false", \r
170 /* Library options */\r
171 copts: " -DSOC_K2H",\r
172 /* target list */\r
173 targets: [ C66LE, A15LE]\r
174 },\r
175 k2k :\r
176 {\r
177 /* this variable would be reinitialized to true, if XDCARGS contains k2k */\r
178 build: "false", \r
179 /* SoC lib enabled */\r
180 socDevLib: "false",\r
181 /* dma lib enabled */\r
182 dmaDevLib: "false", \r
183 /* Library options */\r
184 copts: " -DSOC_K2K",\r
185 /* target list */\r
186 targets: [ C66LE, A15LE]\r
187 },\r
188 k2e :\r
189 {\r
190 /* this variable would be reinitialized to true, if XDCARGS contains k2e */\r
191 build: "false", \r
192 /* SoC lib enabled */\r
193 socDevLib: "false",\r
194 /* dma lib enabled */\r
195 dmaDevLib: "false", \r
196 /* Library options */\r
197 copts: " -DSOC_K2E",\r
198 /* target list */\r
199 targets: [ C66LE, A15LE]\r
200 },\r
201 k2l :\r
202 {\r
203 /* this variable would be reinitialized to true, if XDCARGS contains k2l */\r
204 build: "false", \r
205 /* SoC lib enabled */\r
206 socDevLib: "false",\r
207 /* dma lib enabled */\r
208 dmaDevLib: "false", \r
209 /* Library options */\r
210 copts: " -DSOC_K2L",\r
211 /* target list */\r
212 targets: [ C66LE, A15LE]\r
213 },\r
214 \r
215 c6678 :\r
216 {\r
217 /* this variable would be reinitialized to true, if XDCARGS contains k2k */\r
218 build: "false", \r
219 /* SoC lib enabled */\r
220 socDevLib: "false",\r
221 /* dma lib enabled */\r
222 dmaDevLib: "false", \r
223 /* Library options */\r
224 copts: " -DSOC_C6678",\r
225 /* target list */\r
226 targets: [ C66LE]\r
227 },\r
228 \r
229 c6657 :\r
230 {\r
231 /* this variable would be reinitialized to true, if XDCARGS contains k2k */\r
232 build: "false", \r
233 /* SoC lib enabled */\r
234 socDevLib: "false",\r
235 /* dma lib enabled */\r
236 dmaDevLib: "false", \r
237 /* Library options */\r
238 copts: " -DSOC_C6657",\r
239 /* target list */\r
240 targets: [ C66LE]\r
241 }\r
242 };\r
243 \r
244 /**************************************************************************\r
245 * FUNCTION NAME : merge\r
246 **************************************************************************\r
247 * DESCRIPTION :\r
248 * The function is used to merge two arrarys\r
249 **************************************************************************/\r
250 function merge() {\r
251 var args = arguments;\r
252 var hash = {};\r
253 var arr = [];\r
254 for (var i = 0; i < args.length; i++) {\r
255 for (var j = 0; j < args[i].length; j++) {\r
256 if (hash[args[i][j]] !== true) {\r
257 arr[arr.length] = args[i][j];\r
258 hash[args[i][j]] = true;\r
259 }\r
260 }\r
261 }\r
262 return arr;\r
263 }\r
264 \r
265 /* Grab input from XDCARGS */\r
266 var buildArguments = [];\r
267 \r
268 /* Construct the build arguments */\r
269 for (var tmp=0; arguments[tmp] != undefined; tmp++)\r
270 {\r
271 \r
272 /* If no arguments are provided, override for building all */\r
273 if ( ( arguments.length == 1) && (arguments[tmp].equals("./config.bld")) )\r
274 buildArguments[buildArguments.length++] = "all";\r
275 else\r
276 buildArguments[buildArguments.length++] = arguments[tmp];\r
277 }\r
278 \r
279 /* Build targets on this build */\r
280 var build_targets = [];\r
281 var soc_names = Object.keys(socs);\r
282 \r
283 for (var i=0; i < buildArguments.length; i++ ) {\r
284 /* Build it for all targets */\r
285 if (buildArguments[i] == "all") {\r
286 for (var j = 0; j < soc_names.length; j++) {\r
287 build_targets = merge (build_targets.slice(0), socs[soc_names[j]].targets.slice(0));\r
288 /* Set build to "true" for that SoC */\r
289 socs[soc_names[j]].build = "true";\r
290 }\r
291 }\r
292 else {\r
293 /* Skip the first argument, which is ./config.bld to get to next SoCs */\r
294 if (i == 0) continue; \r
295 /* Set that build to true if it is found in supported build socs */\r
296 for (j = 0; j < soc_names.length; j++) {\r
297 if (buildArguments[i] == soc_names[j]) {\r
298 socs[buildArguments[i]].build = "true";\r
299 build_targets = merge (build_targets.slice(0), socs[buildArguments[i]].targets.slice(0));\r
300 break;\r
301 }\r
302 }\r
303 } \r
304 }\r
305 \r
306 /* Update the Build target generated list */\r
307 socs["all"].targets = build_targets; \r
308 Build.targets = build_targets;\r
309 \r