NOTICE OF RELOCATION
[keystone-rtos/rm-lld.git] / config.bld
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