aboutsummaryrefslogtreecommitdiffstats
path: root/src/app/qbs-setup-toolchains/probe.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/app/qbs-setup-toolchains/probe.cpp')
-rw-r--r--src/app/qbs-setup-toolchains/probe.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/app/qbs-setup-toolchains/probe.cpp b/src/app/qbs-setup-toolchains/probe.cpp
index efa5d9b78..5a04232e1 100644
--- a/src/app/qbs-setup-toolchains/probe.cpp
+++ b/src/app/qbs-setup-toolchains/probe.cpp
@@ -39,6 +39,8 @@
#include "probe.h"
#include "clangclprobe.h"
+#include "cosmicprobe.h"
+#include "dmcprobe.h"
#include "gccprobe.h"
#include "iarewprobe.h"
#include "keilprobe.h"
@@ -117,6 +119,10 @@ QString toolchainTypeFromCompilerName(const QString &compilerName)
return QStringLiteral("keil");
if (isSdccCompiler(compilerName))
return QStringLiteral("sdcc");
+ if (isCosmicCompiler(compilerName))
+ return QStringLiteral("cosmic");
+ if (isDmcCompiler(compilerName))
+ return QStringLiteral("dmc");
return {};
}
@@ -136,6 +142,8 @@ void probe(Settings *settings)
iarProbe(settings, profiles);
keilProbe(settings, profiles);
sdccProbe(settings, profiles);
+ cosmicProbe(settings, profiles);
+ dmcProbe(settings, profiles);
if (profiles.empty()) {
qStderr << Tr::tr("Could not detect any toolchains. No profile created.") << Qt::endl;
@@ -175,6 +183,10 @@ void createProfile(const QString &profileName, const QString &toolchainType,
createKeilProfile(compiler, settings, profileName);
else if (toolchain.contains(QLatin1String("sdcc")))
createSdccProfile(compiler, settings, profileName);
+ else if (toolchain.contains(QLatin1String("cosmic")))
+ createCosmicProfile(compiler, settings, profileName);
+ else if (toolchain.contains(QLatin1String("dmc")))
+ createDmcProfile(compiler, settings, profileName);
else
throw qbs::ErrorInfo(Tr::tr("Cannot create profile: Unknown toolchain type."));
}
@@ -301,3 +313,21 @@ bool isSameExecutable(const QString &filePath1, const QString &filePath2)
return false;
}
+
+MacrosMap dumpMacros(const std::function<QStringList()> &func)
+{
+ MacrosMap macros;
+ const QStringList lines = func();
+ for (const QString &line : lines) {
+ const QString prefix = QLatin1String("#define ");
+ if (!line.startsWith(prefix))
+ return macros;
+ const auto index = line.indexOf(QLatin1String(" "), prefix.length());
+ if (index != -1) {
+ const auto key = line.mid(prefix.length(), index - prefix.length());
+ const auto value = line.mid(index + 1);
+ macros.insert(key, value);
+ }
+ }
+ return macros;
+}