/******************************************************************************
* FILE PURPOSE: Build configuration Script for the osal Driver
******************************************************************************
* FILE NAME: config.bld
*
* DESCRIPTION:
* This file contains the build configuration script for the osal driver
* and is responsible for configuration of the paths for the various
* tools required to build the driver.
*
* Copyright (C) 2014-2019, Texas Instruments, Inc.
*****************************************************************************/
/* Get the Tools Base directory from the Environment Variable. */
var c66ToolsBaseDir = java.lang.System.getenv("C6X_GEN_INSTALL_PATH");
var c674ToolsBaseDir = java.lang.System.getenv("C6X_GEN_INSTALL_PATH");
var m4ToolsBaseDir = java.lang.System.getenv("TOOLCHAIN_PATH_M4");
var a15ToolsBaseDir = java.lang.System.getenv("TOOLCHAIN_PATH_A15");
var a9ToolsBaseDir = java.lang.System.getenv("TOOLCHAIN_PATH_A9");
var arm9ToolsBaseDir = java.lang.System.getenv("TOOLCHAIN_PATH_ARM9");
var a8ToolsBaseDir = java.lang.System.getenv("TOOLCHAIN_PATH_A8");
/* Get the extended debug flags for C66x,
* did not change the name for backwards compatibilty */
var extDbgFlags = java.lang.System.getenv("EXTDBGFLAGS");
/* Get the extended debug flags for A15 */
var extDbgFlags_a15 = java.lang.System.getenv("EXTDBGFLAGS_A15");
/* Get the extended debug flags for A8 */
var extDbgFlags_a8 = java.lang.System.getenv("EXTDBGFLAGS_A8");
/* Get the extended debug flags for A9 */
var extDbgFlags_a9 = java.lang.System.getenv("EXTDBGFLAGS_A9");
/* Get the extended debug flags for M4 */
var extDbgFlags_m4 = java.lang.System.getenv("EXTDBGFLAGS_M4");
/* Get the base directory for the osal Socket Driver Package */
var osalDriverPath = new java.io.File(".//").getPath();
/* Include Path */
var osalIncludePath = " -I" + osalDriverPath + "/src" + " -I" + osalDriverPath + " -I" + osalDriverPath + "/test";
/* Configure the osal Socket Release Version Information */
/* 3 steps: remove SPACE and TAB, convert to string and split to make array */
var osalDriverReleaseVersion = (""+Pkg.version.replace(/\s/g, "")).split(',');
/* Print the Compiler Options */
var pOpts = 1;
/* C66 ELF compiler configuration for Little Endian Mode. */
var C66LE = xdc.useModule('ti.targets.elf.C66');
C66LE.rootDir = c66ToolsBaseDir;
C66LE.ccOpts.prefix = "-mo -o3 -q -k -eo.o";
if(extDbgFlags)
C66LE.ccOpts.prefix = C66LE.ccOpts.prefix + " " + extDbgFlags;
/* C674 ELF compiler configuration for Little Endian Mode. */
var C674LE = xdc.useModule('ti.targets.elf.C674');
C674LE.rootDir = c674ToolsBaseDir;
C674LE.ccOpts.prefix = "-mo -o3 -q -k -eo.o";
if(extDbgFlags)
C674LE.ccOpts.prefix = C674LE.ccOpts.prefix + " " + extDbgFlags;
/* C66 ELF compiler configuration for Big Endian Mode. */
var C66BE = xdc.useModule('ti.targets.elf.C66_big_endian');
C66BE.rootDir = c66ToolsBaseDir;
C66BE.ccOpts.prefix = "-mo -o3 -q -k -eo.o -DBIGENDIAN";
if(extDbgFlags)
C66BE.ccOpts.prefix = C66BE.ccOpts.prefix + " " + extDbgFlags;
/* ARMv7 A15 compiler configuration */
var A15LE = xdc.useModule('gnu.targets.arm.A15F');
A15LE.rootDir = a15ToolsBaseDir;
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";
if(extDbgFlags_a15)
A15LE.ccOpts.prefix = A15LE.ccOpts.prefix + " " + extDbgFlags_a15;
/* ARMv7 A9 compiler configuration */
var A9LE = xdc.useModule('gnu.targets.arm.A9F');
A9LE.rootDir = a9ToolsBaseDir;
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";
if(extDbgFlags_a9)
A9LE.ccOpts.prefix = A9LE.ccOpts.prefix + " " + extDbgFlags_a9;
/* ARMv7 A8 compiler configuration */
var A8LE = xdc.useModule('gnu.targets.arm.A8F');
A8LE.rootDir = a8ToolsBaseDir;
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";
if(extDbgFlags_a8)
A8LE.ccOpts.prefix = A8LE.ccOpts.prefix + " " + extDbgFlags_a8;
/* M4 ELF compiler configuration for Little Endian Mode. */
var M4LE = xdc.useModule('ti.targets.arm.elf.M4');
M4LE.rootDir = m4ToolsBaseDir;
M4LE.ccOpts.prefix = "-o4 -qq -pdsw255 -DMAKEFILE_BUILD";
if(extDbgFlags_m4)
M4LE.ccOpts.prefix = M4LE.ccOpts.prefix + " " + extDbgFlags_m4;
/* Create the Operating System Support List */
var osTypes = {
/* TI RTOS */
tirtos :
{
/* Library options */
copts: "-DTIRTOS",
/* Souce File List */
srcFile: [
"src/tirtos/SemaphoreP_tirtos.c",
"src/tirtos/HwiP_tirtos.c",
"src/tirtos/SwiP_tirtos.c",
"src/tirtos/CacheP_tirtos.c",
"src/tirtos/Utils_tirtos.c"
],
},
/* Bare metal */
nonos :
{
/* Library options */
copts: "-DNONOS",
/* Souce File List */
srcFile: [
"src/nonos/HwiP_nonos.c",
"src/nonos/SwiP_nonos.c",
"src/nonos/Utils_nonos.c",
"src/nonos/SemaphoreP_nonos.c",
"src/nonos/CacheP_nonos.c"
],
}
};
var keyStoneFamilySrcFiles = {
/* TI RTOS */
tirtos :
{
/* Souce File List */
srcFile: [
"src/v0/MuxIntcP_tirtos.c",
]
},
/* Bare metal */
nonos :
{
/* Souce File List */
srcFile: [
"src/v0/MuxIntcP_nonos.c"
]
}
};
var amFamilySrcFiles = {
/* TI RTOS */
tirtos :
{
/* Souce File List */
srcFile: [
"src/v1/MuxIntcP_tirtos.c"
]
},
/* Bare metal */
nonos :
{
/* Souce File List */
srcFile: [
"src/v1/MuxIntcP_nonos.c",
]
}
};
/* Create the SoC List */
var socs = {
am335x :
{
/* this variable would be reinitialized to true, if XDCARGS contains am335x */
build: "false",
/* Device Family Type */
familyType: "am",
/* SoC specific defines go here */
copts: "-DSOC_AM335x",
/* target list */
targets: [ A8LE ]
},
am437x :
{
/* this variable would be reinitialized to true, if XDCARGS contains am437x */
build: "false",
/* Device Family Type */
familyType: "am",
/* SoC specific defines go here */
copts: "-DSOC_AM437x",
/* target list */
targets: [ A9LE ]
},
am572x :
{
/* this variable would be reinitialized to true, if XDCARGS contains am572x */
build: "false",
/* Device Family Type */
familyType: "am",
/* SoC specific defines go here */
copts: "-DSOC_AM572x",
/* target list */
targets: [ C66LE, A15LE, M4LE]
},
am574x :
{
/* this variable would be reinitialized to true, if XDCARGS contains am574x */
build: "false",
/* Device Family Type */
familyType: "am",
/* SoC specific defines go here */
copts: "-DSOC_AM574x",
/* target list */
targets: [ C66LE, A15LE, M4LE]
},
am571x :
{
/* this variable would be reinitialized to true, if XDCARGS contains am571x */
build: "false",
/* Device Family Type */
familyType: "am",
/* SoC specific defines go here */
copts: "-DSOC_AM571x",
/* target list */
targets: [ C66LE, A15LE, M4LE]
},
k2h :
{
/* this variable would be reinitialized to true, if XDCARGS contains k2h */
build: "false",
/* Device Family Type */
familyType: "keystone",
/* SoC specific defines go here */
copts: "-DSOC_K2H",
/* target list */
targets: [ C66LE, C66BE, A15LE]
},
k2k :
{
/* this variable would be reinitialized to true, if XDCARGS contains k2k */
build: "false",
/* Device Family Type */
familyType: "keystone",
/* SoC specific defines go here */
copts: "-DSOC_K2H",
/* target list */
targets: [ C66LE, C66BE, A15LE]
},
k2e :
{
/* this variable would be reinitialized to true, if XDCARGS contains k2e */
build: "false",
/* Device Family Type */
familyType: "keystone",
/* SoC specific defines go here */
copts: "-DSOC_K2E",
/* target list */
targets: [ C66LE, C66BE, A15LE]
},
k2l :
{
/* this variable would be reinitialized to true, if XDCARGS contains k2l */
build: "false",
/* Device Family Type */
familyType: "keystone",
/* SoC specific defines go here */
copts: "-DSOC_K2L",
/* target list */
targets: [ C66LE, C66BE, A15LE]
},
k2g :
{
/* this variable would be reinitialized to true, if XDCARGS contains k2g */
build: "false",
/* Device Family Type */
familyType: "keystone",
/* SoC specific defines go here */
copts: "-DSOC_K2G",
/* target list */
targets: [ C66LE, C66BE, A15LE]
},
omapl137 :
{
/* this variable would be reinitialized to true, if XDCARGS contains omapl137 */
build: "false",
/* Device Family Type */
familyType: "omap",
/* SoC specific defines go here */
copts: "-DSOC_OMAPL137",
/* target list */
targets: [ C674LE, A9LE]
},
omapl138 :
{
/* this variable would be reinitialized to true, if XDCARGS contains omapl138 */
build: "false",
/* Device Family Type */
familyType: "omap",
/* SoC specific defines go here */
copts: "-DSOC_OMAPL138",
/* target list */
targets: [ C674LE, A9LE]
},
c6678 :
{
/* this variable would be reinitialized to true, if XDCARGS contains k2l */
build: "false",
/* Device Family Type */
familyType: "keystone",
/* SoC specific defines go here */
copts: "-DSOC_C6678",
/* target list */
targets: [ C66LE, C66BE]
},
c6657 :
{
/* this variable would be reinitialized to true, if XDCARGS contains k2l */
build: "false",
/* Device Family Type */
familyType: "keystone",
/* SoC specific defines go here */
copts: "-DSOC_C6657",
/* target list */
targets: [ C66LE, C66BE]
},
c6747 :
{
/* Build this library */
build: "false",
/* Device Family Type */
familyType: "omap",
/* SoC specific defines go here */
copts: "-DSOC_C6747",
/* target list */
targets: [ C674LE]
}
};
/**************************************************************************
* FUNCTION NAME : merge
**************************************************************************
* DESCRIPTION :
* The function is used to merge two arrarys
**************************************************************************/
function merge() {
var args = arguments;
var hash = {};
var arr = [];
for (var i = 0; i < args.length; i++) {
for (var j = 0; j < args[i].length; j++) {
if (hash[args[i][j]] !== true) {
arr[arr.length] = args[i][j];
hash[args[i][j]] = true;
}
}
}
return arr;
}
/* Grab input from XDCARGS */
var buildArguments = [];
/* Construct the build arguments */
for (var tmp=0; arguments[tmp] != undefined; tmp++)
{
/* If no arguments are provided, override for building all */
if ( ( arguments.length == 1) && (arguments[tmp].equals("./config.bld")) )
buildArguments[buildArguments.length++] = "all";
else
buildArguments[buildArguments.length++] = arguments[tmp];
}
/* Build targets on this build */
var build_targets = [];
var soc_names = Object.keys(socs);
var os_names = Object.keys(osTypes);
for (var i=0; i < buildArguments.length; i++ ) {
/* Build it for all targets */
if (buildArguments[i] == "all") {
for (var j = 0; j < soc_names.length; j++) {
build_targets = merge (build_targets.slice(0), socs[soc_names[j]].targets.slice(0));
/* Set build to "true" for that SoC */
socs[soc_names[j]].build = "true";
}
}
else {
/* Skip the first argument, which is ./config.bld to get to next SoCs */
if (i == 0) continue;
/* Set that build to true if it is found in supported build socs */
for (j = 0; j < soc_names.length; j++) {
if (buildArguments[i] == soc_names[j]) {
socs[buildArguments[i]].build = "true";
build_targets = merge (build_targets.slice(0), socs[buildArguments[i]].targets.slice(0));
break;
}
}
}
}
/* Update the Build target generated list */
Build.targets = build_targets;