summaryrefslogblamecommitdiffstats
blob: fc6a7b40e98bc8dd5b9439898805cc39c3ec8fb1 (plain) (tree)
1
2
3
4
5
6
7
8
9
10









                                                                               
                                                   



                                                                               








                                                                      



                                                        


                                                         











                                                                   
                                     

                                              

                                                                              




                                                                                  
                                                                


                                                                   
                        
                                                                        

                                                             


                                                                              
                        
                                                                       
    
                                      




                                                                                                                                               














































                                                                                                    
 
 

 


                                             
 
























                                                                                    






                                        






                                        





































































                                                                                                         
 


                                            
/******************************************************************************
 * FILE PURPOSE: Build configuration Script for the PA LLD
 ******************************************************************************
 * FILE NAME: config.bld
 *
 * DESCRIPTION: 
 *  This file contains the build configuration script for the PA LLD
 *  and is responsible for configuration of the paths for the various 
 *  tools required to build the driver.
 *
 * Copyright (C) 2009-2015, Texas Instruments, Inc.
 *****************************************************************************/

/* Get the Tools Base directory from the Environment Variable. */
var xdcTargetType = java.lang.System.getenv("XDCTARGET");
var c66ToolsBaseDir = java.lang.System.getenv("C6X_GEN_INSTALL_PATH");
var a15ToolsBaseDir = java.lang.System.getenv("TOOLCHAIN_PATH_A15");

/* 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");

/* Check if we need to create the Makefiles? */
var miniBuild = java.lang.System.getenv("MINI_PACKAGE");

/* Get the extended debug flags */
var extDbgFlags = java.lang.System.getenv("EXTDBGFLAGS");

/* Get the base directory for the PA LLD Package */
var palldPath = new java.io.File(".//").getPath();

/* This is the part Number for which the PA LLD is being created */
var palldPartNumber = java.lang.System.getenv("PARTNO");

if(palldPartNumber == null)
{
    palldPartNumber = "c6616";
}

/* Include Path */
var palldIncPath = " -I" + palldPath;

/* Configure the PA LLD Version Information */
/* 3 steps: remove SPACE and TAB, convert to string and split to make array */
var palldReleaseVersion = (""+Pkg.version.replace(/\s/g, "")).split(',');

/* PA LLD Coverity Analysis: Check the environment variable to determine if Static
 * Analysis has to be done on the driver Code base or not? */
var paCoverityAnalysis = java.lang.System.getenv("STATIC_ANALYZE");

    /* 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; 

    /* 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 -gstrict-dwarf -Wall -D__ARMv7 -D_LITTLE_ENDIAN=1";  
    if(extDbgFlags_a15)     
        A15LE.ccOpts.prefix  = A15LE.ccOpts.prefix + " " + extDbgFlags_a15; 

/* Check if we need to run the STATIC Analysis or not? */
var coverityAnalysis = java.lang.System.getenv("STATIC_ANALYZE");

/* Setup the Coverity Filters to perform Static Analysis. */
if (coverityAnalysis == "ON") {
    var file = xdc.module('xdc.services.io.File');
	var coverityInstallPath = java.lang.System.getenv("STATIC_ANALYZE_PATH");
	
    var cfgBase = file.getDOSPath(xdc.getPackageBase("tisb.coverity.filters")) + "cfg";

    var coverityFilter = [
    {
        moduleName: "tisb.coverity.filters.Coverity",
        params: {
            cfgDir:  cfgBase,  // The Coverity configuration file directory
            rootDir: coverityInstallPath,
            outDir: xdc.csd() + "cov_out",
            analyzeLibs: true
        }
    },
    ];

    /* Run the coverity filters on the LE Build only. */
    C66LE.profiles["release"].filters = coverityFilter;
}

if (miniBuild == "ON") {

    var makeC66LEFilter = {
        moduleName: "build.filter.Make",
        params: {
          makefileName: "simpleC66LE.mak",
        }
    };

    C66LE.profiles["release"].filters[C66LE.profiles["release"].filters.length++] = makeC66LEFilter;


    var makeC66BEFilter = {
        moduleName: "build.filter.Make",
        params: {
          makefileName: "simpleC66BE.mak",
        }
    }; 

    C66BE.profiles["release"].filters[C66BE.profiles["release"].filters.length++] = makeC66BEFilter;

}


for ( i=0; i < arguments.length; i++)
{
  print ("ARG[" + i + "] = " + arguments[i]);
}

/* Create the SoC List  */
var socs = { 
    /* device independent libraries */
    all :
    {
        /* Build this library */
        build: "true",
        /* target lists, kept blank now, would be updated based on argument lists */
        targets: []
    },
    k2h :
    {
        /* Build this library */
        build: "false",
        /* target list */
        targets: [ C66LE, C66BE, A15LE ]
    },
    k2k :
    {
        /* Build this library */
        build: "false",
        /* target list */
        targets: [ C66LE, C66BE, A15LE ]
    },
    k2e:
    {
        /* Build this library */
        build: "false",
        /* target list */
        targets: [ C66LE, C66BE, A15LE ]
    },
    k2l :
    {
        /* Build this library */
        build: "false",
        /* target list */
        targets: [ C66LE, C66BE, A15LE ]
    },
    c6678 :
    {
        /* Build this library */
        build: "false",
        /* 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;