ProjectExplorer: Remove ClangToolChain as class of its own

Change-Id: I92109855503d8696666a17f6e992bd5ca20cbf68
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2023-09-04 18:22:12 +02:00
parent c4c76c8642
commit b68bdbafce
5 changed files with 24 additions and 41 deletions

View File

@@ -47,7 +47,7 @@ static ToolChain *findToolChain(FilePath &compilerPath, Id lang, const QString &
} }
AndroidToolChain::AndroidToolChain() AndroidToolChain::AndroidToolChain()
: ClangToolChain(Constants::ANDROID_TOOLCHAIN_TYPEID) : GccToolChain(Constants::ANDROID_TOOLCHAIN_TYPEID, Clang)
{ {
setTypeDisplayName(Tr::tr("Android Clang")); setTypeDisplayName(Tr::tr("Android Clang"));
} }
@@ -80,7 +80,7 @@ bool AndroidToolChain::isValid() const
const bool isChildofSdk = compilerCommand().isChildOf( const bool isChildofSdk = compilerCommand().isChildOf(
AndroidConfigurations::currentConfig().sdkLocation()); AndroidConfigurations::currentConfig().sdkLocation());
return ClangToolChain::isValid() && typeId() == Constants::ANDROID_TOOLCHAIN_TYPEID return GccToolChain::isValid() && typeId() == Constants::ANDROID_TOOLCHAIN_TYPEID
&& targetAbi().isValid() && (isChildofNdk || isChildofSdk) && targetAbi().isValid() && (isChildofNdk || isChildofSdk)
&& !originalTargetTriple().isEmpty(); && !originalTargetTriple().isEmpty();
} }
@@ -103,7 +103,7 @@ void AndroidToolChain::addToEnvironment(Environment &env) const
void AndroidToolChain::fromMap(const Store &data) void AndroidToolChain::fromMap(const Store &data)
{ {
ClangToolChain::fromMap(data); GccToolChain::fromMap(data);
if (hasError()) if (hasError())
return; return;
if (!isValid()) if (!isValid())

View File

@@ -12,7 +12,7 @@ namespace Internal {
using ToolChainList = QList<ProjectExplorer::ToolChain *>; using ToolChainList = QList<ProjectExplorer::ToolChain *>;
class AndroidToolChain : public ProjectExplorer::ClangToolChain class AndroidToolChain : public ProjectExplorer::GccToolChain
{ {
public: public:
~AndroidToolChain() override; ~AndroidToolChain() override;

View File

@@ -58,7 +58,7 @@ static Q_LOGGING_CATEGORY(kitSetupLog, "qtc.ios.kitSetup", QtWarningMsg)
static Q_LOGGING_CATEGORY(iosCommonLog, "qtc.ios.common", QtWarningMsg) static Q_LOGGING_CATEGORY(iosCommonLog, "qtc.ios.common", QtWarningMsg)
} }
using ToolChainPair = std::pair<ClangToolChain *, ClangToolChain *>; using ToolChainPair = std::pair<GccToolChain *, GccToolChain *>;
namespace Ios { namespace Ios {
namespace Internal { namespace Internal {
@@ -95,19 +95,19 @@ static bool isSimulatorDeviceId(const Id &id)
return id == Constants::IOS_SIMULATOR_TYPE; return id == Constants::IOS_SIMULATOR_TYPE;
} }
static QList<ClangToolChain *> clangToolChains(const Toolchains &toolChains) static QList<GccToolChain *> clangToolChains(const Toolchains &toolChains)
{ {
QList<ClangToolChain *> clangToolChains; QList<GccToolChain *> clangToolChains;
for (ToolChain *toolChain : toolChains) for (ToolChain *toolChain : toolChains)
if (toolChain->typeId() == ProjectExplorer::Constants::CLANG_TOOLCHAIN_TYPEID) if (toolChain->typeId() == ProjectExplorer::Constants::CLANG_TOOLCHAIN_TYPEID)
clangToolChains.append(static_cast<ClangToolChain *>(toolChain)); clangToolChains.append(static_cast<GccToolChain *>(toolChain));
return clangToolChains; return clangToolChains;
} }
static QList<ClangToolChain *> autoDetectedIosToolChains() static QList<GccToolChain *> autoDetectedIosToolChains()
{ {
const QList<ClangToolChain *> toolChains = clangToolChains(ToolChainManager::toolchains()); const QList<GccToolChain *> toolChains = clangToolChains(ToolChainManager::toolchains());
return filtered(toolChains, [](ClangToolChain *toolChain) { return filtered(toolChains, [](GccToolChain *toolChain) {
return toolChain->isAutoDetected() return toolChain->isAutoDetected()
&& (toolChain->displayName().startsWith("iphone") && (toolChain->displayName().startsWith("iphone")
|| toolChain->displayName().startsWith("Apple Clang")); // TODO tool chains should be marked directly || toolChain->displayName().startsWith("Apple Clang")); // TODO tool chains should be marked directly
@@ -116,10 +116,10 @@ static QList<ClangToolChain *> autoDetectedIosToolChains()
static ToolChainPair findToolChainForPlatform(const XcodePlatform &platform, static ToolChainPair findToolChainForPlatform(const XcodePlatform &platform,
const XcodePlatform::ToolchainTarget &target, const XcodePlatform::ToolchainTarget &target,
const QList<ClangToolChain *> &toolChains) const QList<GccToolChain *> &toolChains)
{ {
ToolChainPair platformToolChains; 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() return compilerPath == toolChain->compilerCommand()
&& flags == toolChain->platformCodeGenFlags() && flags == toolChain->platformCodeGenFlags()
&& flags == toolChain->platformLinkerFlags(); && flags == toolChain->platformLinkerFlags();
@@ -136,7 +136,7 @@ static ToolChainPair findToolChainForPlatform(const XcodePlatform &platform,
static QHash<XcodePlatform::ToolchainTarget, ToolChainPair> findToolChains(const QList<XcodePlatform> &platforms) static QHash<XcodePlatform::ToolchainTarget, ToolChainPair> findToolChains(const QList<XcodePlatform> &platforms)
{ {
QHash<XcodePlatform::ToolchainTarget, ToolChainPair> platformToolChainHash; QHash<XcodePlatform::ToolchainTarget, ToolChainPair> platformToolChainHash;
const QList<ClangToolChain *> toolChains = autoDetectedIosToolChains(); const QList<GccToolChain *> toolChains = autoDetectedIosToolChains();
for (const XcodePlatform &platform : platforms) { for (const XcodePlatform &platform : platforms) {
for (const XcodePlatform::ToolchainTarget &target : platform.targets) { for (const XcodePlatform::ToolchainTarget &target : platform.targets) {
ToolChainPair platformToolchains = findToolChainForPlatform(platform, target, 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) if (detector.device->type() != ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE)
return {}; return {};
QList<ClangToolChain *> existingClangToolChains = clangToolChains(detector.alreadyKnown); QList<GccToolChain *> existingClangToolChains = clangToolChains(detector.alreadyKnown);
const QList<XcodePlatform> platforms = XcodeProbe::detectPlatforms().values(); const QList<XcodePlatform> platforms = XcodeProbe::detectPlatforms().values();
Toolchains toolChains; Toolchains toolChains;
toolChains.reserve(platforms.size()); toolChains.reserve(platforms.size());
@@ -585,9 +585,10 @@ Toolchains IosToolChainFactory::autoDetect(const ToolchainDetector &detector) co
for (const XcodePlatform::ToolchainTarget &target : platform.targets) { for (const XcodePlatform::ToolchainTarget &target : platform.targets) {
ToolChainPair platformToolchains = findToolChainForPlatform(platform, target, ToolChainPair platformToolchains = findToolChainForPlatform(platform, target,
existingClangToolChains); existingClangToolChains);
auto createOrAdd = [&](ClangToolChain *toolChain, Id l) { auto createOrAdd = [&](GccToolChain *toolChain, Id l) {
if (!toolChain) { if (!toolChain) {
toolChain = new ClangToolChain; toolChain = new GccToolChain(ProjectExplorer::Constants::CLANG_TOOLCHAIN_TYPEID,
GccToolChain::Clang);
toolChain->setPriority(ToolChain::PriorityHigh); toolChain->setPriority(ToolChain::PriorityHigh);
toolChain->setDetection(ToolChain::AutoDetection); toolChain->setDetection(ToolChain::AutoDetection);
toolChain->setLanguage(l); toolChain->setLanguage(l);

View File

@@ -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 bool GccToolChain::matchesCompilerCommand(const FilePath &command) const
{ {
if (m_subType == Clang) { if (m_subType == Clang) {
@@ -1707,7 +1698,9 @@ ClangToolChainFactory::ClangToolChainFactory()
setDisplayName(Tr::tr("Clang")); setDisplayName(Tr::tr("Clang"));
setSupportedToolChainType(Constants::CLANG_TOOLCHAIN_TYPEID); setSupportedToolChainType(Constants::CLANG_TOOLCHAIN_TYPEID);
setSupportedLanguages({Constants::CXX_LANGUAGE_ID, Constants::C_LANGUAGE_ID}); 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 Toolchains ClangToolChainFactory::autoDetect(const ToolchainDetector &detector) const
@@ -1805,7 +1798,7 @@ ClangToolChainConfigWidget::ClangToolChainConfigWidget(GccToolChain *tc) :
void ClangToolChainConfigWidget::updateParentToolChainComboBox() void ClangToolChainConfigWidget::updateParentToolChainComboBox()
{ {
auto *tc = static_cast<ClangToolChain *>(toolChain()); auto *tc = static_cast<GccToolChain *>(toolChain());
QByteArray parentId = m_parentToolchainCombo->currentData().toByteArray(); QByteArray parentId = m_parentToolchainCombo->currentData().toByteArray();
if (tc->isAutoDetected() || m_parentToolchainCombo->count() == 0) if (tc->isAutoDetected() || m_parentToolchainCombo->count() == 0)
parentId = tc->m_parentToolChainId; parentId = tc->m_parentToolChainId;
@@ -1842,7 +1835,7 @@ void ClangToolChainConfigWidget::applyImpl()
if (!m_parentToolchainCombo) if (!m_parentToolchainCombo)
return; return;
auto *tc = static_cast<ClangToolChain *>(toolChain()); auto *tc = static_cast<GccToolChain *>(toolChain());
tc->m_parentToolChainId.clear(); tc->m_parentToolChainId.clear();
const QByteArray parentId = m_parentToolchainCombo->currentData().toByteArray(); const QByteArray parentId = m_parentToolchainCombo->currentData().toByteArray();
@@ -1866,7 +1859,7 @@ bool ClangToolChainConfigWidget::isDirtyImpl() const
if (!m_parentToolchainCombo) if (!m_parentToolchainCombo)
return false; return false;
auto tc = static_cast<ClangToolChain *>(toolChain()); auto tc = static_cast<GccToolChain *>(toolChain());
Q_ASSERT(tc); Q_ASSERT(tc);
const MingwToolChain *parentTC = mingwToolChainFromId(tc->m_parentToolChainId); const MingwToolChain *parentTC = mingwToolChainFromId(tc->m_parentToolChainId);
const QByteArray parentId = parentTC ? parentTC->id() : QByteArray(); const QByteArray parentId = parentTC ? parentTC->id() : QByteArray();

View File

@@ -199,17 +199,6 @@ private:
QMetaObject::Connection m_thisToolchainRemovedConnection; QMetaObject::Connection m_thisToolchainRemovedConnection;
}; };
// --------------------------------------------------------------------------
// ClangToolChain
// --------------------------------------------------------------------------
class PROJECTEXPLORER_EXPORT ClangToolChain : public GccToolChain
{
public:
ClangToolChain();
explicit ClangToolChain(Utils::Id typeId);
};
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
// MingwToolChain // MingwToolChain
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------