aboutsummaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
authorDenis Shienkov <denis.shienkov@gmail.com>2020-08-29 16:24:16 +0300
committerDenis Shienkov <denis.shienkov@gmail.com>2020-08-31 08:43:45 +0000
commit666ff77372ad1c7899bf6317e14bcd4caebdc957 (patch)
tree2329acd177ed5332faa3c213799dc2ab9c2f5114 /share
parent8ae09626519df5410e6c4964950bc848c7ff02b6 (diff)
Extract compiler macros using common JS function
It makes sense to unify the compiler macros extraction using a common JS function, instead of a JS code duplication. Change-Id: I9eb9e8df012ca6bae3a38101906a4c70e2fc38c4 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
Diffstat (limited to 'share')
-rw-r--r--share/qbs/imports/qbs/ModUtils/utils.js11
-rw-r--r--share/qbs/modules/cpp/gcc.js7
-rw-r--r--share/qbs/modules/cpp/iar.js7
-rw-r--r--share/qbs/modules/cpp/keil.js16
-rw-r--r--share/qbs/modules/cpp/sdcc.js7
5 files changed, 16 insertions, 32 deletions
diff --git a/share/qbs/imports/qbs/ModUtils/utils.js b/share/qbs/imports/qbs/ModUtils/utils.js
index 507e68088..5633b7d22 100644
--- a/share/qbs/imports/qbs/ModUtils/utils.js
+++ b/share/qbs/imports/qbs/ModUtils/utils.js
@@ -634,3 +634,14 @@ function toJSLiteral(v) {
return "undefined";
return JSON.stringify(v);
}
+
+function extractMacros(output) {
+ var m = {};
+ output.trim().split(/\r?\n/g).map(function (line) {
+ if (!line.startsWith("#define"))
+ return;
+ var parts = line.split(" ", 3);
+ m[parts[1]] = parts[2];
+ });
+ return m;
+}
diff --git a/share/qbs/modules/cpp/gcc.js b/share/qbs/modules/cpp/gcc.js
index 57666fe42..9b6a074d2 100644
--- a/share/qbs/modules/cpp/gcc.js
+++ b/share/qbs/modules/cpp/gcc.js
@@ -1462,12 +1462,7 @@ function dumpMacros(env, compilerFilePath, args, nullDevice, tag) {
p.exec(compilerFilePath,
(args || []).concat(["-Wp,-dM", "-E", "-x", languageName(tag || "c") , nullDevice]),
true);
- var map = {};
- p.readStdOut().trim().split(/\r?\n/g).map(function (line) {
- var parts = line.split(" ", 3);
- map[parts[1]] = parts[2];
- });
- return map;
+ return ModUtils.extractMacros(p.readStdOut());
} finally {
p.close();
}
diff --git a/share/qbs/modules/cpp/iar.js b/share/qbs/modules/cpp/iar.js
index 0c912d0aa..bbb0faf3a 100644
--- a/share/qbs/modules/cpp/iar.js
+++ b/share/qbs/modules/cpp/iar.js
@@ -377,12 +377,7 @@ function dumpMacros(compilerFilePath, tag) {
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) {
- var parts = line.split(" ", 3);
- map[parts[1]] = parts[2];
- });
- return map;
+ return ModUtils.extractMacros(outFile.readAll());
}
function dumpDefaultPaths(compilerFilePath, tag) {
diff --git a/share/qbs/modules/cpp/keil.js b/share/qbs/modules/cpp/keil.js
index fcea3c4b3..a1e49dd6d 100644
--- a/share/qbs/modules/cpp/keil.js
+++ b/share/qbs/modules/cpp/keil.js
@@ -476,14 +476,7 @@ function dumpArmCCCompilerMacros(compilerFilePath, tag, nullDevice) {
var p = new Process();
p.exec(compilerFilePath, args, false);
- var map = {};
- p.readStdOut().trim().split(/\r?\n/g).map(function (line) {
- if (!line.startsWith("#define"))
- return;
- var parts = line.split(" ", 3);
- map[parts[1]] = parts[2];
- });
- return map;
+ return ModUtils.extractMacros(p.readStdOut());
}
function dumpArmClangCompilerMacros(compilerFilePath, tag, nullDevice) {
@@ -491,12 +484,7 @@ function dumpArmClangCompilerMacros(compilerFilePath, tag, nullDevice) {
"-x", ((tag === "cpp") ? "c++" : "c"), nullDevice ];
var p = new Process();
p.exec(compilerFilePath, args, false);
- var map = {};
- p.readStdOut().trim().split(/\r?\n/g).map(function (line) {
- var parts = line.split(" ", 3);
- map[parts[1]] = parts[2];
- });
- return map;
+ return ModUtils.extractMacros(p.readStdOut());
}
function dumpMacros(compilerFilePath, tag, nullDevice) {
diff --git a/share/qbs/modules/cpp/sdcc.js b/share/qbs/modules/cpp/sdcc.js
index c34db1b22..456bf052d 100644
--- a/share/qbs/modules/cpp/sdcc.js
+++ b/share/qbs/modules/cpp/sdcc.js
@@ -121,12 +121,7 @@ function dumpMacros(compilerFilePath, architecture) {
var p = new Process();
p.exec(compilerFilePath, args, true);
- var map = {};
- p.readStdOut().trim().split(/\r?\n/g).map(function (line) {
- var parts = line.split(" ", 3);
- map[parts[1]] = parts[2];
- });
- return map;
+ return ModUtils.extractMacros(p.readStdOut());
}
function dumpDefaultPaths(compilerFilePath, architecture) {