diff options
author | Denis Shienkov <denis.shienkov@gmail.com> | 2019-05-10 12:27:28 +0300 |
---|---|---|
committer | Denis Shienkov <denis.shienkov@gmail.com> | 2019-05-10 13:20:54 +0000 |
commit | b59edb3e2e67453318f5f2f48c86c3f45e8b1e46 (patch) | |
tree | 5f58dbc0a7928632ff4f92063ef16147f9428ed8 /share | |
parent | db4a3f1f91a5ddec9c6447e28ced46e6e381ac18 (diff) |
bare-metal: Implement cpp.compilerDefinesByLanguage for IAR toolchain
Change-Id: Id18528b1f6f6a98bec3f877e70c660180078a66c
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'share')
-rw-r--r-- | share/qbs/imports/qbs/Probes/IarProbe.qbs | 17 | ||||
-rw-r--r-- | share/qbs/modules/cpp/iar.js | 12 | ||||
-rw-r--r-- | share/qbs/modules/cpp/iar.qbs | 3 |
3 files changed, 25 insertions, 7 deletions
diff --git a/share/qbs/imports/qbs/Probes/IarProbe.qbs b/share/qbs/imports/qbs/Probes/IarProbe.qbs index 12b3c46eb..04d338268 100644 --- a/share/qbs/imports/qbs/Probes/IarProbe.qbs +++ b/share/qbs/imports/qbs/Probes/IarProbe.qbs @@ -34,6 +34,7 @@ import "../../../modules/cpp/iar.js" as IAR PathProbe { // Inputs property string compilerFilePath; + property stringList enableDefinesByLanguage; property string _nullDevice: qbs.nullDevice @@ -43,14 +44,28 @@ PathProbe { property int versionMajor; property int versionMinor; property int versionPatch; + property var compilerDefinesByLanguage; configure: { + compilerDefinesByLanguage = {}; + if (!File.exists(compilerFilePath)) { found = false; return; } - var macros = IAR.dumpMacros(compilerFilePath, qbs, _nullDevice); + var languages = enableDefinesByLanguage; + if (!languages || languages.length === 0) + languages = ["c"]; + + for (var i = 0; i < languages.length; ++i) { + var tag = languages[i]; + compilerDefinesByLanguage[tag] = IAR.dumpMacros( + compilerFilePath, tag); + } + + var macros = compilerDefinesByLanguage["c"] + || compilerDefinesByLanguage["cpp"]; architecture = IAR.guessArchitecture(macros); endianness = IAR.guessEndianness(macros); diff --git a/share/qbs/modules/cpp/iar.js b/share/qbs/modules/cpp/iar.js index 35ed29da3..cf4577c6a 100644 --- a/share/qbs/modules/cpp/iar.js +++ b/share/qbs/modules/cpp/iar.js @@ -56,16 +56,18 @@ function guessEndianness(macros) return "big" } -function dumpMacros(compilerFilePath, qbs, nullDevice) { +function dumpMacros(compilerFilePath, tag) { var tempDir = new TemporaryDir(); var inFilePath = FileInfo.fromNativeSeparators(tempDir.path() + "/empty-source.c"); var inFile = new TextFile(inFilePath, TextFile.WriteOnly); var outFilePath = FileInfo.fromNativeSeparators(tempDir.path() + "/iar-macros.predef"); - var p = new Process(); - p.exec(compilerFilePath, - [ inFilePath, "--predef_macros", outFilePath ], - true); + var args = [ inFilePath, "--predef_macros", outFilePath ]; + if (tag && tag === "cpp") + args.push("--ec++"); + + var p = new Process(); + p.exec(compilerFilePath, args, true); var outFile = new TextFile(outFilePath, TextFile.ReadOnly); var map = {}; outFile.readAll().trim().split(/\r?\n/g).map(function (line) { diff --git a/share/qbs/modules/cpp/iar.qbs b/share/qbs/modules/cpp/iar.qbs index 3dea255db..05a76c6b5 100644 --- a/share/qbs/modules/cpp/iar.qbs +++ b/share/qbs/modules/cpp/iar.qbs @@ -50,6 +50,7 @@ CppModule { id: iarProbe condition: !_skipAllChecks compilerFilePath: compilerPath + enableDefinesByLanguage: enableCompilerDefinesByLanguage } qbs.architecture: iarProbe.found ? iarProbe.architecture : original @@ -59,7 +60,7 @@ CppModule { compilerVersionPatch: iarProbe.versionPatch endianness: iarProbe.endianness - compilerDefinesByLanguage: [] + compilerDefinesByLanguage: iarProbe.compilerDefinesByLanguage property string toolchainInstallPath: compilerPathProbe.found ? compilerPathProbe.path : undefined |