add files to build ducati (m3) side firmware
[gstreamer-omap:ndecs-libdce.git] / ducati / build / common.bld
1 /*\r
2  *  Copyright 2009 by Texas Instruments Incorporated.\r
3  *\r
4  *  All rights reserved. Property of Texas Instruments Incorporated.\r
5  *  Restricted rights to use, duplicate or disclose this code are\r
6  *  granted through contract.\r
7  *\r
8  */\r
9 \r
10 /*\r
11  *  ======== common.bld ========\r
12  *\r
13  */\r
14 \r
15 \r
16 /* \r
17  *  ======== getCores ========\r
18  *  Determines which cores to build for.\r
19  *\r
20  *  Any argument in XDCARGS which does not contain core= is treated\r
21  *  as a core name. This way build for multiple cores can be specified by\r
22  *  separating them with a space. \r
23  */\r
24 function getCores(xdcArgs)\r
25 {\r
26     var coreNames = new Array();\r
27     \r
28     /* Check for any XDCARGS with core=; these are the corenames */\r
29     for (var i = 0; i < xdcArgs.length; i++) {\r
30         if (xdcArgs[i].match(/core=/)) {\r
31             coreNames.push(xdcArgs[i].substr(5));\r
32         }\r
33     }\r
34 \r
35     return coreNames;\r
36 }\r
37 \r
38 \r
39 /* \r
40  *  ======== getProfiles ========\r
41  *  Determines which profiles to build for.\r
42  *\r
43  *  Any argument in XDCARGS which does not contain platform= is treated\r
44  *  as a profile. This way multiple build profiles can be specified by\r
45  *  separating them with a space. \r
46  */\r
47 function getProfiles(xdcArgs)\r
48 {\r
49     var profiles = new Array();\r
50     \r
51     /* Check for any XDCARGS with profile=; these are profiles. */\r
52     for (var i = 0; i < xdcArgs.length; i++) {\r
53         if (xdcArgs[i].match(/profile=/)) {\r
54             profiles.push(xdcArgs[i].substr(8));\r
55         }\r
56     }\r
57 \r
58     return profiles;\r
59 }\r
60 \r
61 function getBuildModes(xdcArgs)\r
62 {\r
63     var buildModes = new Array();\r
64     \r
65     /* Check for any XDCARGS with buildMode=; these are specific \r
66        build configuration */\r
67     for (var i = 0; i < xdcArgs.length; i++) {\r
68         if (xdcArgs[i].match(/buildMode=/)) {\r
69             buildModes.push(xdcArgs[i].substr(10));\r
70         }\r
71     }\r
72     return buildModes;\r
73 }\r
74 \r
75 \r
76 /*\r
77  *  ======== getTraceType ========\r
78  *  Determines which trace type to build for.\r
79  *\r
80  *  Any argument in XDCARGS which does not contain trace_type= is treated\r
81  *  as a trace type name. This way build for different trace type can be specified by\r
82  *  separating them with a space. \r
83  * XDCARGS="profile=debug core=app_m3 target_build=BUILD_OMAP4 trace_type=UIA_SW_ON"\r
84  */\r
85 function getTraceType(xdcArgs)\r
86 {\r
87     var trace_type = new Array();\r
88     \r
89     /* Check for any XDCARGS with trace_type=; these are the corenames */\r
90     for (var i = 0; i < xdcArgs.length; i++) {\r
91         if (xdcArgs[i].match(/trace_type=/)) {\r
92             trace_type.push(xdcArgs[i].substr(11));\r
93         }\r
94     }\r
95 \r
96     return trace_type;\r
97 }\r
98 \r
99 \r
100 /*\r
101  *  ======== getTraceMode ========\r
102  *  Determines which trace mode to use.\r
103  * \r
104  */\r
105 function getTraceMode(xdcArgs)\r
106 {\r
107     var trace = new Array();\r
108     \r
109     /* Check for any XDCARGS with profile=; these are profiles. */\r
110     for (var i = 0; i < xdcArgs.length; i++) {\r
111         if (xdcArgs[i].match(/trace=/)) {\r
112             trace.push(xdcArgs[i].substr(6));\r
113         }\r
114     }\r
115 \r
116     return trace;\r
117 }\r
118 \r
119 // Possible options - none Virtio\r
120 // ISS_SIMULATOR\r
121 // VIRTIO\r
122 // ...\r
123 function getTargetEnvironment(xdcArgs)\r
124 {\r
125     var target_env = new Array();\r
126     \r
127     /* Check for any XDCARGS with profile=; these are profiles. */\r
128     for (var i = 0; i < xdcArgs.length; i++) {\r
129         if (xdcArgs[i].match(/target_env=/)) {\r
130             target_env.push(xdcArgs[i].substr(11));\r
131         }\r
132     }\r
133     return target_env;\r
134 }\r
135 \r
136 function buildOptions(xdcArgs, aCompileOpts, coreName)\r
137 {\r
138     var buildMode = new Array();\r
139 \r
140     var buildMode = getBuildModes(xdcArgs);\r
141 \r
142     var compileOpts = " -D_DM270  -D_DM290_IMX_MCFIX_ -DSERVER=1 --gcc"; \r
143 \r
144     if (aCompileOpts != null){\r
145         compileOpts += aCompileOpts;\r
146     }\r
147     \r
148     /*Update compile opt if trace is uart*/\r
149     var traceMode = getTraceMode(xdcArgs);\r
150     if(traceMode.length != 0)\r
151     {\r
152         if(traceMode[0].match("UART"))\r
153         {\r
154             compileOpts += " -DUART_TRACES ";\r
155         }\r
156     }\r
157 \r
158     if(coreName != null) {\r
159         if(coreName.match(/sys_m3/)){\r
160             compileOpts += " -DDUCATI_SYS_M3 ";\r
161         }\r
162 \r
163         if(coreName.match(/app_m3/)){\r
164             compileOpts += " -DDUCATI_APP_M3 ";\r
165         }\r
166     }\r
167 \r
168     return compileOpts; \r
169 }\r
170 \r
171 \r
172 \r
173 /*\r
174  *  ======== buildLibs ========\r
175  *  This function generates the makefile goals for the libraries taking \r
176  *  into account the profile variants, specific ducati cores and build modes\r
177  *\r
178  */\r
179 function buildLibs(objList, trgList, xdcArgs, libCompileOpts, coreName)\r
180 {\r
181     var compileOpts = buildOptions(xdcArgs, libCompileOpts, coreName);\r
182     var profiles = getProfiles(xdcArgs);\r
183     //print ("profile length" + profiles.length +"\t" + "profile0" +  profiles[0] +"\n");\r
184     /* If no profiles were assigned, build for  whole program debug */\r
185     if (profiles.length == 0) {\r
186         profiles[0] = "whole_program_debug";\r
187     }\r
188 \r
189     for (var i = 0; i < Build.targets.length; i++) {\r
190 \r
191         var targ = Build.targets[i];\r
192 \r
193         for (var j = 0; j < profiles.length; j++) {\r
194 \r
195             var profile         = profiles[j];\r
196             var profileOpts     = compileOpts;\r
197 \r
198             if (profile.match(/release/)) {\r
199                 profileOpts += " -O3";\r
200             }\r
201 \r
202             if (coreName == null) {\r
203                 var lib_name = 'lib/' + profile + '/' + Pkg.name ;\r
204             }\r
205             else {\r
206                 var lib_name = 'lib/' + coreName + '/' + profile + '/' + Pkg.name ;\r
207             }\r
208 \r
209             var lib = Pkg.addLibrary(lib_name, targ, {profile: profile, copts: profileOpts});\r
210 \r
211             lib.addObjects(objList);\r
212         }\r
213     }\r
214 }\r
215 \r
216 /*\r
217  *  ======== supportsCore ========\r
218  *  Returns true if coreName is in the supported core list. If coreNameList\r
219  *  is null or empty, that's taken to mean all targets are supported.\r
220  */\r
221 function supportsCore(coreName, coreNameList)\r
222 {\r
223     if ((coreNameList == null) || (coreNameList.length == 0)) {\r
224         return true;\r
225     }\r
226 \r
227     for (var j = 0; j < coreNameList.length; j++) {\r
228         if(coreName.match(coreNameList[j])){\r
229             return true;\r
230         }\r
231     }\r
232 \r
233     return false;\r
234 }\r
235 \r
236 /*\r
237  *  ======== commonGetLibs ========\r
238  *  Common getLibs function\r
239  */\r
240 \r
241 function commonGetLibs(prog, bCoreFlag, pkg, dir)\r
242 {\r
243     var suffix;\r
244 \r
245     /* find a compatible suffix */\r
246     if ("findSuffix" in prog.build.target) {\r
247         suffix = prog.build.target.findSuffix(pkg);\r
248     }\r
249     else {\r
250         suffix = prog.build.target.suffix;\r
251     }\r
252 \r
253     var name = pkg.$name + ".a" + suffix;\r
254     var lib  = "";\r
255 \r
256     if (bCoreFlag == true) {\r
257         lib = "lib/" + prog.global.coreName + "/" + pkg.profile + "/" + name;\r
258     }\r
259     else {\r
260         lib = "lib/" + "/" + pkg.profile + "/" + name;\r
261     }\r
262 \r
263     if (java.io.File(dir + lib).exists()) {\r
264         return lib;\r
265     }\r
266     else {\r
267         print("Default lib not found: " + lib +"\nlooking for release lib");\r
268         if (bCoreFlag == true) {\r
269           lib = "lib/" + prog.global.coreName + "/" + "release/" + name;\r
270         }\r
271         else {\r
272           lib = "lib/" + "/" + "release/" + name;\r
273         } \r
274         if (java.io.File(dir + lib).exists()) {\r
275             return lib;\r
276         }\r
277     }\r
278 \r
279     /* could not find any library, throw exception */\r
280     throw Error("Library not found: " + lib);\r
281 }\r
282 \r