diff --git a/src/plugins/android/androidtoolchain.cpp b/src/plugins/android/androidtoolchain.cpp index 8894118436d..fa31889f83b 100644 --- a/src/plugins/android/androidtoolchain.cpp +++ b/src/plugins/android/androidtoolchain.cpp @@ -63,10 +63,11 @@ static const char ANDROID_NDK_TC_VERION[] = "Qt4ProjectManager.Android.NDK_TC_VE QHash > AndroidToolChainFactory::m_newestVersionForAbi; FileName AndroidToolChainFactory::m_ndkLocation; -AndroidToolChain::AndroidToolChain(const Abi &abi, const QString &ndkToolChainVersion, Detection d) +AndroidToolChain::AndroidToolChain(const Abi &abi, const QString &ndkToolChainVersion, Language l, Detection d) : GccToolChain(Constants::ANDROID_TOOLCHAIN_ID, d), m_ndkToolChainVersion(ndkToolChainVersion), m_secondaryToolChain(false) { + setLanguage(l); setTargetAbi(abi); setDisplayName(QString::fromLatin1("Android GCC (%1-%2)") .arg(AndroidConfig::displayName(targetAbi())) @@ -392,7 +393,8 @@ AndroidToolChainFactory::autodetectToolChainsForNdk(const FileName &ndkPath, AndroidToolChain *tc = findToolChain(compilerPath, alreadyKnown); if (!tc) { - tc = new AndroidToolChain(abi, version, ToolChain::AutoDetection); + tc = new AndroidToolChain(abi, version, ToolChain::Language::Cxx, + ToolChain::AutoDetection); tc->resetToolChain(compilerPath); } result.append(tc); diff --git a/src/plugins/android/androidtoolchain.h b/src/plugins/android/androidtoolchain.h index 06d0944956e..3de6a12eaa9 100644 --- a/src/plugins/android/androidtoolchain.h +++ b/src/plugins/android/androidtoolchain.h @@ -62,7 +62,8 @@ protected: DetectedAbisResult detectSupportedAbis() const override; private: - explicit AndroidToolChain(const ProjectExplorer::Abi &abi, const QString &ndkToolChainVersion, Detection d); + explicit AndroidToolChain(const ProjectExplorer::Abi &abi, const QString &ndkToolChainVersion, + Language l, Detection d); AndroidToolChain(); AndroidToolChain(const AndroidToolChain &); diff --git a/src/plugins/ios/iosconfigurations.cpp b/src/plugins/ios/iosconfigurations.cpp index e1748b93715..4e414e01e88 100644 --- a/src/plugins/ios/iosconfigurations.cpp +++ b/src/plugins/ios/iosconfigurations.cpp @@ -355,6 +355,7 @@ void IosConfigurations::setDeveloperPath(const FileName &devPath) static ClangToolChain *createToolChain(const Platform &platform) { ClangToolChain *toolChain = new ClangToolChain(ToolChain::AutoDetection); + toolChain->setLanguage(ToolChain::Language::Cxx); toolChain->setDisplayName(platform.name); toolChain->setPlatformCodeGenFlags(platform.backendFlags); toolChain->setPlatformLinkerFlags(platform.backendFlags); diff --git a/src/plugins/projectexplorer/abstractmsvctoolchain.cpp b/src/plugins/projectexplorer/abstractmsvctoolchain.cpp index d7eb341d5b0..302f049101f 100644 --- a/src/plugins/projectexplorer/abstractmsvctoolchain.cpp +++ b/src/plugins/projectexplorer/abstractmsvctoolchain.cpp @@ -42,6 +42,7 @@ namespace ProjectExplorer { namespace Internal { AbstractMsvcToolChain::AbstractMsvcToolChain(Core::Id typeId, + const Language &l, Detection d, const Abi &abi, const QString& vcvarsBat) : ToolChain(typeId, d), @@ -53,6 +54,7 @@ AbstractMsvcToolChain::AbstractMsvcToolChain(Core::Id typeId, Q_ASSERT(abi.binaryFormat() == Abi::PEFormat); Q_ASSERT(abi.osFlavor() != Abi::WindowsMSysFlavor); Q_ASSERT(!m_vcvarsBat.isEmpty()); + setLanguage(l); } AbstractMsvcToolChain::AbstractMsvcToolChain(Core::Id typeId, Detection d) : diff --git a/src/plugins/projectexplorer/abstractmsvctoolchain.h b/src/plugins/projectexplorer/abstractmsvctoolchain.h index be95a360833..17360fc7eb9 100644 --- a/src/plugins/projectexplorer/abstractmsvctoolchain.h +++ b/src/plugins/projectexplorer/abstractmsvctoolchain.h @@ -38,7 +38,8 @@ namespace Internal { class PROJECTEXPLORER_EXPORT AbstractMsvcToolChain : public ToolChain { public: - explicit AbstractMsvcToolChain(Core::Id typeId, Detection d, const Abi &abi, const QString& vcvarsBat); + explicit AbstractMsvcToolChain(Core::Id typeId, const Language &l, Detection d, + const Abi &abi, const QString& vcvarsBat); explicit AbstractMsvcToolChain(Core::Id typeId, Detection d); Abi targetAbi() const override; diff --git a/src/plugins/projectexplorer/customtoolchain.cpp b/src/plugins/projectexplorer/customtoolchain.cpp index e14562ca1b6..c715e8d6efb 100644 --- a/src/plugins/projectexplorer/customtoolchain.cpp +++ b/src/plugins/projectexplorer/customtoolchain.cpp @@ -88,7 +88,9 @@ static const char messageCapKeyC[] = "ProjectExplorer.CustomToolChain.MessageCap CustomToolChain::CustomToolChain(Detection d) : ToolChain(Constants::CUSTOM_TOOLCHAIN_TYPEID, d), m_outputParser(Gcc) -{ } +{ + setLanguage(Language::Cxx); +} QString CustomToolChain::typeDisplayName() const { diff --git a/src/plugins/projectexplorer/gcctoolchain.cpp b/src/plugins/projectexplorer/gcctoolchain.cpp index cc328d57af1..346af7aba30 100644 --- a/src/plugins/projectexplorer/gcctoolchain.cpp +++ b/src/plugins/projectexplorer/gcctoolchain.cpp @@ -776,7 +776,9 @@ bool GccToolChainFactory::canCreate() ToolChain *GccToolChainFactory::create() { - return createToolChain(false); + ToolChain *tc = createToolChain(false); + tc->setLanguage({ ToolChain::Language::Cxx }); + return tc; } QList GccToolChainFactory::autoDetect(const QList &alreadyKnown) @@ -860,6 +862,7 @@ QList GccToolChainFactory::autoDetectToolchains(const QString &comp tc->setTargetAbi(abi); tc->setOriginalTargetTriple(detectedAbis.originalTargetTriple); tc->setDisplayName(tc->defaultDisplayName()); // reset displayname + tc->setLanguage(ToolChain::Language::Cxx); result.append(tc.take()); } diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp index bb084b644e9..85918eec5d9 100644 --- a/src/plugins/projectexplorer/msvctoolchain.cpp +++ b/src/plugins/projectexplorer/msvctoolchain.cpp @@ -328,13 +328,14 @@ Utils::Environment MsvcToolChain::readEnvironmentSetting(Utils::Environment& env // -------------------------------------------------------------------------- MsvcToolChain::MsvcToolChain(const QString &name, const Abi &abi, - const QString &varsBat, const QString &varsBatArg, Detection d) : - MsvcToolChain(Constants::MSVC_TOOLCHAIN_TYPEID, name, abi, varsBat, varsBatArg, d) + const QString &varsBat, const QString &varsBatArg, const Language &l, + Detection d) : + MsvcToolChain(Constants::MSVC_TOOLCHAIN_TYPEID, name, abi, varsBat, varsBatArg, l, d) { } MsvcToolChain::MsvcToolChain(Core::Id typeId, const QString &name, const Abi &abi, - const QString &varsBat, const QString &varsBatArg, - Detection d) : AbstractMsvcToolChain(typeId, d, abi, varsBat), + const QString &varsBat, const QString &varsBatArg, const Language &l, + Detection d) : AbstractMsvcToolChain(typeId, l, d, abi, varsBat), m_varsBatArg(varsBatArg) { Q_ASSERT(!name.isEmpty()); @@ -342,8 +343,7 @@ MsvcToolChain::MsvcToolChain(Core::Id typeId, const QString &name, const Abi &ab setDisplayName(name); } -MsvcToolChain::MsvcToolChain(Core::Id typeId) - : AbstractMsvcToolChain(typeId, ManualDetection) +MsvcToolChain::MsvcToolChain(Core::Id typeId) : AbstractMsvcToolChain(typeId, ManualDetection) { } MsvcToolChain::MsvcToolChain() : MsvcToolChain(Constants::MSVC_TOOLCHAIN_TYPEID) @@ -496,18 +496,15 @@ static const char clangClBinary[] = "clang-cl.exe"; ClangClToolChain::ClangClToolChain(const QString &name, const QString &llvmDir, const Abi &abi, - const QString &varsBat, const QString &varsBatArg, + const QString &varsBat, const QString &varsBatArg, const Language &l, Detection d) - : MsvcToolChain(Constants::CLANG_CL_TOOLCHAIN_TYPEID, name, abi, varsBat, varsBatArg, d) + : MsvcToolChain(Constants::CLANG_CL_TOOLCHAIN_TYPEID, name, abi, varsBat, varsBatArg, l, d) , m_llvmDir(llvmDir) , m_compiler(Utils::FileName::fromString(m_llvmDir + QStringLiteral("/bin/") + QLatin1String(clangClBinary))) -{ -} +{ } -ClangClToolChain::ClangClToolChain() - : MsvcToolChain(Constants::CLANG_CL_TOOLCHAIN_TYPEID) -{ -} +ClangClToolChain::ClangClToolChain() : MsvcToolChain(Constants::CLANG_CL_TOOLCHAIN_TYPEID) +{ } bool ClangClToolChain::isValid() const { @@ -632,7 +629,7 @@ static ToolChain *findOrCreateToolChain(const QList &alreadyKnown, && mtc->varsBatArg() == varsBatArg; }); if (!tc) - tc = new MsvcToolChain(name, abi, varsBat, varsBatArg, d); + tc = new MsvcToolChain(name, abi, varsBat, varsBatArg, ToolChain::Language::Cxx, d); return tc; } @@ -671,6 +668,7 @@ static void detectCppBuildTools(QList *list) e.format, e.wordSize); list->append(new MsvcToolChain(name + QLatin1String(e.postFix), abi, vcVarsBat, QLatin1String(e.varsBatArg), + ToolChain::Language::Cxx, ToolChain::AutoDetection)); } } @@ -715,7 +713,7 @@ static void detectClangClToolChain(QList *list) + Abi::toString(targetAbi.osFlavor()).toUpper(); list->append(new ClangClToolChain(name, path, targetAbi, msvcToolChain->varsBat(), msvcToolChain->varsBatArg(), - ToolChain::AutoDetection)); + ToolChain::Language::Cxx, ToolChain::AutoDetection)); } QList MsvcToolChainFactory::autoDetect(const QList &alreadyKnown) diff --git a/src/plugins/projectexplorer/msvctoolchain.h b/src/plugins/projectexplorer/msvctoolchain.h index d544cebf743..20e67e6b746 100644 --- a/src/plugins/projectexplorer/msvctoolchain.h +++ b/src/plugins/projectexplorer/msvctoolchain.h @@ -55,7 +55,7 @@ public: explicit MsvcToolChain(const QString &name, const Abi &abi, const QString &varsBat, const QString &varsBatArg, - Detection d = ManualDetection); + const Language &l, Detection d = ManualDetection); MsvcToolChain(); Utils::FileNameList suggestedMkspecList() const override; @@ -76,7 +76,7 @@ public: protected: explicit MsvcToolChain(Core::Id typeId, const QString &name, const Abi &abi, const QString &varsBat, const QString &varsBatArg, - Detection d); + const Language &l, Detection d); explicit MsvcToolChain(Core::Id typeId); Utils::Environment readEnvironmentSetting(Utils::Environment& env) const override; @@ -93,6 +93,7 @@ public: explicit ClangClToolChain(const QString &name, const QString &llvmDir, const Abi &abi, const QString &varsBat, const QString &varsBatArg, + const Language &l, Detection d = ManualDetection); ClangClToolChain(); diff --git a/src/plugins/projectexplorer/toolchainmanager.cpp b/src/plugins/projectexplorer/toolchainmanager.cpp index 866f74b4aa5..c10c86b21fa 100644 --- a/src/plugins/projectexplorer/toolchainmanager.cpp +++ b/src/plugins/projectexplorer/toolchainmanager.cpp @@ -388,6 +388,7 @@ void ToolChainManager::notifyAboutUpdate(ToolChain *tc) bool ToolChainManager::registerToolChain(ToolChain *tc) { + QTC_ASSERT(tc->language() != ToolChain::Language::None, return false); QTC_ASSERT(d->m_writer, return false); if (!tc || d->m_toolChains.contains(tc)) @@ -433,7 +434,10 @@ public: ToolChain("TestToolChainType", d), token(t), m_valid(v) - { m_toolChains.append(this); } + { + m_toolChains.append(this); + setLanguage(ToolChain::Language::Cxx); + } static QList toolChains(); static bool hasToolChains() { return !m_toolChains.isEmpty(); } diff --git a/src/plugins/projectexplorer/wincetoolchain.cpp b/src/plugins/projectexplorer/wincetoolchain.cpp index 3c3ce905126..741d5985ae8 100644 --- a/src/plugins/projectexplorer/wincetoolchain.cpp +++ b/src/plugins/projectexplorer/wincetoolchain.cpp @@ -236,8 +236,9 @@ WinCEToolChain::WinCEToolChain(const QString &name, const QString &binPath, const QString &includePath, const QString &libPath, + const Language &l, Detection d) : - AbstractMsvcToolChain(Constants::WINCE_TOOLCHAIN_TYPEID, d, abi, vcvarsBat), + AbstractMsvcToolChain(Constants::WINCE_TOOLCHAIN_TYPEID, l, d, abi, vcvarsBat), m_msvcVer(msvcVer), m_ceVer(ceVer), m_binPath(binPath), @@ -368,7 +369,8 @@ static ToolChain *findOrCreateToolChain(const QList &alreadyKnown, && cetc->libPath() == libPath; }); if (!tc) - tc = new WinCEToolChain(name, abi, vcvarsBat, msvcVer, ceVer, binPath, includePath, libPath, d); + tc = new WinCEToolChain(name, abi, vcvarsBat, msvcVer, ceVer, binPath, includePath, libPath, + ProjectExplorer::ToolChain::Language::Cxx, d); return tc; } diff --git a/src/plugins/projectexplorer/wincetoolchain.h b/src/plugins/projectexplorer/wincetoolchain.h index 376b25fe048..918d9f02867 100644 --- a/src/plugins/projectexplorer/wincetoolchain.h +++ b/src/plugins/projectexplorer/wincetoolchain.h @@ -43,6 +43,7 @@ public: const QString &binPath, const QString &includePath, const QString &libPath, + const Language &l, Detection d = ManualDetection); Utils::FileNameList suggestedMkspecList() const override; diff --git a/src/plugins/qnx/qnxtoolchain.cpp b/src/plugins/qnx/qnxtoolchain.cpp index 6eda4a2e7a8..c186e96bb8d 100644 --- a/src/plugins/qnx/qnxtoolchain.cpp +++ b/src/plugins/qnx/qnxtoolchain.cpp @@ -62,6 +62,13 @@ QnxToolChain::QnxToolChain(ToolChain::Detection d) : GccToolChain(Constants::QNX_TOOLCHAIN_ID, d) { } +QnxToolChain::QnxToolChain(Language l, ToolChain::Detection d) + : QnxToolChain(d) +{ + setLanguage(l); +} + + QString QnxToolChain::typeDisplayName() const { return QnxToolChainFactory::tr("QCC"); diff --git a/src/plugins/qnx/qnxtoolchain.h b/src/plugins/qnx/qnxtoolchain.h index 193e7e36f8c..551c9c90682 100644 --- a/src/plugins/qnx/qnxtoolchain.h +++ b/src/plugins/qnx/qnxtoolchain.h @@ -35,6 +35,7 @@ class QnxToolChain : public ProjectExplorer::GccToolChain { public: explicit QnxToolChain(Detection d); + explicit QnxToolChain(Language l, Detection d); QString typeDisplayName() const override;