aboutsummaryrefslogtreecommitdiffstats
path: root/share/qbs/modules/cpp/iar.js
diff options
context:
space:
mode:
Diffstat (limited to 'share/qbs/modules/cpp/iar.js')
-rw-r--r--share/qbs/modules/cpp/iar.js505
1 files changed, 318 insertions, 187 deletions
diff --git a/share/qbs/modules/cpp/iar.js b/share/qbs/modules/cpp/iar.js
index f1c41fe64..d25b74324 100644
--- a/share/qbs/modules/cpp/iar.js
+++ b/share/qbs/modules/cpp/iar.js
@@ -38,35 +38,138 @@ var TemporaryDir = require("qbs.TemporaryDir");
var TextFile = require("qbs.TextFile");
function supportXLinker(architecture) {
- return architecture === "78k" || architecture === "avr"
- || architecture === "avr32" || architecture === "mcs51"
- || architecture === "msp430" || architecture === "v850"
- || architecture === "m68k" || architecture === "m32c"
- || architecture === "r32c" || architecture === "m16c"
- || architecture === "cr16";
+ return architecture === "78k"
+ || architecture === "avr"
+ || architecture === "avr32"
+ || architecture === "cr16"
+ || architecture === "hcs12"
+ || architecture === "hcs8"
+ || architecture === "m16c"
+ || architecture === "m32c"
+ || architecture === "m68k"
+ || architecture === "mcs51"
+ || architecture === "msp430"
+ || architecture === "r32c"
+ || architecture === "v850";
}
function supportILinker(architecture) {
return architecture.startsWith("arm")
- || architecture === "rh850" || architecture === "rl78"
- || architecture === "rx" || architecture === "stm8"
- || architecture === "sh" || architecture === "riscv";
+ || architecture === "rh850"
+ || architecture === "riscv"
+ || architecture === "rl78"
+ || architecture === "rx"
+ || architecture === "sh"
+ || architecture === "stm8";
}
function supportXArchiver(architecture) {
- return architecture === "mcs51" || architecture === "avr"
- || architecture === "msp430" || architecture === "v850"
- || architecture === "78k" || architecture === "avr32"
- || architecture === "m68k" || architecture === "m32c"
- || architecture === "r32c" || architecture === "m16c"
- || architecture === "cr16";
+ return architecture === "78k"
+ || architecture === "avr"
+ || architecture === "avr32"
+ || architecture === "cr16"
+ || architecture === "hcs12"
+ || architecture === "hcs8"
+ || architecture === "m16c"
+ || architecture === "m32c"
+ || architecture === "m68k"
+ || architecture === "mcs51"
+ || architecture === "msp430"
+ || architecture === "r32c"
+ || architecture === "v850";
}
function supportIArchiver(architecture) {
return architecture.startsWith("arm")
- || architecture === "stm8" || architecture === "rl78"
- || architecture === "rx" || architecture === "rh850"
- || architecture === "sh" || architecture === "riscv";
+ || architecture === "rh850"
+ || architecture === "riscv"
+ || architecture === "rl78"
+ || architecture === "rx"
+ || architecture === "sh"
+ || architecture === "stm8";
+}
+
+function supportXAssembler(architecture) {
+ return architecture.startsWith("arm")
+ || architecture === "78k"
+ || architecture === "avr"
+ || architecture === "hcs12"
+ || architecture === "m16c"
+ || architecture === "mcs51"
+ || architecture === "msp430"
+ || architecture === "m32c"
+ || architecture === "v850";
+}
+
+function supportIAssembler(architecture) {
+ return architecture === "avr32"
+ || architecture === "cr16"
+ || architecture === "hcs8"
+ || architecture === "r32c"
+ || architecture === "rh850"
+ || architecture === "riscv"
+ || architecture === "rl78"
+ || architecture === "rx"
+ || architecture === "sh"
+ || architecture === "stm8"
+ || architecture === "m68k";
+}
+
+function supportEndianness(architecture) {
+ return architecture.startsWith("arm")
+ || architecture === "rx";
+}
+
+function supportCppExceptions(architecture) {
+ return architecture.startsWith("arm")
+ || architecture === "rh850"
+ || architecture === "riscv"
+ || architecture === "rl78"
+ || architecture === "rx";
+}
+
+function supportCppRtti(architecture) {
+ return architecture.startsWith("arm")
+ || architecture === "rh850"
+ || architecture === "riscv"
+ || architecture === "rl78"
+ || architecture === "rx";
+}
+
+function supportCppWarningAboutCStyleCast(architecture) {
+ return architecture.startsWith("arm")
+ || architecture === "avr"
+ || architecture === "avr32"
+ || architecture === "cr16"
+ || architecture === "mcs51"
+ || architecture === "msp430"
+ || architecture === "rh850"
+ || architecture === "rl78"
+ || architecture === "rx"
+ || architecture === "stm8"
+ || architecture === "v850";
+}
+
+function supportDeprecatedFeatureWarnings(architecture) {
+ return architecture.startsWith("arm")
+ || architecture === "avr"
+ || architecture === "cr16"
+ || architecture === "mcs51"
+ || architecture === "msp430"
+ || architecture === "rh850"
+ || architecture === "rl78"
+ || architecture === "rx"
+ || architecture === "stm8"
+ || architecture === "v850";
+}
+
+function supportCLanguageVersion(architecture) {
+ return architecture !== "78k";
+}
+
+function supportCppLanguage(compilerFilePath) {
+ var baseName = FileInfo.baseName(compilerFilePath);
+ return baseName !== "iccs08";
}
// It is a 'magic' IAR-specific target architecture code.
@@ -94,7 +197,11 @@ function architectureCode(architecture) {
return "34";
case "cr16":
return "45";
- case "rh850": case "rl78": case "rx": case "stm8": case "sh": case "riscv":
+ case "hcs12":
+ return "12";
+ case "hcs8":
+ return "78";
+ case "rh850": case "riscv": case "rl78": case "rx": case "sh": case "stm8":
return "";
default:
if (architecture.startsWith("arm"))
@@ -107,40 +214,44 @@ function compilerName(qbs) {
var architecture = qbs.architecture;
if (architecture.startsWith("arm"))
return "iccarm";
- else if (architecture === "mcs51")
- return "icc8051";
+ else if (architecture === "78k")
+ return "icc78k";
else if (architecture === "avr")
return "iccavr";
- else if (architecture === "stm8")
- return "iccstm8";
+ else if (architecture === "avr32")
+ return "iccavr32";
+ else if (architecture === "cr16")
+ return "icccr16c";
+ else if (architecture === "hcs12")
+ return "icchcs12";
+ else if (architecture === "hcs8")
+ return "iccs08";
+ else if (architecture === "m16c")
+ return "iccm16c";
+ else if (architecture === "m32c")
+ return "iccm32c";
+ else if (architecture === "m68k")
+ return "icccf";
+ else if (architecture === "mcs51")
+ return "icc8051";
else if (architecture === "msp430")
return "icc430";
- else if (architecture === "v850")
- return "iccv850";
- else if (architecture === "78k")
- return "icc78k";
+ else if (architecture === "r32c")
+ return "iccr32c";
+ else if (architecture === "rh850")
+ return "iccrh850";
+ else if (architecture === "riscv")
+ return "iccriscv";
else if (architecture === "rl78")
return "iccrl78";
else if (architecture === "rx")
return "iccrx";
- else if (architecture === "rh850")
- return "iccrh850";
- else if (architecture === "avr32")
- return "iccavr32";
else if (architecture === "sh")
return "iccsh";
- else if (architecture === "riscv")
- return "iccriscv";
- else if (architecture === "m68k")
- return "icccf";
- else if (architecture === "m32c")
- return "iccm32c";
- else if (architecture === "r32c")
- return "iccr32c";
- else if (architecture === "m16c")
- return "iccm16c";
- else if (architecture === "cr16")
- return "icccr16c";
+ else if (architecture === "stm8")
+ return "iccstm8";
+ else if (architecture === "v850")
+ return "iccv850";
throw "Unable to deduce compiler name for unsupported architecture: '"
+ architecture + "'";
}
@@ -149,40 +260,44 @@ function assemblerName(qbs) {
var architecture = qbs.architecture;
if (architecture.startsWith("arm"))
return "iasmarm";
- else if (architecture === "rl78")
- return "iasmrl78";
- else if (architecture === "rx")
- return "iasmrx";
- else if (architecture === "rh850")
- return "iasmrh850";
- else if (architecture === "mcs51")
- return "a8051";
- else if (architecture === "avr")
- return "aavr";
- else if (architecture === "stm8")
- return "iasmstm8";
- else if (architecture === "msp430")
- return "a430";
- else if (architecture === "v850")
- return "av850";
else if (architecture === "78k")
return "a78k";
+ else if (architecture === "avr")
+ return "aavr";
else if (architecture === "avr32")
return "aavr32";
- else if (architecture === "sh")
- return "iasmsh";
- else if (architecture === "riscv")
- return "iasmriscv";
- else if (architecture === "m68k")
- return "acf";
+ else if (architecture === "cr16")
+ return "acr16c";
+ else if (architecture === "hcs12")
+ return "ahcs12";
+ else if (architecture === "hcs8")
+ return "as08";
+ else if (architecture === "m16c")
+ return "am16c";
else if (architecture === "m32c")
return "am32c";
+ else if (architecture === "m68k")
+ return "acf";
+ else if (architecture === "mcs51")
+ return "a8051";
+ else if (architecture === "msp430")
+ return "a430";
else if (architecture === "r32c")
return "ar32c";
- else if (architecture === "m16c")
- return "am16c";
- else if (architecture === "cr16")
- return "acr16c";
+ else if (architecture === "rh850")
+ return "iasmrh850";
+ else if (architecture === "riscv")
+ return "iasmriscv";
+ else if (architecture === "rl78")
+ return "iasmrl78";
+ else if (architecture === "rx")
+ return "iasmrx";
+ else if (architecture === "sh")
+ return "iasmsh";
+ else if (architecture === "stm8")
+ return "iasmstm8";
+ else if (architecture === "v850")
+ return "av850";
throw "Unable to deduce assembler name for unsupported architecture: '"
+ architecture + "'";
}
@@ -253,16 +368,16 @@ function guessArmArchitecture(core) {
arch += "v4m";
else if (core === "__ARM4TM__")
arch += "v4tm";
- else if (core === "__ARM5__")
- arch += "v5";
else if (core === "__ARM5E__")
arch += "v5e";
- else if (core === "__ARM6__")
- arch += "v6";
+ else if (core === "__ARM5__")
+ arch += "v5";
else if (core === "__ARM6M__")
arch += "v6m";
else if (core === "__ARM6SM__")
arch += "v6sm";
+ else if (core === "__ARM6__")
+ arch += "v6";
else if (core === "__ARM7M__")
arch += "v7m";
else if (core === "__ARM7R__")
@@ -271,42 +386,46 @@ function guessArmArchitecture(core) {
}
function guessArchitecture(macros) {
- if (macros["__ICCARM__"] === "1")
- return guessArmArchitecture(macros["__CORE__"]);
- else if (macros["__ICC8051__"] === "1")
- return "mcs51";
- else if (macros["__ICCAVR__"] === "1")
- return "avr";
- else if (macros["__ICCSTM8__"] === "1")
- return "stm8";
- else if (macros["__ICC430__"] === "1")
+ if (macros["__ICC430__"] === "1")
return "msp430";
- else if (macros["__ICCRL78__"] === "1")
- return "rl78";
- else if (macros["__ICCRX__"] === "1")
- return "rx";
- else if (macros["__ICCRH850__"] === "1")
- return "rh850";
- else if (macros["__ICCV850__"] === "1")
- return "v850";
else if (macros["__ICC78K__"] === "1")
return "78k";
+ else if (macros["__ICC8051__"] === "1")
+ return "mcs51";
+ else if (macros["__ICCARM__"] === "1")
+ return guessArmArchitecture(macros["__CORE__"]);
else if (macros["__ICCAVR32__"] === "1")
return "avr32";
- else if (macros["__ICCSH__"] === "1")
- return "sh";
- else if (macros["__ICCRISCV__"] === "1")
- return "riscv";
+ else if (macros["__ICCAVR__"] === "1")
+ return "avr";
else if (macros["__ICCCF__"] === "1")
return "m68k";
+ else if (macros["__ICCCR16C__"] === "1")
+ return "cr16";
+ else if (macros["__ICCHCS12__"] === "1")
+ return "hcs12";
+ else if (macros["__ICCM16C__"] === "1")
+ return "m16c";
else if (macros["__ICCM32C__"] === "1")
return "m32c";
else if (macros["__ICCR32C__"] === "1")
return "r32c";
- else if (macros["__ICCM16C__"] === "1")
- return "m16c";
- else if (macros["__ICCCR16C__"] === "1")
- return "cr16";
+ else if (macros["__ICCRH850__"] === "1")
+ return "rh850";
+ else if (macros["__ICCRISCV__"] === "1")
+ return "riscv";
+ else if (macros["__ICCRL78__"] === "1")
+ return "rl78";
+ else if (macros["__ICCRX__"] === "1")
+ return "rx";
+ else if (macros["__ICCS08__"] === "1")
+ return "hcs8";
+ else if (macros["__ICCSH__"] === "1")
+ return "sh";
+ else if (macros["__ICCSTM8__"] === "1")
+ return "stm8";
+ else if (macros["__ICCV850__"] === "1")
+ return "v850";
}
function guessEndianness(macros) {
@@ -315,19 +434,31 @@ function guessEndianness(macros) {
return "big"
}
-function guessVersion(macros, architecture)
-{
+function guessVersion(macros, architecture) {
var version = parseInt(macros["__VER__"], 10);
if (architecture.startsWith("arm")) {
return { major: parseInt(version / 1000000),
minor: parseInt(version / 1000) % 1000,
patch: parseInt(version) % 1000 }
- } else if (architecture === "mcs51" || architecture === "avr" || architecture === "stm8"
- || architecture === "msp430" || architecture === "rl78" || architecture === "rx"
- || architecture === "rh850" || architecture === "v850" || architecture === "78k"
- || architecture === "avr32" || architecture === "sh" || architecture === "riscv"
- || architecture === "m68k" || architecture === "m32c" || architecture === "r32c"
- || architecture === "m16c" || architecture === "cr16") {
+ } else if (architecture === "78k"
+ || architecture === "avr"
+ || architecture === "avr32"
+ || architecture === "cr16"
+ || architecture === "hcs12"
+ || architecture === "hcs8"
+ || architecture === "m16c"
+ || architecture === "m32c"
+ || architecture === "m68k"
+ || architecture === "mcs51"
+ || architecture === "msp430"
+ || architecture === "r32c"
+ || architecture === "rh850"
+ || architecture === "riscv"
+ || architecture === "rl78"
+ || architecture === "rx"
+ || architecture === "sh"
+ || architecture === "stm8"
+ || architecture === "v850") {
return { major: parseInt(version / 100),
minor: parseInt(version % 100),
patch: 0 }
@@ -338,24 +469,25 @@ function cppLanguageOption(compilerFilePath) {
var baseName = FileInfo.baseName(compilerFilePath);
switch (baseName) {
case "iccarm":
- case "iccrl78":
- case "iccrx":
case "iccrh850":
case "iccriscv":
+ case "iccrl78":
+ case "iccrx":
return "--c++";
- case "icc8051":
- case "iccavr":
- case "iccstm8":
case "icc430":
- case "iccv850":
case "icc78k":
+ case "icc8051":
+ case "iccavr":
case "iccavr32":
- case "iccsh":
case "icccf":
+ case "icccr16c":
+ case "icchcs12":
+ case "iccm16c":
case "iccm32c":
case "iccr32c":
- case "iccm16c":
- case "icccr16c":
+ case "iccsh":
+ case "iccstm8":
+ case "iccv850":
return "--ec++";
}
throw "Unable to deduce C++ language option for unsupported compiler: '"
@@ -369,7 +501,7 @@ function dumpMacros(compilerFilePath, tag) {
var outFilePath = FileInfo.fromNativeSeparators(tempDir.path() + "/iar-macros.predef");
var args = [ inFilePath, "--predef_macros", outFilePath ];
- if (tag && tag === "cpp")
+ if (tag === "cpp" && supportCppLanguage(compilerFilePath))
args.push(cppLanguageOption(compilerFilePath));
var p = new Process();
@@ -378,45 +510,47 @@ function dumpMacros(compilerFilePath, tag) {
return ModUtils.extractMacros(outFile.readAll());
}
-function dumpDefaultPaths(compilerFilePath, tag) {
+function dumpCompilerIncludePaths(compilerFilePath, tag) {
+ // We can dump the compiler include paths using the undocumented `--IDE3` flag,
+ // e.g. which also is used in the IAR extension for the VSCode. In this case the
+ // compiler procuces the console output in the following format:
+ // `$$TOOL_BEGIN $$VERSION "3" $$INC_BEGIN $$FILEPATH "<path\\to\\directory>" $$TOOL_END`
+
var tempDir = new TemporaryDir();
var inFilePath = FileInfo.fromNativeSeparators(tempDir.path() + "/empty-source.c");
var inFile = new TextFile(inFilePath, TextFile.WriteOnly);
- var args = [ inFilePath, "--preinclude", "." ];
- if (tag === "cpp")
+ var args = ["--IDE3", inFilePath];
+ if (tag === "cpp" && supportCppLanguage(compilerFilePath))
args.push(cppLanguageOption(compilerFilePath));
+ var includePaths = [];
var p = new Process();
- // This process should return an error, don't throw
- // an error in this case.
+ // It is possible that the process can return an error code in case the
+ // compiler does not support the `--IDE3` flag. So, don't throw an error in this case.
p.exec(compilerFilePath, args, false);
- var output = p.readStdErr();
-
- var includePaths = [];
- var pass = 0;
- for (var pos = 0; pos < output.length; ++pos) {
- var searchIndex = output.indexOf("searched:", pos);
- if (searchIndex === -1)
- break;
- var startQuoteIndex = output.indexOf('"', searchIndex + 1);
- if (startQuoteIndex === -1)
- break;
- var endQuoteIndex = output.indexOf('"', startQuoteIndex + 1);
- if (endQuoteIndex === -1)
- break;
- pos = endQuoteIndex + 1;
-
- // Ignore the first path as it is not a compiler include path.
- ++pass;
- if (pass === 1)
- continue;
+ p.readStdOut().trim().split(/\r?\n/g).map(function(line) {
+ var m = line.match(/\$\$INC_BEGIN\s\$\$FILEPATH\s\"([^"]*)/);
+ if (m) {
+ var includePath = m[1].replace(/\\\\/g, '/');
+ if (includePath)
+ includePaths.push(includePath);
+ }
+ });
- var path = output.substring(startQuoteIndex + 1, endQuoteIndex)
- .replace(/[\s]{2,}/g, ' ');
- includePaths.push(path);
+ if (includePaths.length === 0) {
+ // This can happen if the compiler does not support the `--IDE3` flag,
+ // e.g. IAR for S08 architecture. In this case we use fallback to the
+ // detection of the `inc` directory.
+ var includePath = FileInfo.joinPaths(FileInfo.path(compilerFilePath), "../inc/");
+ includePaths.push(includePath);
}
+ return includePaths;
+}
+
+function dumpDefaultPaths(compilerFilePath, tag) {
+ var includePaths = dumpCompilerIncludePaths(compilerFilePath, tag);
return {
"includePaths": includePaths
};
@@ -441,7 +575,7 @@ function collectLibraryDependencies(product) {
if (!obj.cpp)
return;
function ensureArray(a) {
- return Array.isArray(a) ? a : [];
+ return (a instanceof Array) ? a : [];
}
function sanitizedModuleListProperty(obj, moduleName, propertyName) {
return ensureArray(ModUtils.sanitizedModuleProperty(obj, moduleName, propertyName));
@@ -521,9 +655,6 @@ function staticLibraryLinkerOutputArtifacts(product) {
}
function compilerFlags(project, product, input, outputs, explicitlyDependsOn) {
- // Determine which C-language we're compiling.
- var tag = ModUtils.fileTagForTargetLanguage(input.fileTags.concat(outputs.obj[0].fileTags));
-
var args = [];
// Input.
@@ -580,6 +711,7 @@ function compilerFlags(project, product, input, outputs, explicitlyDependsOn) {
}
var architecture = input.qbs.architecture;
+ var tag = ModUtils.fileTagForTargetLanguage(input.fileTags.concat(outputs.obj[0].fileTags));
// Warning level flags.
switch (input.cpp.warningLevel) {
@@ -587,24 +719,21 @@ function compilerFlags(project, product, input, outputs, explicitlyDependsOn) {
args.push("--no_warnings");
break;
case "all":
- if (architecture !== "78k") {
- if (architecture !== "avr32" && architecture !== "r32c"
- && architecture !== "sh" && architecture !== "m16c") {
+ if (supportDeprecatedFeatureWarnings(architecture)) {
args.push("--deprecated_feature_warnings="
+"+attribute_syntax,"
+"+preprocessor_extensions,"
+"+segment_pragmas");
}
- if (tag === "cpp")
+ if (tag === "cpp" && supportCppWarningAboutCStyleCast(architecture))
args.push("--warn_about_c_style_casts");
- }
break;
}
if (input.cpp.treatWarningsAsErrors)
args.push("--warnings_are_errors");
// C language version flags.
- if (tag === "c" && (architecture !== "78k")) {
+ if (tag === "c" && supportCLanguageVersion(architecture)) {
var knownValues = ["c89"];
var cLanguageVersion = Cpp.languageVersion(
input.cpp.cLanguageVersion, knownValues, "C");
@@ -620,35 +749,27 @@ function compilerFlags(project, product, input, outputs, explicitlyDependsOn) {
}
// C++ language version flags.
- if (tag === "cpp") {
- if (architecture.startsWith("arm")
- || architecture === "rl78" || architecture === "rx"
- || architecture === "rh850" || architecture === "riscv") {
- // Enable C++ language flags.
- args.push("--c++");
- // Exceptions flags.
- if (!input.cpp.enableExceptions)
- args.push("--no_exceptions");
- // RTTI flags.
- if (!input.cpp.enableRtti)
- args.push("--no_rtti");
- } else if (architecture === "stm8" || architecture === "mcs51"
- || architecture === "avr" || architecture === "msp430"
- || architecture === "v850" || architecture === "78k"
- || architecture === "avr32" || architecture === "sh"
- || architecture === "m68k" || architecture === "m32c"
- || architecture === "r32c" || architecture === "m16c"
- || architecture === "cr16") {
- args.push("--ec++");
- }
+ var compilerFilePath = input.cpp.compilerPath;
+ if (tag === "cpp" && supportCppLanguage(compilerFilePath)) {
+ // C++ language flag.
+ var cppOption = cppLanguageOption(compilerFilePath);
+ args.push(cppOption);
+
+ // Exceptions flag.
+ var enableExceptions = input.cpp.enableExceptions;
+ if (!enableExceptions && supportCppExceptions(architecture))
+ args.push("--no_exceptions");
+
+ // RTTI flag.
+ var enableRtti = input.cpp.enableRtti;
+ if (!enableRtti && supportCppRtti(architecture))
+ args.push("--no_rtti");
}
// Byte order flags.
- if (architecture.startsWith("arm") || architecture === "rx") {
- var endianness = input.cpp.endianness;
- if (endianness)
- args.push("--endian=" + endianness);
- }
+ var endianness = input.cpp.endianness;
+ if (endianness && supportEndianness(architecture))
+ args.push("--endian=" + endianness);
// Listing files generation flag.
if (input.cpp.generateCompilerListingFiles)
@@ -675,6 +796,16 @@ function assemblerFlags(project, product, input, outputs, explicitlyDependsOn) {
// Output.
args.push("-o", outputs.obj[0].filePath);
+ var architecture = input.qbs.architecture;
+
+ // The `--preinclude` flag is only supported for a certain
+ // set of assemblers, not for all.
+ if (supportIAssembler(architecture)) {
+ var prefixHeaders = input.cpp.prefixHeaders;
+ for (var i in prefixHeaders)
+ args.push("--preinclude", prefixHeaders[i]);
+ }
+
// Includes.
var allIncludePaths = [];
var systemIncludePaths = input.cpp.systemIncludePaths;
@@ -690,12 +821,7 @@ function assemblerFlags(project, product, input, outputs, explicitlyDependsOn) {
args.push("-r");
// Architecture specific flags.
- var architecture = input.qbs.architecture;
- if (architecture === "stm8" || architecture === "rl78"
- || architecture === "rx" || architecture === "rh850"
- || architecture === "avr32" || architecture === "sh"
- || architecture === "riscv" || architecture === "m68k"
- || architecture === "r32c" || architecture === "cr16") {
+ if (supportIAssembler(architecture)) {
// Silent output generation flag.
args.push("--silent");
// Warning level flags.
@@ -703,13 +829,18 @@ function assemblerFlags(project, product, input, outputs, explicitlyDependsOn) {
args.push("--no_warnings");
if (input.cpp.treatWarningsAsErrors)
args.push("--warnings_are_errors");
- } else {
+ } else if (supportXAssembler(architecture)){
// Silent output generation flag.
args.push("-S");
// Warning level flags.
args.push("-w" + (input.cpp.warningLevel === "none" ? "-" : "+"));
}
+ // Byte order flags.
+ var endianness = input.cpp.endianness;
+ if (endianness && supportEndianness(architecture))
+ args.push("--endian=" + endianness);
+
// Listing files generation flag.
if (input.cpp.generateAssemblerListingFiles)
args.push("-l", outputs.lst[0].filePath);