diff options
Diffstat (limited to 'src/app/qbs-setup-toolchains/probe.cpp')
-rw-r--r-- | src/app/qbs-setup-toolchains/probe.cpp | 30 |
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; +} |