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









                                                                               
                                                   



                                                                               
                                                                   
                                                                    

















                                                                   













                                                                              


                                



                                                                  

                                                                   




                                                                              

                                                                  



                                                             
                                                                                                                                        

                                                                       




                                                             

                                                                    
 



                                                                                                                             

                                                                    




                                                                                                                             




                                                                     
 
 



                                      
     








































                                                                                      
      










                                                                                     









                                                                                      










                                                                                      





























                                                                            
 































                                                                                                         

 


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

/* Get the Tools Base directory from the Environment Variable. */
var c66ToolsBaseDir = 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 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 icss_emac Socket Driver Package */
var driverPath = new java.io.File(".//").getPath();

/* Read the part number from the environment variable. */
var LLDPartNumber = java.lang.System.getenv("PARTNO");

/* Include Path */
var lldIncludePath = " -I" + driverPath + "/src" + " -I" + driverPath;

/* Configure the icss_emac Socket Release Version Information */
/* 3 steps: remove SPACE and TAB, convert to string and split to make array */
var driverReleaseVersion = (""+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 -DMEM_BARRIER_DISABLE";
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 -DMEM_BARRIER_DISABLE";
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 -g -gstrict-dwarf -Wall -D__ARMv7 -D_LITTLE_ENDIAN=1";
if(extDbgFlags_a15)     
    A15LE.ccOpts.prefix = A15LE.ccOpts.prefix + " " + extDbgFlags_a15; 

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

/* 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 -g -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 -g -gstrict-dwarf -Wall -D__ARMv7 -D_LITTLE_ENDIAN=1";
if(extDbgFlags_a8)     
    A8LE.ccOpts.prefix = A8LE.ccOpts.prefix + " " + extDbgFlags_a8; 
/* soc name (am?) is inserted between first an second element of this
   list to construct device file name for each device */
var deviceConstruct = [ "soc/", "/icss_emacSoc.c" ];


/* Create the SoC List  */
var socs = { 
    /* device independent libraries */
    all :
    {
        /* Build this library */
        build: "true",
        /* SoC lib enabled */
        socDevLib: "false",
        /* Library options */
        copts: "",
        /* target lists, kept blank now, would be updated based on argument lists */
        targets: []
    },
    am335x :
    {
        /* this variable would be reinitialized to true, if XDCARGS contains am335x */
        build: "false",
        /* SoC lib enabled */
        socDevLib: "true",
        /* Library options */
        copts: " -DSOC_AM335x",
        /* target list */
        targets: [ A8LE ]
    },
    am437x :
    {
        /* this variable would be reinitialized to true, if XDCARGS contains am437x */
        build: "false",       
        /* SoC lib enabled */
        socDevLib: "true",
        /* Library options */
        copts: " -DSOC_AM437x",
        /* target list */
        targets: [ A9LE ]
   },
   am572x :
    {
        /* this variable would be reinitialized to true, if XDCARGS contains am572x */
        build: "false", 
       /* SoC lib enabled */
       socDevLib: "true",
       /* Library options */
       copts: " -DSOC_AM572x",
       /* target list */
       targets: [ C66LE, M4LE, A15LE]
    },
   am574x :
    {
       /* this variable would be reinitialized to true, if XDCARGS contains am574x */
       build: "false",
       /* SoC lib enabled */
       socDevLib: "true",
       /* Library options */
       copts: " -DSOC_AM574x",
       /* target list */
       targets: [ C66LE, M4LE, A15LE]
    },
   am571x :
    {
        /* this variable would be reinitialized to true, if XDCARGS contains am571x */
        build: "false",     
       /* SoC lib enabled */
       socDevLib: "true",
       /* Library options */
       copts: " -DSOC_AM571x",
       /* target list */
       targets: [ C66LE, M4LE, A15LE]
    },
    k2g :
    {
        /* this variable would be reinitialized to true, if XDCARGS contains am571x */
        build: "false",     
       /* SoC lib enabled */
       socDevLib: "true",
       /* Library options */
       copts: " -DSOC_K2G",
       /* target list */
       targets: [ C66LE, A15LE]
    }    
};

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