Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
138 lines
4.8 KiB
JavaScript
138 lines
4.8 KiB
JavaScript
// ____________________________
|
|
// ██▀▀█▀▀██▀▀▀▀▀▀▀█▀▀█ │ ▄▄▄ ▄ ▄▄ ▄▄ ▄▄▄▄ ▄▄
|
|
// ██ ▀ █▄ ▀██▄ ▀ ▄█ ▄▀▀ █ │ ██▄▀ ██ █ ▄ ██ ▄██ ██ ▄█▀▄ ▄█▀▄ ██
|
|
// █ █ █ ▀▀ ▄█ █ █ ▀▄█ █▄ │ ██▄▀ ▀█▄█ ██ ▀█▄ ▀▄██ ██ ▀█▄▀ ▀█▄▀ ▀█▄
|
|
// ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀────────┘
|
|
// by Guillaume 'Aoineko' Blanchard under CC BY-SA license
|
|
//─────────────────────────────────────────────────────────────────────────────
|
|
|
|
//-- MSXgl JS libraries
|
|
const util = require("./util.js");
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// PARSE COMMAND LINE ARGUMENTS
|
|
//-----------------------------------------------------------------------------
|
|
|
|
//-- Setup command line overwrite parameters
|
|
CommandArgs = process.argv.slice(2);
|
|
for (let i = 0; i < CommandArgs.length; i++)
|
|
{
|
|
const arg = CommandArgs[i].toLowerCase();
|
|
if (arg.startsWith("projname="))
|
|
{
|
|
// Handled before loading sub-project file
|
|
}
|
|
else if (arg.startsWith("target="))
|
|
{
|
|
let val = CommandArgs[i].substring(7);
|
|
if (val)
|
|
{
|
|
Target = val;
|
|
util.print(`Command line overwrite => Target=${Target}`, PrintDetail);
|
|
}
|
|
}
|
|
else if (arg.startsWith("machine="))
|
|
{
|
|
let val = CommandArgs[i].substring(8);
|
|
if (val)
|
|
{
|
|
Machine = val;
|
|
util.print(`Command line overwrite => Machine=${Machine}`, PrintDetail);
|
|
}
|
|
}
|
|
else if (arg.startsWith("romsize="))
|
|
{
|
|
let val = CommandArgs[i].substring(8);
|
|
if (val)
|
|
{
|
|
ROMSize = parseInt(val);
|
|
util.print(`Command line overwrite => ROMSize=${ROMSize}`, PrintDetail);
|
|
}
|
|
}
|
|
else if (arg === "delay")
|
|
{
|
|
ROMDelayBoot = true;
|
|
util.print(`Command line overwrite => ROMDelayBoot=${ROMDelayBoot}`, PrintDetail);
|
|
}
|
|
else if (arg === "ramisr")
|
|
{
|
|
InstallRAMISR = "RAM0_ISR";
|
|
util.print(`Command line overwrite => InstallRAMISR=${InstallRAMISR}`, PrintDetail);
|
|
}
|
|
else if (arg === "ramseg")
|
|
{
|
|
InstallRAMISR = "RAM0_SEGMENT";
|
|
util.print(`Command line overwrite => InstallRAMISR=${InstallRAMISR}`, PrintDetail);
|
|
}
|
|
else if (arg === "clean")
|
|
{
|
|
DoClean = true;
|
|
}
|
|
else if (arg === "compile")
|
|
{
|
|
DoCompile = true;
|
|
}
|
|
else if (arg === "make")
|
|
{
|
|
DoMake = true;
|
|
}
|
|
else if (arg === "package")
|
|
{
|
|
DoPackage = true;
|
|
}
|
|
else if (arg === "deploy")
|
|
{
|
|
DoDeploy = true;
|
|
}
|
|
else if (arg === "run")
|
|
{
|
|
DoRun = true;
|
|
}
|
|
else if (arg === "all")
|
|
{
|
|
DoCompile = DoMake = DoPackage = DoDeploy = true;
|
|
}
|
|
else if (arg === "rebuild")
|
|
{
|
|
DoClean = DoCompile = DoMake = DoPackage = DoDeploy = true;
|
|
}
|
|
else if (arg === "none")
|
|
{
|
|
DoCompile = DoMake = DoPackage = DoDeploy = DoRun = false;
|
|
}
|
|
else if (arg.startsWith("define="))
|
|
{
|
|
let params = CommandArgs[i].substring(7).split(":");
|
|
let val = params[0];
|
|
if (params[1] !== undefined)
|
|
val += `=${params[1]}`;
|
|
CompileOpt += ` -D${val}`;
|
|
util.print(`Command line overwrite => CompileOpt+=-D${val}`, PrintDetail);
|
|
}
|
|
else if (arg === "help")
|
|
{
|
|
util.print("Command line arguments:");
|
|
util.print(" projname=<name> Set project name (without extension)");
|
|
util.print(" target=<name> Set target name");
|
|
util.print(" machine=<name> Set machine name");
|
|
util.print(" romsize=<size> Set ROM size (in KB)");
|
|
util.print(" delay Enable ROM delay boot");
|
|
util.print(" ramisr Install the RAM0 interrupt service routine");
|
|
util.print(" ramseg Install the RAM0 segment (with no ISR)");
|
|
util.print(" clean Clean all generated files");
|
|
util.print(" compile Compile all source files");
|
|
util.print(" make Link all files together");
|
|
util.print(" package Convert binary into target format");
|
|
util.print(" deploy Deploy final files into separate directory");
|
|
util.print(" run Run the built program with the selected emulator");
|
|
util.print(" all Do all steps from compile to deploy");
|
|
util.print(" rebuild Clean all generated files, then do all steps (up to deploy)");
|
|
util.print(" none Disable all steps");
|
|
util.print(" define=<name>[:value] Define a compilation symbol (can be used multiple times)");
|
|
util.print(" help Display this command-line arguments list");
|
|
}
|
|
else
|
|
{
|
|
util.print(`Unknown command line overwrite '${arg}'`, PrintWarning);
|
|
}
|
|
} |