diff --git a/src/plugins/android/androidtoolchain.cpp b/src/plugins/android/androidtoolchain.cpp index 0323267daa0..b472498a806 100644 --- a/src/plugins/android/androidtoolchain.cpp +++ b/src/plugins/android/androidtoolchain.cpp @@ -47,7 +47,7 @@ static ToolChain *findToolChain(FilePath &compilerPath, Id lang, const QString & } AndroidToolChain::AndroidToolChain() - : ClangToolChain(Constants::ANDROID_TOOLCHAIN_TYPEID) + : GccToolChain(Constants::ANDROID_TOOLCHAIN_TYPEID, Clang) { setTypeDisplayName(Tr::tr("Android Clang")); } @@ -80,7 +80,7 @@ bool AndroidToolChain::isValid() const const bool isChildofSdk = compilerCommand().isChildOf( AndroidConfigurations::currentConfig().sdkLocation()); - return ClangToolChain::isValid() && typeId() == Constants::ANDROID_TOOLCHAIN_TYPEID + return GccToolChain::isValid() && typeId() == Constants::ANDROID_TOOLCHAIN_TYPEID && targetAbi().isValid() && (isChildofNdk || isChildofSdk) && !originalTargetTriple().isEmpty(); } @@ -103,7 +103,7 @@ void AndroidToolChain::addToEnvironment(Environment &env) const void AndroidToolChain::fromMap(const Store &data) { - ClangToolChain::fromMap(data); + GccToolChain::fromMap(data); if (hasError()) return; if (!isValid()) diff --git a/src/plugins/android/androidtoolchain.h b/src/plugins/android/androidtoolchain.h index 5bc66c0119b..bd33dc75704 100644 --- a/src/plugins/android/androidtoolchain.h +++ b/src/plugins/android/androidtoolchain.h @@ -12,7 +12,7 @@ namespace Internal { using ToolChainList = QList; -class AndroidToolChain : public ProjectExplorer::ClangToolChain +class AndroidToolChain : public ProjectExplorer::GccToolChain { public: ~AndroidToolChain() override; diff --git a/src/plugins/ios/iosconfigurations.cpp b/src/plugins/ios/iosconfigurations.cpp index a2dcdf2f940..545cf85bc8f 100644 --- a/src/plugins/ios/iosconfigurations.cpp +++ b/src/plugins/ios/iosconfigurations.cpp @@ -58,7 +58,7 @@ static Q_LOGGING_CATEGORY(kitSetupLog, "qtc.ios.kitSetup", QtWarningMsg) static Q_LOGGING_CATEGORY(iosCommonLog, "qtc.ios.common", QtWarningMsg) } -using ToolChainPair = std::pair; +using ToolChainPair = std::pair; namespace Ios { namespace Internal { @@ -95,19 +95,19 @@ static bool isSimulatorDeviceId(const Id &id) return id == Constants::IOS_SIMULATOR_TYPE; } -static QList clangToolChains(const Toolchains &toolChains) +static QList clangToolChains(const Toolchains &toolChains) { - QList clangToolChains; + QList clangToolChains; for (ToolChain *toolChain : toolChains) if (toolChain->typeId() == ProjectExplorer::Constants::CLANG_TOOLCHAIN_TYPEID) - clangToolChains.append(static_cast(toolChain)); + clangToolChains.append(static_cast(toolChain)); return clangToolChains; } -static QList autoDetectedIosToolChains() +static QList autoDetectedIosToolChains() { - const QList toolChains = clangToolChains(ToolChainManager::toolchains()); - return filtered(toolChains, [](ClangToolChain *toolChain) { + const QList toolChains = clangToolChains(ToolChainManager::toolchains()); + return filtered(toolChains, [](GccToolChain *toolChain) { return toolChain->isAutoDetected() && (toolChain->displayName().startsWith("iphone") || toolChain->displayName().startsWith("Apple Clang")); // TODO tool chains should be marked directly @@ -116,10 +116,10 @@ static QList autoDetectedIosToolChains() static ToolChainPair findToolChainForPlatform(const XcodePlatform &platform, const XcodePlatform::ToolchainTarget &target, - const QList &toolChains) + const QList &toolChains) { ToolChainPair platformToolChains; - auto toolchainMatch = [](ClangToolChain *toolChain, const FilePath &compilerPath, const QStringList &flags) { + auto toolchainMatch = [](GccToolChain *toolChain, const FilePath &compilerPath, const QStringList &flags) { return compilerPath == toolChain->compilerCommand() && flags == toolChain->platformCodeGenFlags() && flags == toolChain->platformLinkerFlags(); @@ -136,7 +136,7 @@ static ToolChainPair findToolChainForPlatform(const XcodePlatform &platform, static QHash findToolChains(const QList &platforms) { QHash platformToolChainHash; - const QList toolChains = autoDetectedIosToolChains(); + const QList toolChains = autoDetectedIosToolChains(); for (const XcodePlatform &platform : platforms) { for (const XcodePlatform::ToolchainTarget &target : platform.targets) { ToolChainPair platformToolchains = findToolChainForPlatform(platform, target, @@ -577,7 +577,7 @@ Toolchains IosToolChainFactory::autoDetect(const ToolchainDetector &detector) co if (detector.device->type() != ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE) return {}; - QList existingClangToolChains = clangToolChains(detector.alreadyKnown); + QList existingClangToolChains = clangToolChains(detector.alreadyKnown); const QList platforms = XcodeProbe::detectPlatforms().values(); Toolchains toolChains; toolChains.reserve(platforms.size()); @@ -585,9 +585,10 @@ Toolchains IosToolChainFactory::autoDetect(const ToolchainDetector &detector) co for (const XcodePlatform::ToolchainTarget &target : platform.targets) { ToolChainPair platformToolchains = findToolChainForPlatform(platform, target, existingClangToolChains); - auto createOrAdd = [&](ClangToolChain *toolChain, Id l) { + auto createOrAdd = [&](GccToolChain *toolChain, Id l) { if (!toolChain) { - toolChain = new ClangToolChain; + toolChain = new GccToolChain(ProjectExplorer::Constants::CLANG_TOOLCHAIN_TYPEID, + GccToolChain::Clang); toolChain->setPriority(ToolChain::PriorityHigh); toolChain->setDetection(ToolChain::AutoDetection); toolChain->setLanguage(l); diff --git a/src/plugins/projectexplorer/gcctoolchain.cpp b/src/plugins/projectexplorer/gcctoolchain.cpp index 96a55122a81..71716ee3f14 100644 --- a/src/plugins/projectexplorer/gcctoolchain.cpp +++ b/src/plugins/projectexplorer/gcctoolchain.cpp @@ -1656,15 +1656,6 @@ void GccToolChain::syncAutodetectedWithParentToolchains() }); } -ClangToolChain::ClangToolChain() : - ClangToolChain(Constants::CLANG_TOOLCHAIN_TYPEID) -{} - -ClangToolChain::ClangToolChain(Utils::Id typeId) : - GccToolChain(typeId, GccToolChain::Clang) -{ -} - bool GccToolChain::matchesCompilerCommand(const FilePath &command) const { if (m_subType == Clang) { @@ -1707,7 +1698,9 @@ ClangToolChainFactory::ClangToolChainFactory() setDisplayName(Tr::tr("Clang")); setSupportedToolChainType(Constants::CLANG_TOOLCHAIN_TYPEID); setSupportedLanguages({Constants::CXX_LANGUAGE_ID, Constants::C_LANGUAGE_ID}); - setToolchainConstructor([] { return new ClangToolChain; }); + setToolchainConstructor([] { + return new GccToolChain(Constants::CLANG_TOOLCHAIN_TYPEID, GccToolChain::Clang); + }); } Toolchains ClangToolChainFactory::autoDetect(const ToolchainDetector &detector) const @@ -1805,7 +1798,7 @@ ClangToolChainConfigWidget::ClangToolChainConfigWidget(GccToolChain *tc) : void ClangToolChainConfigWidget::updateParentToolChainComboBox() { - auto *tc = static_cast(toolChain()); + auto *tc = static_cast(toolChain()); QByteArray parentId = m_parentToolchainCombo->currentData().toByteArray(); if (tc->isAutoDetected() || m_parentToolchainCombo->count() == 0) parentId = tc->m_parentToolChainId; @@ -1842,7 +1835,7 @@ void ClangToolChainConfigWidget::applyImpl() if (!m_parentToolchainCombo) return; - auto *tc = static_cast(toolChain()); + auto *tc = static_cast(toolChain()); tc->m_parentToolChainId.clear(); const QByteArray parentId = m_parentToolchainCombo->currentData().toByteArray(); @@ -1866,7 +1859,7 @@ bool ClangToolChainConfigWidget::isDirtyImpl() const if (!m_parentToolchainCombo) return false; - auto tc = static_cast(toolChain()); + auto tc = static_cast(toolChain()); Q_ASSERT(tc); const MingwToolChain *parentTC = mingwToolChainFromId(tc->m_parentToolChainId); const QByteArray parentId = parentTC ? parentTC->id() : QByteArray(); diff --git a/src/plugins/projectexplorer/gcctoolchain.h b/src/plugins/projectexplorer/gcctoolchain.h index 554ccc78fd5..3f43bc62ad5 100644 --- a/src/plugins/projectexplorer/gcctoolchain.h +++ b/src/plugins/projectexplorer/gcctoolchain.h @@ -199,17 +199,6 @@ private: QMetaObject::Connection m_thisToolchainRemovedConnection; }; -// -------------------------------------------------------------------------- -// ClangToolChain -// -------------------------------------------------------------------------- - -class PROJECTEXPLORER_EXPORT ClangToolChain : public GccToolChain -{ -public: - ClangToolChain(); - explicit ClangToolChain(Utils::Id typeId); -}; - // -------------------------------------------------------------------------- // MingwToolChain // --------------------------------------------------------------------------