diff options
author | Denis Shienkov <denis.shienkov@gmail.com> | 2020-07-02 19:24:42 +0300 |
---|---|---|
committer | Denis Shienkov <denis.shienkov@gmail.com> | 2020-07-03 09:20:00 +0000 |
commit | e7f970758bf6f821c27522d46ff0c89c540179d4 (patch) | |
tree | ae797883afd08bd20e5391dd54f0953d0eeb1079 /share/qbs/modules/cpp/keil.js | |
parent | e4ec60065c4adddd774c05c6fcc219f5c7bfbe70 (diff) | |
download | qbs-e7f970758bf6f821c27522d46ff0c89c540179d4.tar.gz |
baremetal: Simplify cpp.prefixHeaders handling using KEIL ARM toolchains
It seems it makes no sense to add the 'pre-include' flags before the
'defines' and 'includes', because all pre-includes will be pre-processed
after the 'defines' and 'includes'.
At least this note belongs to the 'armclang' compiler:
* http://www.keil.com/support/man/docs/armclang_ref/armclang_ref_sam1452772182261.htm
So, we can simplify the cpp.prefixHeaders handling to minimize the
JS code duplication.
Change-Id: I7c6dd7b5545294ff6aba866c2be9ebbcff190f6f
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
Diffstat (limited to 'share/qbs/modules/cpp/keil.js')
-rw-r--r-- | share/qbs/modules/cpp/keil.js | 34 |
1 files changed, 16 insertions, 18 deletions
diff --git a/share/qbs/modules/cpp/keil.js b/share/qbs/modules/cpp/keil.js index 2462fd754..441b49213 100644 --- a/share/qbs/modules/cpp/keil.js +++ b/share/qbs/modules/cpp/keil.js @@ -175,6 +175,13 @@ function imageFormat(qbs) { + architecture + "'"; } +function preincludeFlag(compilerPath) { + if (isArmCCCompiler(compilerPath)) + return "--preinclude"; + else if (isArmClangCompiler(compilerPath)) + return "-include"; +} + function guessArmCCArchitecture(targetArchArm, targetArchThumb) { var arch = "arm"; if (targetArchArm === "4" && targetArchThumb === "0") @@ -675,8 +682,6 @@ function compilerFlags(project, product, input, outputs, explicitlyDependsOn) { var tag = ModUtils.fileTagForTargetLanguage(input.fileTags.concat(outputs.obj[0].fileTags)); var args = []; - var prefixHeaders = input.cpp.prefixHeaders; - var allDefines = []; var platformDefines = input.cpp.platformDefines; if (platformDefines) @@ -754,16 +759,17 @@ function compilerFlags(project, product, input, outputs, explicitlyDependsOn) { // Output. args.push("-o", outputs.obj[0].filePath); - var compilerPath = input.cpp.compilerPath; - if (isArmCCCompiler(compilerPath)) { - for (var i in prefixHeaders) - args.push("--preinclude", prefixHeaders[i]); + // Defines. + args = args.concat(allDefines.map(function(define) { return '-D' + define })); + // Includes. + args = args.concat(allIncludePaths.map(function(include) { return '-I' + include })); - // Defines. - args = args.concat(allDefines.map(function(define) { return '-D' + define })); - // Includes. - args = args.concat(allIncludePaths.map(function(include) { return '-I' + include })); + var prefixHeaders = input.cpp.prefixHeaders; + for (var i in prefixHeaders) + args.push(input.cpp.preincludeFlag, prefixHeaders[i]); + var compilerPath = input.cpp.compilerPath; + if (isArmCCCompiler(compilerPath)) { // Debug information flags. if (input.cpp.debugInformation) { args.push("--debug"); @@ -838,14 +844,6 @@ function compilerFlags(project, product, input, outputs, explicitlyDependsOn) { args.push("--list_dir", FileInfo.path(outputs.lst[0].filePath)); } } else if (isArmClangCompiler(compilerPath)) { - for (var i in prefixHeaders) - args.push("-include", prefixHeaders[i]); - - // Defines. - args = args.concat(allDefines.map(function(define) { return '-D' + define })); - // Includes. - args = args.concat(allIncludePaths.map(function(include) { return '-I' + include })); - // Debug information flags. if (input.cpp.debugInformation) args.push("-g"); |