diff options
author | Denis Shienkov <denis.shienkov@gmail.com> | 2020-07-01 00:33:10 +0300 |
---|---|---|
committer | Denis Shienkov <denis.shienkov@gmail.com> | 2020-07-01 07:38:44 +0000 |
commit | af9263f5270351c921aa189fb6570770171fc707 (patch) | |
tree | 63d97dfc91855713d0bfebfde2a2d1e01149e1ad /share | |
parent | be11a0fbaeac47e4b330ae4adc26a0b8b777f8ce (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.js | 15 |
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), |