aboutsummaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
authorDenis Shienkov <denis.shienkov@gmail.com>2020-07-01 00:33:10 +0300
committerDenis Shienkov <denis.shienkov@gmail.com>2020-07-01 07:38:44 +0000
commitaf9263f5270351c921aa189fb6570770171fc707 (patch)
tree63d97dfc91855713d0bfebfde2a2d1e01149e1ad /share
parentbe11a0fbaeac47e4b330ae4adc26a0b8b777f8ce (diff)
baremetal: Implement cpp.prefixHeaders for SDCC compiler
The SDCC compiler has the -Wp option which allows to pass the preprocessor options directly to the sdcpp preprocessor. Change-Id: I3b2c1bd5accb1bbdc7f7d7309384efc6649f4cfd Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
Diffstat (limited to 'share')
-rw-r--r--share/qbs/modules/cpp/sdcc.js15
1 files changed, 15 insertions, 0 deletions
diff --git a/share/qbs/modules/cpp/sdcc.js b/share/qbs/modules/cpp/sdcc.js
index 15dacb8d0..00778492b 100644
--- a/share/qbs/modules/cpp/sdcc.js
+++ b/share/qbs/modules/cpp/sdcc.js
@@ -177,6 +177,12 @@ function escapeLinkerFlags(product, linkerFlags) {
return ["-Wl " + linkerFlags.join(",")];
}
+function escapePreprocessorFlags(preprocessorFlags) {
+ if (!preprocessorFlags || preprocessorFlags.length === 0)
+ return preprocessorFlags;
+ return ["-Wp " + preprocessorFlags.join(",")];
+}
+
function collectLibraryDependencies(product) {
var seen = {};
var result = [];
@@ -313,6 +319,7 @@ function compilerFlags(project, product, input, outputs, explicitlyDependsOn) {
var tag = ModUtils.fileTagForTargetLanguage(input.fileTags.concat(outputs.obj[0].fileTags));
var args = [];
+ var escapablePreprocessorFlags = [];
// Input.
args.push(input.filePath);
@@ -321,6 +328,10 @@ function compilerFlags(project, product, input, outputs, explicitlyDependsOn) {
args.push("-c");
args.push("-o", outputs.obj[0].filePath);
+ var prefixHeaders = input.cpp.prefixHeaders;
+ for (var i in prefixHeaders)
+ escapablePreprocessorFlags.push("-include " + prefixHeaders[i]);
+
// Defines.
var allDefines = [];
var platformDefines = input.cpp.platformDefines;
@@ -390,6 +401,10 @@ function compilerFlags(project, product, input, outputs, explicitlyDependsOn) {
}
// Misc flags.
+ var escapedPreprocessorFlags = escapePreprocessorFlags(escapablePreprocessorFlags);
+ if (escapedPreprocessorFlags)
+ Array.prototype.push.apply(args, escapedPreprocessorFlags);
+
args = args.concat(ModUtils.moduleProperty(input, "platformFlags"),
ModUtils.moduleProperty(input, "flags"),
ModUtils.moduleProperty(input, "platformFlags", tag),