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()
: 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())

View File

@@ -12,7 +12,7 @@ namespace Internal {
using ToolChainList = QList<ProjectExplorer::ToolChain *>;
class AndroidToolChain : public ProjectExplorer::ClangToolChain
class AndroidToolChain : public ProjectExplorer::GccToolChain
{
public:
~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)
}
using ToolChainPair = std::pair<ClangToolChain *, ClangToolChain *>;
using ToolChainPair = std::pair<GccToolChain *, GccToolChain *>;
namespace Ios {
namespace Internal {
@@ -95,19 +95,19 @@ static bool isSimulatorDeviceId(const Id &id)
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)
if (toolChain->typeId() == ProjectExplorer::Constants::CLANG_TOOLCHAIN_TYPEID)
clangToolChains.append(static_cast<ClangToolChain *>(toolChain));
clangToolChains.append(static_cast<GccToolChain *>(toolChain));
return clangToolChains;
}
static QList<ClangToolChain *> autoDetectedIosToolChains()
static QList<GccToolChain *> autoDetectedIosToolChains()
{
const QList<ClangToolChain *> toolChains = clangToolChains(ToolChainManager::toolchains());
return filtered(toolChains, [](ClangToolChain *toolChain) {
const QList<GccToolChain *> 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<ClangToolChain *> autoDetectedIosToolChains()
static ToolChainPair findToolChainForPlatform(const XcodePlatform &platform,
const XcodePlatform::ToolchainTarget &target,
const QList<ClangToolChain *> &toolChains)
const QList<GccToolChain *> &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<XcodePlatform::ToolchainTarget, ToolChainPair> findToolChains(const QList<XcodePlatform> &platforms)
{
QHash<XcodePlatform::ToolchainTarget, ToolChainPair> platformToolChainHash;
const QList<ClangToolChain *> toolChains = autoDetectedIosToolChains();
const QList<GccToolChain *> 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<ClangToolChain *> existingClangToolChains = clangToolChains(detector.alreadyKnown);
QList<GccToolChain *> existingClangToolChains = clangToolChains(detector.alreadyKnown);
const QList<XcodePlatform> 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);

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
{
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<ClangToolChain *>(toolChain());
auto *tc = static_cast<GccToolChain *>(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<ClangToolChain *>(toolChain());
auto *tc = static_cast<GccToolChain *>(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<ClangToolChain *>(toolChain());
auto tc = static_cast<GccToolChain *>(toolChain());
Q_ASSERT(tc);
const MingwToolChain *parentTC = mingwToolChainFromId(tc->m_parentToolChainId);
const QByteArray parentId = parentTC ? parentTC->id() : QByteArray();

View File

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