SysLink-IPC: Build - Support for HDMI WA2 on SYSM3 image
[bios-syslink:bios-syslink.git] / packages / config.bld
1 /*
2  * Copyright (c) 2010, Texas Instruments Incorporated
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * *  Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  *
12  * *  Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  *
16  * *  Neither the name of Texas Instruments Incorporated nor the names of
17  *    its contributors may be used to endorse or promote products derived
18  *    from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  *
32  */
33 /*
34  *  ======== config.bld ========
35  */
36
37 var armcgt_linux   = "/data/omapts/linux/dsp-tc/cgtarm-4.6.1"
38 var dspcgt_linux   = "/data/omapts/linux/dsp-tc/cgt6x-7.2.0B2"
39 var armcgt_windows = "c:/mytools/cgtarm-4.6.1"
40 var dspcgt_windows = "c:/mytools/cgt6x-7.2.0B2"
41
42 var Build = xdc.useModule('xdc.bld.BuildEnvironment');
43
44 var armcgt_env = java.lang.System.getenv("TMS470CGTOOLPATH");
45 var dspcgt_env = java.lang.System.getenv("C6000CGTOOLPATH");
46
47 for (x = 0; x < arguments.length; x++)
48 {
49     if (arguments[x].match(/^COFF_BLD=/) )
50     {
51         // [1] operation is used on the return value of split(), which is an
52         // array.
53         var coff_bld = arguments[x].split("=")[1];
54         print("setting COFF_BLD = " + coff_bld);
55     }
56     else if (arguments[x].match(/^USE_WA=/) )
57     {
58         // [1] operation is used on the return value of split(), which is an
59         // array.
60         var use_wa = arguments[x].split("=")[1];
61     }
62     else if (arguments[x].match(/^CACHE=/) )
63     {
64         // [1] operation is used on the return value of split(), which is an
65         // array.
66         var cf = arguments[x].split("=")[1];
67     }
68     else if (arguments[x].match(/^PM=/) )
69     {
70         // [1] operation is used on the return value of split(), which is an
71         // array.
72         var pm_f = arguments[x].split("=")[1];
73     }
74     else if (arguments[x].match(/^HEAP_DELAY=/) )
75     {
76         // [1] operation is used on the return value of split(), which is an
77         // array.
78         var heap_delay = arguments[x].split("=")[1];
79         print("Heapbuf open delay value = " + heap_delay);
80     }
81     else if (arguments[x].match(/^PROFILE=/) )
82     {
83         // [1] operation is used on the return value of split(), which is an
84         // array.
85         var bld_profile = arguments[x].split("=")[1];
86     }
87     else if (arguments[x].match(/^SILICON_VER=/) )
88     {
89         // [1] operation is used on the return value of split(), which is an
90         // array.
91         var silicon_ver = arguments[x].split("=")[1];
92     }
93     else if (arguments[x].match(/^HDMI_WA=/) )
94     {
95         // [1] operation is used on the return value of split(), which is an
96         // array.
97         var hdmi_wa = arguments[x].split("=")[1];
98     }
99 }
100
101
102 if((coff_bld == "true") || (coff_bld == "TRUE"))
103 {
104   var M3 = xdc.useModule('ti.targets.arm.M3');
105 }
106 else
107 {
108   var M3 = xdc.useModule('ti.targets.arm.elf.M3');
109   M3.ccOpts.suffix += " -ms -DCPU_M3";
110   M3.lnkOpts.prefix +=  " --zero_init=off ";
111   var C64T = xdc.useModule('ti.targets.elf.C64T')
112   C64T.ccOpts.suffix += " -mi10 -mo -DCPU_C64T";
113 }
114
115 if (Build.hostOSName == 'Linux') {
116     M3.rootDir = armcgt_env ? armcgt_env : armcgt_linux;
117     C64T.rootDir = dspcgt_env ? dspcgt_env : dspcgt_linux;
118 } else {
119     M3.rootDir = armcgt_env ? armcgt_env : armcgt_windows;
120     C64T.rootDir = dspcgt_env ? dspcgt_env : dspcgt_windows;
121 }
122
123 /* place each function in its own subsection */
124 M3.ccOpts.prefix += " -ms" +  " -DOS_DSPBIOS ";
125 //M3.M3_big_endian.ccOpts.prefix += " -ms" +  " -DOS_DSPBIOS ";
126
127 if (bld_profile == undefined) {
128   bld_profile = "whole_program_debug";
129 }
130
131 /* ES2.0 Enabled by default */
132 if (silicon_ver == undefined) {
133   silicon_ver = "ES2.0";
134 }
135
136 /* Cache is enabled by default */
137 if (cf == undefined) {
138     cf = "true";
139 }
140
141 /* WA disabled for 2.0
142    and enabled for 1.0
143 */
144 if (use_wa == undefined) {
145     if (silicon_ver == "ES2.0") {
146         use_wa = "false";
147     }
148     else {
149         use_wa = "true";
150     }
151 }
152
153 if (silicon_ver == "ES1.0") {
154     M3.ccOpts.prefix += " -DES1_0";
155 }
156
157 if((use_wa == "false") || (use_wa == "FALSE") || (use_wa == "0"))
158 {
159     var useWorkaround = false;
160 }
161 else
162 {
163     M3.ccOpts.prefix += " -DUSE_WA";
164     var useWorkaround = true;
165 }
166
167 if((cf == "false") || (cf == "FALSE") || (cf == "0"))
168 {
169     var c_flag = false;
170     var useWorkaround = false;
171 }
172 else
173 {
174     if((use_wa == "false") || (use_wa == "FALSE") || (use_wa == "0"))
175     {
176         var useWorkaround = false;
177     }
178    else
179     {
180         M3.ccOpts.prefix += " -DUSE_WA";
181         var useWorkaround = true;
182     }
183
184     var c_flag = true;
185 }
186
187 if (heap_delay != undefined) {
188     M3.ccOpts.prefix += " -DHEAPBUF_DELAY=" + heap_delay;
189     C64T.ccOpts.prefix += " -DHEAPBUF_DELAY=" + heap_delay;
190 }
191 else {
192     M3.ccOpts.prefix += " -DHEAPBUF_DELAY=100";
193     C64T.ccOpts.prefix += " -DHEAPBUF_DELAY=100";
194 }
195
196 if ((pm_f == "false") || (pm_f == "FALSE") || (pm_f == "0"))  {
197     M3.ccOpts.prefix += " -DPM_OFF";
198     var pm_flag = false;
199 }
200 else
201 {
202     var pm_flag = true;
203 }
204
205 if((hdmi_wa == "false") || (hdmi_wa == "FALSE") || (hdmi_wa == "0"))
206 {
207     var hdmi_wa2 = false;
208 }
209 else
210 {
211     M3.ccOpts.prefix += " -DHDMI_WA2";
212     var hdmi_wa2 = true;
213 }
214
215 //set default platform and list of all interested platforms for M3
216 M3.platforms = [
217                   "ti.omap.platform.core0",
218                   "ti.omap.platform.core1",
219                ];
220
221 //set default platform and list of all interested platforms for c64P
222 C64T.platforms = [
223                     "ti.omap.platform.dsp",
224                 ];
225 C64T.platform = C64T.platforms[0];
226
227 M3.platform = M3.platforms[0];
228
229 //Uncomment the require targets
230 Build.targets = [
231                     C64T,
232                     M3,
233                 ];