/****************************************************************************** * FILE PURPOSE: Build configuration Script for the MCBSP Driver ****************************************************************************** * FILE NAME: config.bld * * DESCRIPTION: * This file contains the build configuration script for the MCBSP driver * and is responsible for configuration of the paths for the various * tools required to build the driver. * * Copyright (C) 2012-2013, Texas Instruments, Inc. *****************************************************************************/ /* Get the Tools Base directory from the Environment Variable. */ var toolsBaseDir = java.lang.System.getenv("C6X_GEN_INSTALL_PATH"); /* Get the extended debug flags */ var extDbgFlags = java.lang.System.getenv("EXTDBGFLAGS"); /* Get the base directory for the MCBSP Driver Package */ var mcbspDriverPath = new java.io.File(".//").getPath(); /* Read the part number from the environment variable. */ var mcbspLLDPartNumber = java.lang.System.getenv("PARTNO"); /* Get the base directory for the hyplnk LLD Package */ var mcbsplldPath = new java.io.File(".//").getPath(); /* Include Path */ var mcbsplldIncPath = " -i" + mcbsplldPath; /* Configure the MCBSP Release Version Information */ var mcbspDriverReleaseVersion = (""+Pkg.version.replace(/\s/g, "")).split(','); /* C66 ELF compiler configuration for Little Endian Mode. */ var C66LE = xdc.useModule('ti.targets.elf.C66'); C66LE.rootDir = toolsBaseDir; C66LE.ccOpts.prefix = "-mo -o3 -q -k -eo.o"; if(extDbgFlags) C66LE.ccOpts.prefix = C66LE.ccOpts.prefix + " " + extDbgFlags; /* C6740 elf compiler configuration for Little Endian Mode. */ var C67LE = xdc.useModule('ti.targets.elf.C674'); C67LE.rootDir = toolsBaseDir; C67LE.ccOpts.prefix = "-mo -o3 -q -k -eo.o"; if(extDbgFlags) C67LE.ccOpts.prefix = C67LE.ccOpts.prefix + " " + extDbgFlags; /* C66 ELF compiler configuration for Big Endian Mode. */ var C66BE = xdc.useModule('ti.targets.elf.C66_big_endian'); C66BE.rootDir = toolsBaseDir; C66BE.ccOpts.prefix = "-mo -o3 -q -k -eo.o -DBIGENDIAN"; if(extDbgFlags) C66BE.ccOpts.prefix = C66BE.ccOpts.prefix + " " + extDbgFlags; /* device name (k2?) is inserted between first an second element of this list to construct device file name for each device */ var deviceConstruct = [ "device/", "/src/device_mcbsp_loopback.c" ]; /* Create the SoC List */ var socs = { /* device independent libraries */ all : { /* Build this library */ build: "true", /* SoC lib disabled as this is device independent lib */ socDevLib: "false", /* Library options */ copts: "", /* target lists, kept blank now, would be updated based on argument lists */ targets: [] }, k2g : { /* this variable would be reinitialized to true, if XDCARGS contains k2g */ build: "false", /* SoC lib enabled */ socDevLib: "true", /* Library options */ copts: " -DDEVICE_K2G -DSOC_K2G", /* target list */ targets: [ C66LE, C66BE ] }, c674x : { /* this variable would be reinitialized to true, if XDCARGS contains c674x */ build: "false", /* SoC lib enabled */ socDevLib: "true", /* Library options */ copts: " -DSOC_C674X", /* target list */ targets: [ C66LE, C66BE ] }, c6657 : { /* this variable would be reinitialized to true, if XDCARGS contains c6657 */ build: "false", /* SoC lib enabled */ socDevLib: "true", /* Library options */ copts: " -DSOC_C6657", /* target list */ targets: [ C66LE, C66BE ] }, }; /************************************************************************** * 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); 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 */ socs["all"].targets = build_targets; Build.targets = build_targets;