1 /******************************************************************************\r
2 * FILE PURPOSE: Build configuration Script for the osal Driver\r
3 ******************************************************************************\r
4 * FILE NAME: config.bld\r
5 *\r
6 * DESCRIPTION: \r
7 * This file contains the build configuration script for the osal driver\r
8 * and is responsible for configuration of the paths for the various \r
9 * tools required to build the driver.\r
10 *\r
11 * Copyright (C) 2014-2019, 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 c674ToolsBaseDir = java.lang.System.getenv("C6X_GEN_INSTALL_PATH");\r
17 var m4ToolsBaseDir = java.lang.System.getenv("TOOLCHAIN_PATH_M4");\r
18 var a15ToolsBaseDir = java.lang.System.getenv("TOOLCHAIN_PATH_A15");\r
19 var a9ToolsBaseDir = java.lang.System.getenv("TOOLCHAIN_PATH_A9");\r
20 var arm9ToolsBaseDir = java.lang.System.getenv("TOOLCHAIN_PATH_ARM9");\r
21 var a8ToolsBaseDir = java.lang.System.getenv("TOOLCHAIN_PATH_A8");\r
22 \r
23 /* Get the extended debug flags for C66x, \r
24 * did not change the name for backwards compatibilty */\r
25 var extDbgFlags = java.lang.System.getenv("EXTDBGFLAGS");\r
26 \r
27 /* Get the extended debug flags for A15 */\r
28 var extDbgFlags_a15 = java.lang.System.getenv("EXTDBGFLAGS_A15");\r
29 \r
30 /* Get the extended debug flags for A8 */\r
31 var extDbgFlags_a8 = java.lang.System.getenv("EXTDBGFLAGS_A8");\r
32 \r
33 /* Get the extended debug flags for A9 */\r
34 var extDbgFlags_a9 = java.lang.System.getenv("EXTDBGFLAGS_A9");\r
35 \r
36 /* Get the extended debug flags for M4 */\r
37 var extDbgFlags_m4 = java.lang.System.getenv("EXTDBGFLAGS_M4");\r
38 \r
39 /* Get the base directory for the osal Socket Driver Package */\r
40 var osalDriverPath = new java.io.File(".//").getPath();\r
41 \r
42 /* Include Path */\r
43 var osalIncludePath = " -I" + osalDriverPath + "/src" + " -I" + osalDriverPath + " -I" + osalDriverPath + "/test";\r
44 \r
45 /* Configure the osal Socket Release Version Information */\r
46 /* 3 steps: remove SPACE and TAB, convert to string and split to make array */\r
47 var osalDriverReleaseVersion = (""+Pkg.version.replace(/\s/g, "")).split(',');\r
48 \r
49 /* Print the Compiler Options */\r
50 var pOpts = 1;\r
51 \r
52 /* C66 ELF compiler configuration for Little Endian Mode. */\r
53 var C66LE = xdc.useModule('ti.targets.elf.C66');\r
54 C66LE.rootDir = c66ToolsBaseDir;\r
55 C66LE.ccOpts.prefix = "-mo -o3 -q -k -eo.o";\r
56 if(extDbgFlags) \r
57 C66LE.ccOpts.prefix = C66LE.ccOpts.prefix + " " + extDbgFlags; \r
58 \r
59 /* C674 ELF compiler configuration for Little Endian Mode. */\r
60 var C674LE = xdc.useModule('ti.targets.elf.C674');\r
61 C674LE.rootDir = c674ToolsBaseDir;\r
62 C674LE.ccOpts.prefix = "-mo -o3 -q -k -eo.o";\r
63 if(extDbgFlags)\r
64 C674LE.ccOpts.prefix = C674LE.ccOpts.prefix + " " + extDbgFlags;\r
65 \r
66 /* C66 ELF compiler configuration for Big Endian Mode. */\r
67 var C66BE = xdc.useModule('ti.targets.elf.C66_big_endian');\r
68 C66BE.rootDir = c66ToolsBaseDir;\r
69 C66BE.ccOpts.prefix = "-mo -o3 -q -k -eo.o -DBIGENDIAN";\r
70 if(extDbgFlags) \r
71 C66BE.ccOpts.prefix = C66BE.ccOpts.prefix + " " + extDbgFlags;\r
72 \r
73 /* ARMv7 A15 compiler configuration */\r
74 var A15LE = xdc.useModule('gnu.targets.arm.A15F');\r
75 A15LE.rootDir = a15ToolsBaseDir;\r
76 A15LE.ccOpts.prefix = "-mno-unaligned-access -c -mtune=cortex-a15 -marm -DDRA7xx -Dxdc_target_types__=gnu/targets/arm/std.h -Dxdc_target_name__=A15F -gstrict-dwarf -Wall -D__ARMv7 -D_LITTLE_ENDIAN=1";\r
77 if(extDbgFlags_a15) \r
78 A15LE.ccOpts.prefix = A15LE.ccOpts.prefix + " " + extDbgFlags_a15; \r
79 \r
80 /* ARMv7 A9 compiler configuration */\r
81 var A9LE = xdc.useModule('gnu.targets.arm.A9F');\r
82 A9LE.rootDir = a9ToolsBaseDir;\r
83 A9LE.ccOpts.prefix = "-mno-unaligned-access -c -mtune=cortex-a9 -marm -DDRA7xx -Dxdc_target_types__=gnu/targets/arm/std.h -Dxdc_target_name__=A9F -gstrict-dwarf -Wall -D__ARMv7 -D_LITTLE_ENDIAN=1";\r
84 if(extDbgFlags_a9) \r
85 A9LE.ccOpts.prefix = A9LE.ccOpts.prefix + " " + extDbgFlags_a9; \r
86 \r
87 /* ARMv7 A8 compiler configuration */\r
88 var A8LE = xdc.useModule('gnu.targets.arm.A8F');\r
89 A8LE.rootDir = a8ToolsBaseDir;\r
90 A8LE.ccOpts.prefix = "-mno-unaligned-access -c -mtune=cortex-a8 -marm -DDRA7xx -Dxdc_target_types__=gnu/targets/arm/std.h -Dxdc_target_name__=A8F -gstrict-dwarf -Wall -D__ARMv7 -D_LITTLE_ENDIAN=1";\r
91 if(extDbgFlags_a8) \r
92 A8LE.ccOpts.prefix = A8LE.ccOpts.prefix + " " + extDbgFlags_a8; \r
93 \r
94 /* M4 ELF compiler configuration for Little Endian Mode. */\r
95 var M4LE = xdc.useModule('ti.targets.arm.elf.M4');\r
96 M4LE.rootDir = m4ToolsBaseDir;\r
97 M4LE.ccOpts.prefix = "-o4 -qq -pdsw255 -DMAKEFILE_BUILD";\r
98 if(extDbgFlags_m4)\r
99 M4LE.ccOpts.prefix = M4LE.ccOpts.prefix + " " + extDbgFlags_m4; \r
100 \r
101 /* Create the Operating System Support List */\r
102 var osTypes = { \r
103 /* TI RTOS */\r
104 tirtos :\r
105 {\r
106 /* Library options */\r
107 copts: "-DTIRTOS",\r
108 /* Souce File List */\r
109 srcFile: [\r
110 "src/tirtos/SemaphoreP_tirtos.c",\r
111 "src/tirtos/HwiP_tirtos.c",\r
112 "src/tirtos/SwiP_tirtos.c",\r
113 "src/tirtos/CacheP_tirtos.c",\r
114 "src/tirtos/Utils_tirtos.c"\r
115 ], \r
116 },\r
117 /* Bare metal */\r
118 nonos :\r
119 {\r
120 /* Library options */\r
121 copts: "-DNONOS",\r
122 /* Souce File List */\r
123 srcFile: [\r
124 "src/nonos/HwiP_nonos.c",\r
125 "src/nonos/SwiP_nonos.c",\r
126 "src/nonos/Utils_nonos.c",\r
127 "src/nonos/SemaphoreP_nonos.c",\r
128 "src/nonos/CacheP_nonos.c"\r
129 ], \r
130 }\r
131 };\r
132 \r
133 var keyStoneFamilySrcFiles = {\r
134 /* TI RTOS */\r
135 tirtos :\r
136 {\r
137 /* Souce File List */\r
138 srcFile: [\r
139 "src/v0/MuxIntcP_tirtos.c",\r
140 ]\r
141 },\r
142 /* Bare metal */\r
143 nonos :\r
144 {\r
145 /* Souce File List */\r
146 srcFile: [\r
147 "src/v0/MuxIntcP_nonos.c"\r
148 ] \r
149 }\r
150 };\r
151 \r
152 var amFamilySrcFiles = {\r
153 /* TI RTOS */\r
154 tirtos :\r
155 {\r
156 /* Souce File List */\r
157 srcFile: [\r
158 "src/v1/MuxIntcP_tirtos.c"\r
159 ] \r
160 },\r
161 /* Bare metal */\r
162 nonos :\r
163 {\r
164 /* Souce File List */\r
165 srcFile: [\r
166 "src/v1/MuxIntcP_nonos.c",\r
167 ]\r
168 }\r
169 };\r
170 \r
171 /* Create the SoC List */\r
172 var socs = { \r
173 am335x :\r
174 {\r
175 /* this variable would be reinitialized to true, if XDCARGS contains am335x */\r
176 build: "false",\r
177 /* Device Family Type */\r
178 familyType: "am",\r
179 /* SoC specific defines go here */\r
180 copts: "-DSOC_AM335x", \r
181 /* target list */\r
182 targets: [ A8LE ]\r
183 },\r
184 am437x :\r
185 {\r
186 /* this variable would be reinitialized to true, if XDCARGS contains am437x */\r
187 build: "false", \r
188 /* Device Family Type */\r
189 familyType: "am", \r
190 /* SoC specific defines go here */\r
191 copts: "-DSOC_AM437x", \r
192 /* target list */\r
193 targets: [ A9LE ]\r
194 },\r
195 am572x :\r
196 {\r
197 /* this variable would be reinitialized to true, if XDCARGS contains am572x */\r
198 build: "false", \r
199 /* Device Family Type */\r
200 familyType: "am", \r
201 /* SoC specific defines go here */\r
202 copts: "-DSOC_AM572x", \r
203 /* target list */\r
204 targets: [ C66LE, A15LE, M4LE]\r
205 },\r
206 am574x :\r
207 {\r
208 /* this variable would be reinitialized to true, if XDCARGS contains am574x */\r
209 build: "false", \r
210 /* Device Family Type */\r
211 familyType: "am", \r
212 /* SoC specific defines go here */\r
213 copts: "-DSOC_AM574x", \r
214 /* target list */\r
215 targets: [ C66LE, A15LE, M4LE]\r
216 },\r
217 am571x :\r
218 {\r
219 /* this variable would be reinitialized to true, if XDCARGS contains am571x */\r
220 build: "false", \r
221 /* Device Family Type */\r
222 familyType: "am", \r
223 /* SoC specific defines go here */\r
224 copts: "-DSOC_AM571x", \r
225 /* target list */\r
226 targets: [ C66LE, A15LE, M4LE]\r
227 }, \r
228 k2h :\r
229 {\r
230 /* this variable would be reinitialized to true, if XDCARGS contains k2h */\r
231 build: "false", \r
232 /* Device Family Type */\r
233 familyType: "keystone", \r
234 /* SoC specific defines go here */\r
235 copts: "-DSOC_K2H", \r
236 /* target list */\r
237 targets: [ C66LE, C66BE, A15LE]\r
238 }, \r
239 k2k :\r
240 {\r
241 /* this variable would be reinitialized to true, if XDCARGS contains k2k */\r
242 build: "false", \r
243 /* Device Family Type */\r
244 familyType: "keystone", \r
245 /* SoC specific defines go here */\r
246 copts: "-DSOC_K2H", \r
247 /* target list */\r
248 targets: [ C66LE, C66BE, A15LE]\r
249 }, \r
250 k2e :\r
251 {\r
252 /* this variable would be reinitialized to true, if XDCARGS contains k2e */\r
253 build: "false", \r
254 /* Device Family Type */\r
255 familyType: "keystone", \r
256 /* SoC specific defines go here */\r
257 copts: "-DSOC_K2E", \r
258 /* target list */\r
259 targets: [ C66LE, C66BE, A15LE]\r
260 }, \r
261 k2l :\r
262 {\r
263 /* this variable would be reinitialized to true, if XDCARGS contains k2l */\r
264 build: "false", \r
265 /* Device Family Type */\r
266 familyType: "keystone", \r
267 /* SoC specific defines go here */\r
268 copts: "-DSOC_K2L", \r
269 /* target list */\r
270 targets: [ C66LE, C66BE, A15LE]\r
271 }, \r
272 k2g :\r
273 {\r
274 /* this variable would be reinitialized to true, if XDCARGS contains k2g */\r
275 build: "false", \r
276 /* Device Family Type */\r
277 familyType: "keystone", \r
278 /* SoC specific defines go here */\r
279 copts: "-DSOC_K2G", \r
280 /* target list */\r
281 targets: [ C66LE, C66BE, A15LE]\r
282 },\r
283 omapl137 :\r
284 {\r
285 /* this variable would be reinitialized to true, if XDCARGS contains omapl137 */\r
286 build: "false",\r
287 /* Device Family Type */\r
288 familyType: "omap",\r
289 /* SoC specific defines go here */\r
290 copts: "-DSOC_OMAPL137",\r
291 /* target list */\r
292 targets: [ C674LE, A9LE]\r
293 },\r
294 omapl138 :\r
295 {\r
296 /* this variable would be reinitialized to true, if XDCARGS contains omapl138 */\r
297 build: "false",\r
298 /* Device Family Type */\r
299 familyType: "omap",\r
300 /* SoC specific defines go here */\r
301 copts: "-DSOC_OMAPL138",\r
302 /* target list */\r
303 targets: [ C674LE, A9LE]\r
304 },\r
305 c6678 :\r
306 {\r
307 /* this variable would be reinitialized to true, if XDCARGS contains k2l */\r
308 build: "false", \r
309 /* Device Family Type */\r
310 familyType: "keystone", \r
311 /* SoC specific defines go here */\r
312 copts: "-DSOC_C6678", \r
313 /* target list */\r
314 targets: [ C66LE, C66BE]\r
315 }, \r
316 c6657 :\r
317 {\r
318 /* this variable would be reinitialized to true, if XDCARGS contains k2l */\r
319 build: "false", \r
320 /* Device Family Type */\r
321 familyType: "keystone", \r
322 /* SoC specific defines go here */\r
323 copts: "-DSOC_C6657", \r
324 /* target list */\r
325 targets: [ C66LE, C66BE]\r
326 },\r
327 c6747 :\r
328 {\r
329 /* Build this library */\r
330 build: "false",\r
331 /* Device Family Type */\r
332 familyType: "omap",\r
333 /* SoC specific defines go here */\r
334 copts: "-DSOC_C6747",\r
335 /* target list */\r
336 targets: [ C674LE]\r
337 }\r
338 };\r
339 \r
340 /**************************************************************************\r
341 * FUNCTION NAME : merge\r
342 **************************************************************************\r
343 * DESCRIPTION :\r
344 * The function is used to merge two arrarys\r
345 **************************************************************************/\r
346 function merge() {\r
347 var args = arguments;\r
348 var hash = {};\r
349 var arr = [];\r
350 for (var i = 0; i < args.length; i++) {\r
351 for (var j = 0; j < args[i].length; j++) {\r
352 if (hash[args[i][j]] !== true) {\r
353 arr[arr.length] = args[i][j];\r
354 hash[args[i][j]] = true;\r
355 }\r
356 }\r
357 }\r
358 return arr;\r
359 }\r
360 \r
361 /* Grab input from XDCARGS */\r
362 var buildArguments = [];\r
363 \r
364 /* Construct the build arguments */\r
365 for (var tmp=0; arguments[tmp] != undefined; tmp++)\r
366 {\r
367 \r
368 /* If no arguments are provided, override for building all */\r
369 if ( ( arguments.length == 1) && (arguments[tmp].equals("./config.bld")) )\r
370 buildArguments[buildArguments.length++] = "all";\r
371 else\r
372 buildArguments[buildArguments.length++] = arguments[tmp];\r
373 }\r
374 \r
375 /* Build targets on this build */\r
376 var build_targets = [];\r
377 var soc_names = Object.keys(socs);\r
378 var os_names = Object.keys(osTypes);\r
379 \r
380 for (var i=0; i < buildArguments.length; i++ ) {\r
381 /* Build it for all targets */\r
382 if (buildArguments[i] == "all") {\r
383 for (var j = 0; j < soc_names.length; j++) {\r
384 build_targets = merge (build_targets.slice(0), socs[soc_names[j]].targets.slice(0));\r
385 /* Set build to "true" for that SoC */\r
386 socs[soc_names[j]].build = "true";\r
387 }\r
388 }\r
389 else {\r
390 /* Skip the first argument, which is ./config.bld to get to next SoCs */\r
391 if (i == 0) continue; \r
392 /* Set that build to true if it is found in supported build socs */\r
393 for (j = 0; j < soc_names.length; j++) {\r
394 if (buildArguments[i] == soc_names[j]) {\r
395 socs[buildArguments[i]].build = "true";\r
396 build_targets = merge (build_targets.slice(0), socs[buildArguments[i]].targets.slice(0));\r
397 break;\r
398 }\r
399 }\r
400 } \r
401 }\r
402 \r
403 /* Update the Build target generated list */\r
404 Build.targets = build_targets;\r