motor-control-sdk/.project/genTirex.js
Naresh A 5f968b0bf2 am64x/am243x/am263x : initial commit for motor control sdk
Initial commit for motor control sdk

Fixes: PINDSW-5635

Signed-off-by: Naresh A <nareshk@ti.com>
2023-07-04 18:02:46 +05:30

191 lines
6.8 KiB
JavaScript

const common = require(`./common.js`);
function genTirexSystemProjectContent(example, device) {
let deviceData = require(`./device/project_${device}.js`);
let property = require(`../${example}`).getComponentProperty(device);
let systemProjects = require(`../${example}`).getSystemProjects(device);
let folder_list = common.path.relative("examples", property.dirPath).split("/");
let tirex_content = {};
tirex_content.resourceType = `project.ccs`;
tirex_content.resourceClass = [ `example` ];
if(property.tirexResourceSubClass)
{
tirex_content.resourceSubClass = property.tirexResourceSubClass;
}
else
{
tirex_content.resourceSubClass = [ "example.general" ];
}
if(property.description)
{
tirex_content.description = property.description + " System project.";
}
else
{
tirex_content.description = common.getDefaultSystemProjectDescription(property.name);
}
tirex_content.name = property.name;
tirex_content.location = common.path.relative(".metadata/.tirex", `${property.dirPath}/${project.board}/system_${project.tag}`) + "/system.projectspec";
tirex_content.devtools = [ deviceData.getDevToolTirex(project.board) ];
tirex_content.kernel = [];
/* Temp fix: TIREX doesn't support multiple compiler for a project. System project doesn't need this. So keep it empty */
//tirex_content.compiler = [];
/* Temp fix: Push only one kernel as TIREX doesn't support a list yet. Remove when this is fixed */
tirex_content.kernel.push(project.projects[0].os);
for (subproject of project.projects)
{
/* Temp fix: see above */
//tirex_content.kernel.push(subproject.os);
/* Temp fix: see above */
//switch(subproject.cgt)
//{
// case "ti-arm-clang":
// tirex_content.compiler.push("ticlang");
// break;
// case "gcc-aarch64":
// tirex_content.compiler.push("gcc");
// break;
// case "gcc-armv7":
// tirex_content.compiler.push("gcc");
// break;
//}
}
/* Remove duplicates */
tirex_content.kernel = [...new Set(tirex_content.kernel)];
/* Temp fix: see above */
//tirex_content.compiler = [...new Set(tirex_content.compiler)];
tirex_content.subCategories = [ ...folder_list, "system_" + `${project.tag}`];
tirex_content.mainCategories = [[ `Examples`, `Development Tools` ]];
return (tirex_content);
}
function genTirexExampleContentList(example_file_list, device) {
let tirex_content_list = [];
let deviceData = require(`./device/project_${device}.js`);
let devtools_list = []; /* For userguide */
for(example of example_file_list) {
let property = require(`../${example}`).getComponentProperty(device);
if(property.skipUpdatingTirex || property.skipProjectSpec || property.isInternal)
continue;
for(buildOption of property.buildOptionCombos) {
let projectSpecOutPath = common.path.makeExampleOutPath(property.dirPath, buildOption);
let folder_list = common.path.relative("examples", property.dirPath).split("/");
let tirex_content = {};
tirex_content.resourceType = `project.ccs`;
tirex_content.resourceClass = [ `example` ];
if(property.tirexResourceSubClass)
{
tirex_content.resourceSubClass = property.tirexResourceSubClass;
}
else
{
tirex_content.resourceSubClass = [ "example.general" ];
}
if(property.description)
{
tirex_content.description = property.description + " CPU is " + buildOption.cpu.toUpperCase() + " running " + buildOption.os.toUpperCase() + ".";
}
else
{
tirex_content.description = common.getDefaultProjectDescription(property.name, buildOption.cpu, buildOption.os);
}
tirex_content.name = property.name;
tirex_content.location = common.path.relative(".metadata/.tirex", projectSpecOutPath) + "/example.projectspec";
let devtools = deviceData.getDevToolTirex(buildOption.board);
tirex_content.devtools = [ devtools ];
devtools_list.push(devtools);
tirex_content.kernel = [];
tirex_content.compiler = [];
tirex_content.kernel.push(buildOption.os);
switch(buildOption.cgt)
{
case "ti-arm-clang":
tirex_content.compiler.push("ticlang");
break;
case "gcc-aarch64":
tirex_content.compiler.push("gcc");
break;
case "gcc-armv7":
tirex_content.compiler.push("gcc");
break;
case "ti-c6000":
tirex_content.compiler.push("ccs");
break;
}
tirex_content.subCategories = [ ...folder_list, `${buildOption.cpu}` + "_" +`${buildOption.os}`];
tirex_content.mainCategories = [[ `Examples`, `Development Tools` ]];
if (buildOption.os == "freertos-smp")
{
}
else
{
tirex_content_list.push(tirex_content);
}
}
}
for(example of example_file_list) {
let tirex_content = {};
example_js = require(`../${example}`);
if( ! example_js.getSystemProjects)
continue;
let property = require(`../${example}`).getComponentProperty(device);
if(property.skipUpdatingTirex || property.skipProjectSpec || property.isInternal)
continue;
let systemProjects = require(`../${example}`).getSystemProjects(device);
for(project of systemProjects) {
tirex_content = genTirexSystemProjectContent(example, device);
tirex_content_list.push(tirex_content);
}
}
let tirex_content = {};
tirex_content.resourceType = `web.page`
tirex_content.resourceClass = [ `document` ];
tirex_content.name = "User Guide";
tirex_content.location = `../../docs/api_guide_${device}/index.html`;
tirex_content.devtools = [ ...new Set(devtools_list) ];
tirex_content.mainCategories = [[ `Documents` ]];
tirex_content_list.push(tirex_content);
let args = {
tirex_content_list
};
common.convertTemplateToFile(
`.project/templates/tirex_content.xdt`,
`.metadata/.tirex/${device}.content.tirex.json`,
args);
}
function genTirexDevice(device) {
let example_file_list = require(`./device/project_${device}`).getExampleList();
genTirexExampleContentList(example_file_list, device);
}
module.exports = {
genTirexDevice
}