Merge pull request #6 in PROCESSOR-SDK/mcbsp-lld from PRSDK-2194 to master
[keystone-rtos/mcbsp-lld.git] / config.bld
1 /******************************************************************************
2  * FILE PURPOSE: Build configuration Script for the MCBSP Driver
3  ******************************************************************************
4  * FILE NAME: config.bld
5  *
6  * DESCRIPTION: 
7  *  This file contains the build configuration script for the MCBSP driver
8  *  and is responsible for configuration of the paths for the various 
9  *  tools required to build the driver.
10  *
11  * Copyright (C) 2012-2013, Texas Instruments, Inc.
12  *****************************************************************************/
14 /* Get the Tools Base directory from the Environment Variable. */
15 var toolsBaseDir = java.lang.System.getenv("C6X_GEN_INSTALL_PATH");
16 var m4ToolsBaseDir  = java.lang.System.getenv("TOOLCHAIN_PATH_M4");
17 var a15ToolsBaseDir = java.lang.System.getenv("TOOLCHAIN_PATH_A15");
18 var a9ToolsBaseDir  = java.lang.System.getenv("TOOLCHAIN_PATH_A9");
19 var arm9ToolsBaseDir  = java.lang.System.getenv("TOOLCHAIN_PATH_ARM9");
20 var a8ToolsBaseDir  = java.lang.System.getenv("TOOLCHAIN_PATH_A8");
22 /* Get the extended debug flags */
23 var extDbgFlags = java.lang.System.getenv("EXTDBGFLAGS");
25 /* Get the extended debug flags for A15 */
26 var extDbgFlags_a15 = java.lang.System.getenv("EXTDBGFLAGS_A15");
28 /* Get the extended debug flags for A8 */
29 var extDbgFlags_a8 = java.lang.System.getenv("EXTDBGFLAGS_A8");
31 /* Get the extended debug flags for A9 */
32 var extDbgFlags_a9 = java.lang.System.getenv("EXTDBGFLAGS_A9");
34 /* Get the extended debug flags for ARM9 */
35 var extDbgFlags_arm9 = java.lang.System.getenv("EXTDBGFLAGS_ARM9");
36 /* Get the extended debug flags for M4 */
37 var extDbgFlags_m4 = java.lang.System.getenv("EXTDBGFLAGS_M4");
39 /* Get the base directory for the MCBSP Driver Package */
40 var mcbspDriverPath = new java.io.File(".//").getPath();
42 /* Read the part number from the environment variable. */
43 var mcbspLLDPartNumber = java.lang.System.getenv("PARTNO");
45 /* Get the base directory for the hyplnk LLD Package */
46 var mcbsplldPath = new java.io.File(".//").getPath();
47 /* Include Path */
48 var mcbsplldIncPath = " -i" + mcbsplldPath;
49 /* Configure the MCBSP Release Version Information */
50 var mcbspDriverReleaseVersion = (""+Pkg.version.replace(/\s/g, "")).split(',');
52 /* C66 ELF compiler configuration for Little Endian Mode. */
53 var C66LE           = xdc.useModule('ti.targets.elf.C66');
54 C66LE.rootDir       = toolsBaseDir;
55 C66LE.ccOpts.prefix = "-mo -o3 -q -k -eo.o";
56 if(extDbgFlags)     
57     C66LE.ccOpts.prefix = C66LE.ccOpts.prefix + " " + extDbgFlags; 
59 /* C6740 elf compiler configuration for Little Endian Mode. */
60 var C674LE           = xdc.useModule('ti.targets.elf.C674');
61 C674LE.rootDir       = toolsBaseDir;
62 C674LE.ccOpts.prefix = "-mo -o3 -q -k -eo.o";
63 if(extDbgFlags)     
64     C674LE.ccOpts.prefix = C674LE.ccOpts.prefix + " " + extDbgFlags; 
66 /* C66 ELF compiler configuration for Big Endian Mode. */
67 var C66BE           = xdc.useModule('ti.targets.elf.C66_big_endian');
68 C66BE.rootDir       = toolsBaseDir;
69 C66BE.ccOpts.prefix = "-mo -o3 -q -k -eo.o -DBIGENDIAN";
70 if(extDbgFlags)     
71     C66BE.ccOpts.prefix = C66BE.ccOpts.prefix + " " + extDbgFlags;
73 /* C674 ELF compiler configuration for Big Endian Mode. */
74 var C674BE           = xdc.useModule('ti.targets.elf.C674_big_endian');
75 C674BE.rootDir       = toolsBaseDir;
76 C674BE.ccOpts.prefix = "-mo -o3 -q -k -eo.o -DBIGENDIAN";
77 if(extDbgFlags)     
78     C674BE.ccOpts.prefix = C674BE.ccOpts.prefix + " " + extDbgFlags;
80 /* ARMv7 A15 compiler configuration */
81 var A15LE            = xdc.useModule('gnu.targets.arm.A15F');
82 A15LE.rootDir        = a15ToolsBaseDir;
83 A15LE.ccOpts.prefix  = "-mno-unaligned-access -c -mtune=cortex-a15 -marm -DDRA7xx -gstrict-dwarf -Wall -D__ARMv7 -D_LITTLE_ENDIAN=1";
84 if(extDbgFlags_a15)     
85     A15LE.ccOpts.prefix = A15LE.ccOpts.prefix + " " + extDbgFlags_a15; 
86     
87 /* ARMv7 A9 compiler configuration */
88 var A9LE            = xdc.useModule('gnu.targets.arm.A9F');
89 A9LE.rootDir        = a9ToolsBaseDir;
90 A9LE.ccOpts.prefix  = "-mno-unaligned-access -c -mtune=cortex-a9 -marm -DDRA7xx -gstrict-dwarf -Wall -D__ARMv7 -D_LITTLE_ENDIAN=1";
91 if(extDbgFlags_a9)     
92     A9LE.ccOpts.prefix = A9LE.ccOpts.prefix + " " + extDbgFlags_a9; 
94 /* ARMv5 ARM9 compiler configuration */
95 var ARM9LE            = xdc.useModule('ti.targets.arm.elf.Arm9');
96 ARM9LE.rootDir        = arm9ToolsBaseDir;
97 ARM9LE.ccOpts.prefix  = "-mno-unaligned-access -c -mtune=arm926ej-s -msoft-float -mfloat-abi=soft -march=armv5te -marm -DDRA7xx -Dxdc_target_types__=gnu/targets/arm/std.h -Dxdc_target_name__=Arm9 -gstrict-dwarf -Wall -D__ARMv5 -D_LITTLE_ENDIAN=1";
98 if(extDbgFlags_arm9)     
99     ARM9LE.ccOpts.prefix = ARM9LE.ccOpts.prefix + " " + extDbgFlags_arm9; 
100         
101 /* ARMv7 A8 compiler configuration */
102 var A8LE            = xdc.useModule('gnu.targets.arm.A8F');
103 A8LE.rootDir        = a8ToolsBaseDir;
104 A8LE.ccOpts.prefix  = "-mno-unaligned-access -c -mtune=cortex-a8 -marm -DDRA7xx -gstrict-dwarf -Wall -D__ARMv7 -D_LITTLE_ENDIAN=1";
105 if(extDbgFlags_a8)     
106     A8LE.ccOpts.prefix = A8LE.ccOpts.prefix + " " + extDbgFlags_a8; 
108 /* M4 ELF compiler configuration for Little Endian Mode. */
109 var M4LE            = xdc.useModule('ti.targets.arm.elf.M4');
110 M4LE.rootDir        = m4ToolsBaseDir;
111 M4LE.ccOpts.prefix  = "-o4 -qq -pdsw255 -DMAKEFILE_BUILD";
112 if(extDbgFlags_m4)
113     M4LE.ccOpts.prefix = M4LE.ccOpts.prefix + " " + extDbgFlags_m4; 
115 /* device name (k2?) is inserted between first an second element of this
116    list to construct device file name for each device */
117 var deviceConstruct = [ "device/", "/src/device_mcbsp_loopback.c" ];
119 /* Create the SoC List  */
120 var socs = { 
121     /* device independent libraries */
122     all :
123     {
124         /* Build this library */
125         build: "true",
126         /* SoC lib disabled as this is device independent lib */
127         socDevLib: "false",
128         /* Library options */
129         copts: "",
130         /* target lists, kept blank now, would be updated based on argument lists */
131         targets: []
132     },
133     k2g :
134     {
135         /* this variable would be reinitialized to true, if XDCARGS contains k2g */
136         build: "false",
137         /* SoC lib enabled */
138         socDevLib: "true",
139         /* Library options */
140         copts: " -DDEVICE_K2G -DSOC_K2G",
141         /* target list */
142         targets: [ C66LE, C66BE ]
143     },
144         omapl138 :
145     {
146         /* this variable would be reinitialized to true, if XDCARGS contains omapl138 */
147         build: "false",
148        /* SoC lib enabled */
149        socDevLib: "true",
150        /* Library options */
151        copts: " -DSOC_OMAPL138",
152        /* target list */
153        targets: [ C674LE ]
154     },
155     c6657 :
156     {
157         /* this variable would be reinitialized to true, if XDCARGS contains c6657 */
158         build: "false",
159         /* SoC lib enabled */
160         socDevLib: "true",
161         /* Library options */
162         copts: " -DSOC_C6657",
163         /* target list */
164         targets: [ C66LE, C66BE ]
165     },
166 };
168 /**************************************************************************
169  * FUNCTION NAME : merge
170  **************************************************************************
171  * DESCRIPTION   :
172  *  The function is used to merge two arrarys
173  **************************************************************************/
174 function merge() {
175     var args = arguments;
176     var hash = {};
177     var arr = [];
178     for (var i = 0; i < args.length; i++) {
179        for (var j = 0; j < args[i].length; j++) {
180          if (hash[args[i][j]] !== true) {
181            arr[arr.length] = args[i][j];
182            hash[args[i][j]] = true;
183          }
184        }
185      }
186     return arr;
189 /* Grab input from XDCARGS */
190 var buildArguments  = [];
192 /* Construct the build arguments */
193 for (var tmp=0; arguments[tmp] != undefined; tmp++)
196     /* If no arguments are provided, override for building all */
197     if ( ( arguments.length == 1) && (arguments[tmp].equals("./config.bld")) )
198         buildArguments[buildArguments.length++] = "all";
199     else
200         buildArguments[buildArguments.length++] = arguments[tmp];
203 /* Build targets on this build */
204 var build_targets = [];
205 var soc_names = Object.keys(socs);
207 for (var i=0; i < buildArguments.length; i++ ) {
208     /* Build it for all targets */
209     if (buildArguments[i] == "all") {
210         for (var j = 0; j < soc_names.length; j++)  {
211             build_targets = merge (build_targets.slice(0), socs[soc_names[j]].targets.slice(0));
212             /* Set build to "true" for that SoC */
213             socs[soc_names[j]].build = "true";
214         }
215     }
216     else {
217         /* Skip the first argument, which is ./config.bld to get to next SoCs */
218         if (i == 0) continue;          
219         /* Set that build to true if it is found in supported build socs */
220         for (j = 0; j < soc_names.length; j++) {
221             if (buildArguments[i] == soc_names[j]) {
222                 socs[buildArguments[i]].build = "true";
223                 build_targets = merge (build_targets.slice(0), socs[buildArguments[i]].targets.slice(0));
224                 break;
225             }
226         }
227     }   
230 /* Update the Build target generated list */
231 socs["all"].targets = build_targets; 
232 Build.targets   = build_targets;