diff options
author | Denis Shienkov <denis.shienkov@gmail.com> | 2021-06-08 18:02:23 +0300 |
---|---|---|
committer | Denis Shienkov <denis.shienkov@gmail.com> | 2021-06-13 22:32:03 +0000 |
commit | aa859910f956161e1a4bc8b9b5012c2335bf5eca (patch) | |
tree | fa45d98e4c7b5ad8d8b1256b0b0117c4f4d56a77 /share/qbs/modules/cpp/keil.js | |
parent | f0a39bab91c7ea823dcfb645c0b7f934d3f4fcdf (diff) |
baremetal: Introduce new toolchainDetails property
.. to reduce the number of if/else conditions and to simplify the code.
Change-Id: Id4e6574b719986d3fc7f8b27106a60b00cbd67ea
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 | 146 |
1 files changed, 50 insertions, 96 deletions
diff --git a/share/qbs/modules/cpp/keil.js b/share/qbs/modules/cpp/keil.js index 9eb2098c1..b398396df 100644 --- a/share/qbs/modules/cpp/keil.js +++ b/share/qbs/modules/cpp/keil.js @@ -77,102 +77,6 @@ function isArmClangCompiler(compilerPath) { return FileInfo.baseName(compilerPath).toLowerCase() === "armclang"; } -function compilerName(qbs) { - var architecture = qbs.architecture; - if (isMcs51Architecture(architecture)) - return "c51"; - if (isMcs251Architecture(architecture)) - return "c251"; - if (isC166Architecture(architecture)) - return "c166"; - if (isArmArchitecture(architecture)) - return "armcc"; -} - -function assemblerName(qbs) { - var architecture = qbs.architecture; - if (isMcs51Architecture(architecture)) - return "a51"; - if (isMcs251Architecture(architecture)) - return "a251"; - if (isC166Architecture(architecture)) - return "a166"; - if (isArmArchitecture(architecture)) - return "armasm"; -} - -function linkerName(qbs) { - var architecture = qbs.architecture; - if (isMcs51Architecture(architecture)) - return "bl51"; - if (isMcs251Architecture(architecture)) - return "l251"; - if (isC166Architecture(architecture)) - return "l166"; - if (isArmArchitecture(architecture)) - return "armlink"; -} - -function archiverName(qbs) { - var architecture = qbs.architecture; - if (isMcs51Architecture(architecture)) - return "lib51"; - if (isMcs251Architecture(architecture)) - return "lib251"; - if (isC166Architecture(architecture)) - return "lib166"; - if (isArmArchitecture(architecture)) - return "armar"; -} - -function disassemblerName(qbs) { - var architecture = qbs.architecture; - return isArmArchitecture(architecture) ? "fromelf" : undefined; -} - -function staticLibrarySuffix(qbs) { - var architecture = qbs.architecture; - if (isMcsArchitecture(architecture) || isC166Architecture(architecture) - || isArmArchitecture(architecture)) { - return ".lib"; - } -} - -function executableSuffix(qbs) { - var architecture = qbs.architecture; - if (isMcsArchitecture(architecture) || isC166Architecture(architecture)) - return ".abs"; - if (isArmArchitecture(architecture)) - return ".axf"; -} - -function objectSuffix(qbs) { - var architecture = qbs.architecture; - if (isMcsArchitecture(architecture) || isC166Architecture(architecture)) - return ".obj"; - if (isArmArchitecture(architecture)) - return ".o"; -} - -function linkerMapSuffix(qbs) { - var architecture = qbs.architecture; - if (isMcs51Architecture(architecture)) - return ".m51"; - if (isC166Architecture(architecture)) - return ".m66"; - return ".map"; -} - -function imageFormat(qbs) { - var architecture = qbs.architecture; - if (isMcsArchitecture(architecture) || isC166Architecture(architecture)) - // Keil OMF51 or OMF2 Object Module Format (which is an - // extension of the original Intel OMF51). - return "omf"; - if (isArmArchitecture(architecture)) - return "elf"; -} - function preincludeFlag(compilerPath) { if (isArmCCCompiler(compilerPath)) return "--preinclude"; @@ -180,6 +84,56 @@ function preincludeFlag(compilerPath) { return "-include"; } +function toolchainDetails(qbs) { + var architecture = qbs.architecture; + if (isMcs51Architecture(architecture)) { + return { + "imageFormat": "omf", + "linkerMapSuffix":".m51", + "objectSuffix": ".obj", + "executableSuffix": ".abs", + "compilerName": "c51", + "assemblerName": "a51", + "linkerName": "bl51", + "archiverName": "lib51" + }; + } else if (isMcs251Architecture(architecture)) { + return { + "imageFormat": "omf", + "linkerMapSuffix":".m51", + "objectSuffix": ".obj", + "executableSuffix": ".abs", + "compilerName": "c251", + "assemblerName": "a251", + "linkerName": "l251", + "archiverName": "lib251" + }; + } else if (isC166Architecture(architecture)) { + return { + "imageFormat": "omf", + "linkerMapSuffix":".m66", + "objectSuffix": ".obj", + "executableSuffix": ".abs", + "compilerName": "c166", + "assemblerName": "a166", + "linkerName": "l166", + "archiverName": "lib166" + }; + } else if (isArmArchitecture(architecture)) { + return { + "imageFormat": "elf", + "linkerMapSuffix":".map", + "objectSuffix": ".o", + "executableSuffix": ".axf", + "disassemblerName": "fromelf", + "compilerName": "armcc", + "assemblerName": "armasm", + "linkerName": "armlink", + "archiverName": "armar" + }; + } +} + function guessArmCCArchitecture(targetArchArm, targetArchThumb) { var arch = "arm"; if (targetArchArm === "4" && targetArchThumb === "0") |