fbce179df86cd2c46b546a242f655cbbe950a71e
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 /* C66 ELF compiler configuration for Big Endian Mode. */\r
64 var C66BE = xdc.useModule('ti.targets.elf.C66_big_endian');\r
65 C66BE.rootDir = c66ToolsBaseDir;\r
66 C66BE.ccOpts.prefix = "-mo -o3 --gcc -q -k -eo.o -DBIGENDIAN";\r
67 if(extDbgFlags) \r
68 C66BE.ccOpts.prefix = C66BE.ccOpts.prefix + " " + extDbgFlags;\r
69 \r
70 /* ARMv7 A15 compiler configuration */\r
71 var A15LE = xdc.useModule('gnu.targets.arm.A15F');\r
72 A15LE.rootDir = a15ToolsBaseDir;\r
73 A15LE.ccOpts.prefix = "-mno-unaligned-access -c -mtune=cortex-a15 -marm -DDRA7xx -gstrict-dwarf -Wall -D__ARMv7 -D_LITTLE_ENDIAN=1";\r
74 if(extDbgFlags_a15) \r
75 A15LE.ccOpts.prefix = A15LE.ccOpts.prefix + " " + extDbgFlags_a15; \r
76 \r
77 /* ARMv7 A9 compiler configuration */\r
78 var A9LE = xdc.useModule('gnu.targets.arm.A9F');\r
79 A9LE.rootDir = a9ToolsBaseDir;\r
80 A9LE.ccOpts.prefix = "-mno-unaligned-access -c -mtune=cortex-a9 -marm -DDRA7xx -gstrict-dwarf -Wall -D__ARMv7 -D_LITTLE_ENDIAN=1";\r
81 if(extDbgFlags_a9) \r
82 A9LE.ccOpts.prefix = A9LE.ccOpts.prefix + " " + extDbgFlags_a9; \r
83 \r
84 /* ARMv7 A8 compiler configuration */\r
85 var A8LE = xdc.useModule('gnu.targets.arm.A8F');\r
86 A8LE.rootDir = a8ToolsBaseDir;\r
87 A8LE.ccOpts.prefix = "-mno-unaligned-access -c -mtune=cortex-a8 -marm -DDRA7xx -gstrict-dwarf -Wall -D__ARMv7 -D_LITTLE_ENDIAN=1";\r
88 if(extDbgFlags_a8) \r
89 A8LE.ccOpts.prefix = A8LE.ccOpts.prefix + " " + extDbgFlags_a8; \r
90 \r
91 /* M4 ELF compiler configuration for Little Endian Mode. */\r
92 var M4LE = xdc.useModule('ti.targets.arm.elf.M4');\r
93 M4LE.rootDir = m4ToolsBaseDir;\r
94 M4LE.ccOpts.prefix = "-o4 -qq -pdsw255 -DMAKEFILE_BUILD";\r
95 if(extDbgFlags_m4)\r
96 M4LE.ccOpts.prefix = M4LE.ccOpts.prefix + " " + extDbgFlags_m4; \r
97 \r
98 /* Check if we need to run the STATIC Analysis or not? */\r
99 var coverityAnalysis = java.lang.System.getenv("STATIC_ANALYZE");\r
100 \r
101 /* Setup the Coverity Filters to perform Static Analysis. */\r
102 if (coverityAnalysis == "ON") {\r
103 var coverityInstallPath = java.lang.System.getenv("STATIC_ANALYZE_PATH");\r
104 var cfgBase = xdc.getPackageBase("tisb.coverity.filters") + "cfg";\r
105 \r
106 var coverityFilter = [\r
107 {\r
108 moduleName: "tisb.coverity.filters.Coverity",\r
109 params: {\r
110 cfgDir: cfgBase, // The Coverity configuration file directory\r
111 rootDir: coverityInstallPath,\r
112 outDir: xdc.csd() + "cov_out",\r
113 analyzeLibs: true\r
114 }\r
115 },\r
116 ];\r
117 \r
118 /* Run the coverity filters on the LE Build only. */\r
119 C66LE.profiles["release"].filters = coverityFilter;\r
120 }\r
121 \r
122 /* Check if we need to create the Makefiles? */\r
123 var miniBuild = java.lang.System.getenv("MINI_PACKAGE");\r
124 \r
125 if (miniBuild == "ON")\r
126 {\r
127 /* Add the filter for simple Makefile generation. */\r
128 \r
129 var makeC66LEFilter = {\r
130 moduleName: "build.filter.Make",\r
131 params: {\r
132 makefileName: "simpleC66LE.mak",\r
133 }\r
134 };\r
135 \r
136 C66LE.profiles["release"].filters[C66LE.profiles["release"].filters.length++] = makeC66LEFilter;\r
137 \r
138 var makeC66BEFilter = {\r
139 moduleName: "build.filter.Make",\r
140 params: {\r
141 makefileName: "simpleC66BE.mak",\r
142 }\r
143 }; \r
144 \r
145 C66BE.profiles["release"].filters[C66BE.profiles["release"].filters.length++] = makeC66BEFilter;\r
146 \r
147 }\r
148 \r
149 /* Create the SoC List */\r
150 var socs = { \r
151 /* device independent libraries */\r
152 all :\r
153 {\r
154 /* Build this library */\r
155 build: "true",\r
156 /* SoC lib enabled */\r
157 socDevLib: "false",\r
158 /* dma lib enabled */\r
159 dmaDevLib: "false", \r
160 /* Library options */\r
161 copts: "",\r
162 /* target lists, kept blank now, would be updated based on argument lists */\r
163 targets: []\r
164 },\r
165 k2g :\r
166 {\r
167 /* this variable would be reinitialized to true, if XDCARGS contains k2g */\r
168 build: "false", \r
169 /* SoC lib enabled */\r
170 socDevLib: "false",\r
171 /* dma lib enabled */\r
172 dmaDevLib: "false", \r
173 /* Library options */\r
174 copts: " -DSOC_K2G",\r
175 /* target list */\r
176 targets: [ C66LE, C66BE, A15LE]\r
177 },\r
178 k2h :\r
179 {\r
180 /* this variable would be reinitialized to true, if XDCARGS contains k2h */\r
181 build: "false", \r
182 /* SoC lib enabled */\r
183 socDevLib: "false",\r
184 /* dma lib enabled */\r
185 dmaDevLib: "false", \r
186 /* Library options */\r
187 copts: " -DSOC_K2H",\r
188 /* target list */\r
189 targets: [ C66LE, C66BE, A15LE]\r
190 },\r
191 k2k :\r
192 {\r
193 /* this variable would be reinitialized to true, if XDCARGS contains k2k */\r
194 build: "false", \r
195 /* SoC lib enabled */\r
196 socDevLib: "false",\r
197 /* dma lib enabled */\r
198 dmaDevLib: "false", \r
199 /* Library options */\r
200 copts: " -DSOC_K2K",\r
201 /* target list */\r
202 targets: [ C66LE, C66BE, A15LE]\r
203 },\r
204 k2e :\r
205 {\r
206 /* this variable would be reinitialized to true, if XDCARGS contains k2e */\r
207 build: "false", \r
208 /* SoC lib enabled */\r
209 socDevLib: "false",\r
210 /* dma lib enabled */\r
211 dmaDevLib: "false", \r
212 /* Library options */\r
213 copts: " -DSOC_K2E",\r
214 /* target list */\r
215 targets: [ C66LE, C66BE, A15LE]\r
216 },\r
217 k2l :\r
218 {\r
219 /* this variable would be reinitialized to true, if XDCARGS contains k2l */\r
220 build: "false", \r
221 /* SoC lib enabled */\r
222 socDevLib: "false",\r
223 /* dma lib enabled */\r
224 dmaDevLib: "false", \r
225 /* Library options */\r
226 copts: " -DSOC_K2L",\r
227 /* target list */\r
228 targets: [ C66LE, C66BE, A15LE]\r
229 },\r
230 \r
231 c6678 :\r
232 {\r
233 /* this variable would be reinitialized to true, if XDCARGS contains k2k */\r
234 build: "false", \r
235 /* SoC lib enabled */\r
236 socDevLib: "false",\r
237 /* dma lib enabled */\r
238 dmaDevLib: "false", \r
239 /* Library options */\r
240 copts: " -DSOC_C6678",\r
241 /* target list */\r
242 targets: [ C66LE, C66BE]\r
243 },\r
244 \r
245 c6657 :\r
246 {\r
247 /* this variable would be reinitialized to true, if XDCARGS contains k2k */\r
248 build: "false", \r
249 /* SoC lib enabled */\r
250 socDevLib: "false",\r
251 /* dma lib enabled */\r
252 dmaDevLib: "false", \r
253 /* Library options */\r
254 copts: " -DSOC_C6657",\r
255 /* target list */\r
256 targets: [ C66LE, C66BE]\r
257 }\r
258 };\r
259 \r
260 /**************************************************************************\r
261 * FUNCTION NAME : merge\r
262 **************************************************************************\r
263 * DESCRIPTION :\r
264 * The function is used to merge two arrarys\r
265 **************************************************************************/\r
266 function merge() {\r
267 var args = arguments;\r
268 var hash = {};\r
269 var arr = [];\r
270 for (var i = 0; i < args.length; i++) {\r
271 for (var j = 0; j < args[i].length; j++) {\r
272 if (hash[args[i][j]] !== true) {\r
273 arr[arr.length] = args[i][j];\r
274 hash[args[i][j]] = true;\r
275 }\r
276 }\r
277 }\r
278 return arr;\r
279 }\r
280 \r
281 /* Grab input from XDCARGS */\r
282 var buildArguments = [];\r
283 \r
284 /* Construct the build arguments */\r
285 for (var tmp=0; arguments[tmp] != undefined; tmp++)\r
286 {\r
287 \r
288 /* If no arguments are provided, override for building all */\r
289 if ( ( arguments.length == 1) && (arguments[tmp].equals("./config.bld")) )\r
290 buildArguments[buildArguments.length++] = "all";\r
291 else\r
292 buildArguments[buildArguments.length++] = arguments[tmp];\r
293 }\r
294 \r
295 /* Build targets on this build */\r
296 var build_targets = [];\r
297 var soc_names = Object.keys(socs);\r
298 \r
299 for (var i=0; i < buildArguments.length; i++ ) {\r
300 /* Build it for all targets */\r
301 if (buildArguments[i] == "all") {\r
302 for (var j = 0; j < soc_names.length; j++) {\r
303 build_targets = merge (build_targets.slice(0), socs[soc_names[j]].targets.slice(0));\r
304 /* Set build to "true" for that SoC */\r
305 socs[soc_names[j]].build = "true";\r
306 }\r
307 }\r
308 else {\r
309 /* Skip the first argument, which is ./config.bld to get to next SoCs */\r
310 if (i == 0) continue; \r
311 /* Set that build to true if it is found in supported build socs */\r
312 for (j = 0; j < soc_names.length; j++) {\r
313 if (buildArguments[i] == soc_names[j]) {\r
314 socs[buildArguments[i]].build = "true";\r
315 build_targets = merge (build_targets.slice(0), socs[buildArguments[i]].targets.slice(0));\r
316 break;\r
317 }\r
318 }\r
319 } \r
320 }\r
321 \r
322 /* Update the Build target generated list */\r
323 socs["all"].targets = build_targets; \r
324 Build.targets = build_targets;\r
325 \r