ProjectExplorer: Rename ToolChain to Toolchain

Change-Id: Ibb520f14ff3e2a6147ca5d419b9351c50c141063
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2023-11-24 15:53:31 +01:00
parent 2d4867e73f
commit c28fb1fdbe
78 changed files with 533 additions and 533 deletions

View File

@@ -1130,7 +1130,7 @@ void AndroidConfigurations::setConfig(const AndroidConfig &devConfigs)
emit m_instance->updated(); emit m_instance->updated();
} }
static bool matchToolChain(const ToolChain *atc, const ToolChain *btc) static bool matchToolChain(const Toolchain *atc, const Toolchain *btc)
{ {
if (atc == btc) if (atc == btc)
return true; return true;
@@ -1147,12 +1147,12 @@ static bool matchToolChain(const ToolChain *atc, const ToolChain *btc)
void AndroidConfigurations::registerNewToolChains() void AndroidConfigurations::registerNewToolChains()
{ {
const Toolchains existingAndroidToolChains const Toolchains existingAndroidToolChains
= ToolChainManager::toolchains(Utils::equal(&ToolChain::typeId, Id(Constants::ANDROID_TOOLCHAIN_TYPEID))); = ToolChainManager::toolchains(Utils::equal(&Toolchain::typeId, Id(Constants::ANDROID_TOOLCHAIN_TYPEID)));
const Toolchains newToolchains = AndroidToolchainFactory::autodetectToolChains( const Toolchains newToolchains = AndroidToolchainFactory::autodetectToolChains(
existingAndroidToolChains); existingAndroidToolChains);
for (ToolChain *tc : newToolchains) for (Toolchain *tc : newToolchains)
ToolChainManager::registerToolChain(tc); ToolChainManager::registerToolChain(tc);
registerCustomToolChainsAndDebuggers(); registerCustomToolChainsAndDebuggers();
@@ -1160,9 +1160,9 @@ void AndroidConfigurations::registerNewToolChains()
void AndroidConfigurations::removeOldToolChains() void AndroidConfigurations::removeOldToolChains()
{ {
const auto tcs = ToolChainManager::toolchains(Utils::equal(&ToolChain::typeId, const auto tcs = ToolChainManager::toolchains(Utils::equal(&Toolchain::typeId,
Id(Constants::ANDROID_TOOLCHAIN_TYPEID))); Id(Constants::ANDROID_TOOLCHAIN_TYPEID)));
for (ToolChain *tc : tcs) { for (Toolchain *tc : tcs) {
if (!tc->isValid()) if (!tc->isValid())
ToolChainManager::deregisterToolChain(tc); ToolChainManager::deregisterToolChain(tc);
} }
@@ -1241,7 +1241,7 @@ static const Debugger::DebuggerItem *existingDebugger(const FilePath &command,
return nullptr; return nullptr;
} }
static QVariant findOrRegisterDebugger(ToolChain *tc, static QVariant findOrRegisterDebugger(Toolchain *tc,
const QStringList &abisList, const QStringList &abisList,
bool customDebugger = false) bool customDebugger = false)
{ {
@@ -1307,14 +1307,14 @@ static QVariant findOrRegisterDebugger(ToolChain *tc,
void AndroidConfigurations::registerCustomToolChainsAndDebuggers() void AndroidConfigurations::registerCustomToolChainsAndDebuggers()
{ {
const Toolchains existingAndroidToolChains = ToolChainManager::toolchains( const Toolchains existingAndroidToolChains = ToolChainManager::toolchains(
Utils::equal(&ToolChain::typeId, Utils::Id(Constants::ANDROID_TOOLCHAIN_TYPEID))); Utils::equal(&Toolchain::typeId, Utils::Id(Constants::ANDROID_TOOLCHAIN_TYPEID)));
const FilePaths customNdks = FileUtils::toFilePathList(currentConfig().getCustomNdkList()); const FilePaths customNdks = FileUtils::toFilePathList(currentConfig().getCustomNdkList());
const Toolchains customToolchains const Toolchains customToolchains
= AndroidToolchainFactory::autodetectToolChainsFromNdks(existingAndroidToolChains, = AndroidToolchainFactory::autodetectToolChainsFromNdks(existingAndroidToolChains,
customNdks, customNdks,
true); true);
for (ToolChain *tc : customToolchains) { for (Toolchain *tc : customToolchains) {
ToolChainManager::registerToolChain(tc); ToolChainManager::registerToolChain(tc);
const auto androidToolChain = static_cast<AndroidToolChain *>(tc); const auto androidToolChain = static_cast<AndroidToolChain *>(tc);
QString abiStr; QString abiStr;
@@ -1359,12 +1359,12 @@ void AndroidConfigurations::updateAutomaticKitList()
} }
// register new kits // register new kits
const Toolchains toolchains = ToolChainManager::toolchains([](const ToolChain *tc) { const Toolchains toolchains = ToolChainManager::toolchains([](const Toolchain *tc) {
return tc->isAutoDetected() && tc->typeId() == Constants::ANDROID_TOOLCHAIN_TYPEID return tc->isAutoDetected() && tc->typeId() == Constants::ANDROID_TOOLCHAIN_TYPEID
&& tc->isValid(); && tc->isValid();
}); });
QList<Kit *> unhandledKits = existingKits; QList<Kit *> unhandledKits = existingKits;
for (ToolChain *tc : toolchains) { for (Toolchain *tc : toolchains) {
if (tc->language() != ProjectExplorer::Constants::CXX_LANGUAGE_ID) if (tc->language() != ProjectExplorer::Constants::CXX_LANGUAGE_ID)
continue; continue;
@@ -1374,13 +1374,13 @@ void AndroidConfigurations::updateAutomaticKitList()
continue; continue;
const Toolchains allLanguages const Toolchains allLanguages
= Utils::filtered(toolchains, [tc, tcNdk](ToolChain *otherTc) { = Utils::filtered(toolchains, [tc, tcNdk](Toolchain *otherTc) {
FilePath otherNdk = static_cast<const AndroidToolChain *>(otherTc)->ndkLocation(); FilePath otherNdk = static_cast<const AndroidToolChain *>(otherTc)->ndkLocation();
return tc->targetAbi() == otherTc->targetAbi() && tcNdk == otherNdk; return tc->targetAbi() == otherTc->targetAbi() && tcNdk == otherNdk;
}); });
QHash<Id, ToolChain *> toolChainForLanguage; QHash<Id, Toolchain *> toolChainForLanguage;
for (ToolChain *tc : allLanguages) for (Toolchain *tc : allLanguages)
toolChainForLanguage[tc->language()] = tc; toolChainForLanguage[tc->language()] = tc;
Kit *existingKit = Utils::findOrDefault(existingKits, [&](const Kit *b) { Kit *existingKit = Utils::findOrDefault(existingKits, [&](const Kit *b) {
@@ -1396,7 +1396,7 @@ void AndroidConfigurations::updateAutomaticKitList()
k->setAutoDetected(true); k->setAutoDetected(true);
k->setAutoDetectionSource("AndroidConfiguration"); k->setAutoDetectionSource("AndroidConfiguration");
DeviceTypeKitAspect::setDeviceTypeId(k, Constants::ANDROID_DEVICE_TYPE); DeviceTypeKitAspect::setDeviceTypeId(k, Constants::ANDROID_DEVICE_TYPE);
for (ToolChain *tc : allLanguages) for (Toolchain *tc : allLanguages)
ToolChainKitAspect::setToolChain(k, tc); ToolChainKitAspect::setToolChain(k, tc);
QtKitAspect::setQtVersion(k, qt); QtKitAspect::setQtVersion(k, qt);
QStringList abis = static_cast<const AndroidQtVersion *>(qt)->androidAbis(); QStringList abis = static_cast<const AndroidQtVersion *>(qt)->androidAbis();

View File

@@ -73,7 +73,7 @@ bool AndroidPackageInstallationStep::init()
return false; return false;
} }
ToolChain *tc = ToolChainKitAspect::cxxToolChain(kit()); Toolchain *tc = ToolChainKitAspect::cxxToolChain(kit());
QTC_ASSERT(tc, reportWarningOrError(Tr::tr("\"%1\" step has an invalid C++ toolchain.") QTC_ASSERT(tc, reportWarningOrError(Tr::tr("\"%1\" step has an invalid C++ toolchain.")
.arg(displayName()), Task::TaskType::Error); .arg(displayName()), Task::TaskType::Error);
return false); return false);

View File

@@ -34,10 +34,10 @@ Q_GLOBAL_STATIC_WITH_ARGS(ClangTargetsType, ClangTargets, ({
Abi(Abi::ArmArchitecture, Abi::LinuxOS, Abi::AndroidLinuxFlavor, Abi::ElfFormat, 64)}} Abi(Abi::ArmArchitecture, Abi::LinuxOS, Abi::AndroidLinuxFlavor, Abi::ElfFormat, 64)}}
)); ));
static ToolChain *findToolChain(FilePath &compilerPath, Id lang, const QString &target, static Toolchain *findToolChain(FilePath &compilerPath, Id lang, const QString &target,
const ToolChainList &alreadyKnown) const ToolChainList &alreadyKnown)
{ {
ToolChain *tc = Utils::findOrDefault(alreadyKnown, [target, compilerPath, lang](ToolChain *tc) { Toolchain *tc = Utils::findOrDefault(alreadyKnown, [target, compilerPath, lang](Toolchain *tc) {
return tc->typeId() == Constants::ANDROID_TOOLCHAIN_TYPEID return tc->typeId() == Constants::ANDROID_TOOLCHAIN_TYPEID
&& tc->language() == lang && tc->language() == lang
&& tc->targetAbi() == ClangTargets->value(target) && tc->targetAbi() == ClangTargets->value(target)
@@ -180,7 +180,7 @@ ToolChainList AndroidToolchainFactory::autodetectToolChainsFromNdks(
const QList<FilePath> &ndkLocations, const QList<FilePath> &ndkLocations,
const bool isCustom) const bool isCustom)
{ {
QList<ToolChain *> result; QList<Toolchain *> result;
const AndroidConfig config = AndroidConfigurations::currentConfig(); const AndroidConfig config = AndroidConfigurations::currentConfig();
const Id LanguageIds[] { const Id LanguageIds[] {
@@ -211,7 +211,7 @@ ToolChainList AndroidToolchainFactory::autodetectToolChainsFromNdks(
while (targetItr != ClangTargets->constEnd()) { while (targetItr != ClangTargets->constEnd()) {
const Abi &abi = targetItr.value(); const Abi &abi = targetItr.value();
const QString target = targetItr.key(); const QString target = targetItr.key();
ToolChain *tc = findToolChain(compilerCommand, lang, target, alreadyKnown); Toolchain *tc = findToolChain(compilerCommand, lang, target, alreadyKnown);
QLatin1String customStr = isCustom ? QLatin1String("Custom ") : QLatin1String(); QLatin1String customStr = isCustom ? QLatin1String("Custom ") : QLatin1String();
const QString displayName(customStr + QString("Android Clang (%1, %2, NDK %3)") const QString displayName(customStr + QString("Android Clang (%1, %2, NDK %3)")
@@ -241,7 +241,7 @@ ToolChainList AndroidToolchainFactory::autodetectToolChainsFromNdks(
if (auto gccTc = dynamic_cast<GccToolChain*>(tc)) if (auto gccTc = dynamic_cast<GccToolChain*>(tc))
gccTc->resetToolChain(compilerCommand); gccTc->resetToolChain(compilerCommand);
tc->setDetection(ToolChain::AutoDetection); tc->setDetection(Toolchain::AutoDetection);
result << tc; result << tc;
++targetItr; ++targetItr;
} }

View File

@@ -9,7 +9,7 @@
namespace Android::Internal { namespace Android::Internal {
using ToolChainList = QList<ProjectExplorer::ToolChain *>; using ToolChainList = QList<ProjectExplorer::Toolchain *>;
class AndroidToolChain : public ProjectExplorer::GccToolChain class AndroidToolChain : public ProjectExplorer::GccToolChain
{ {

View File

@@ -59,7 +59,7 @@ void AutoTestUnitTests::initTestCase()
m_isQt4 = qtVersion->qtVersionString().startsWith('4'); m_isQt4 = qtVersion->qtVersionString().startsWith('4');
else else
QSKIP("Could not figure out which Qt version is used for default kit."); QSKIP("Could not figure out which Qt version is used for default kit.");
const ToolChain * const toolchain = ToolChainKitAspect::cxxToolChain(m_kit); const Toolchain * const toolchain = ToolChainKitAspect::cxxToolChain(m_kit);
if (!toolchain) if (!toolchain)
QSKIP("This test requires that there is a kit with a toolchain."); QSKIP("This test requires that there is a kit with a toolchain.");

View File

@@ -56,7 +56,7 @@ bool LoadProjectScenario::init()
return false; return false;
} }
const ToolChain * const toolchain = ToolChainKitAspect::cxxToolChain(m_kit); const Toolchain * const toolchain = ToolChainKitAspect::cxxToolChain(m_kit);
if (!toolchain) { if (!toolchain) {
qWarning() << "This test requires that there is a kit with a toolchain."; qWarning() << "This test requires that there is a kit with a toolchain.";
return false; return false;

View File

@@ -280,10 +280,10 @@ private:
// IarToolChain // IarToolChain
class IarToolChain final : public ToolChain class IarToolChain final : public Toolchain
{ {
public: public:
IarToolChain() : ToolChain(Constants::IAREW_TOOLCHAIN_TYPEID) IarToolChain() : Toolchain(Constants::IAREW_TOOLCHAIN_TYPEID)
{ {
setTypeDisplayName(Tr::tr("IAREW")); setTypeDisplayName(Tr::tr("IAREW"));
setTargetAbiKey("TargetAbi"); setTargetAbiKey("TargetAbi");
@@ -305,7 +305,7 @@ public:
std::unique_ptr<ToolchainConfigWidget> createConfigurationWidget() final; std::unique_ptr<ToolchainConfigWidget> createConfigurationWidget() final;
bool operator==(const ToolChain &other) const final; bool operator==(const Toolchain &other) const final;
QStringList extraCodeModelFlags() const final { return m_extraCodeModelFlags(); } QStringList extraCodeModelFlags() const final { return m_extraCodeModelFlags(); }
@@ -318,7 +318,7 @@ private:
friend class IarToolChainConfigWidget; friend class IarToolChainConfigWidget;
}; };
ToolChain::MacroInspectionRunner IarToolChain::createMacroInspectionRunner() const Toolchain::MacroInspectionRunner IarToolChain::createMacroInspectionRunner() const
{ {
Environment env = Environment::systemEnvironment(); Environment env = Environment::systemEnvironment();
addToEnvironment(env); addToEnvironment(env);
@@ -340,7 +340,7 @@ ToolChain::MacroInspectionRunner IarToolChain::createMacroInspectionRunner() con
macros.append({"__spec_string", "", MacroType::Define}); macros.append({"__spec_string", "", MacroType::Define});
macros.append({"__constrange(__a,__b)", "", MacroType::Define}); macros.append({"__constrange(__a,__b)", "", MacroType::Define});
const auto languageVersion = ToolChain::languageVersion(languageId, macros); const auto languageVersion = Toolchain::languageVersion(languageId, macros);
const auto report = MacroInspectionReport{macros, languageVersion}; const auto report = MacroInspectionReport{macros, languageVersion};
macrosCache->insert({}, report); macrosCache->insert({}, report);
@@ -359,7 +359,7 @@ WarningFlags IarToolChain::warningFlags(const QStringList &cxxflags) const
return WarningFlags::Default; return WarningFlags::Default;
} }
ToolChain::BuiltInHeaderPathsRunner IarToolChain::createBuiltInHeaderPathsRunner( Toolchain::BuiltInHeaderPathsRunner IarToolChain::createBuiltInHeaderPathsRunner(
const Environment &) const const Environment &) const
{ {
Environment env = Environment::systemEnvironment(); Environment env = Environment::systemEnvironment();
@@ -394,9 +394,9 @@ std::unique_ptr<ToolchainConfigWidget> IarToolChain::createConfigurationWidget()
return std::make_unique<IarToolChainConfigWidget>(this); return std::make_unique<IarToolChainConfigWidget>(this);
} }
bool IarToolChain::operator==(const ToolChain &other) const bool IarToolChain::operator==(const Toolchain &other) const
{ {
if (!ToolChain::operator==(other)) if (!Toolchain::operator==(other))
return false; return false;
const auto customTc = static_cast<const IarToolChain *>(&other); const auto customTc = static_cast<const IarToolChain *>(&other);
@@ -518,7 +518,7 @@ Toolchains IarToolchainFactory::autoDetectToolchains(
Toolchains result; Toolchains result;
for (const Candidate &candidate : std::as_const(candidates)) { for (const Candidate &candidate : std::as_const(candidates)) {
const Toolchains filtered = Utils::filtered(alreadyKnown, [candidate](ToolChain *tc) { const Toolchains filtered = Utils::filtered(alreadyKnown, [candidate](Toolchain *tc) {
return tc->typeId() == Constants::IAREW_TOOLCHAIN_TYPEID return tc->typeId() == Constants::IAREW_TOOLCHAIN_TYPEID
&& tc->compilerCommand() == candidate.compilerPath && tc->compilerCommand() == candidate.compilerPath
&& (tc->language() == ProjectExplorer::Constants::C_LANGUAGE_ID && (tc->language() == ProjectExplorer::Constants::C_LANGUAGE_ID
@@ -551,14 +551,14 @@ Toolchains IarToolchainFactory::autoDetectToolchain(const Candidate &candidate,
const Abi abi = guessAbi(macros); const Abi abi = guessAbi(macros);
const auto tc = new IarToolChain; const auto tc = new IarToolChain;
tc->setDetection(ToolChain::AutoDetection); tc->setDetection(Toolchain::AutoDetection);
tc->setLanguage(languageId); tc->setLanguage(languageId);
tc->setCompilerCommand(candidate.compilerPath); tc->setCompilerCommand(candidate.compilerPath);
tc->setTargetAbi(abi); tc->setTargetAbi(abi);
tc->setDisplayName(buildDisplayName(abi.architecture(), languageId, tc->setDisplayName(buildDisplayName(abi.architecture(), languageId,
candidate.compilerVersion)); candidate.compilerVersion));
const auto languageVersion = ToolChain::languageVersion(languageId, macros); const auto languageVersion = Toolchain::languageVersion(languageId, macros);
tc->predefinedMacrosCache()->insert({}, {macros, languageVersion}); tc->predefinedMacrosCache()->insert({}, {macros, languageVersion});
return {tc}; return {tc};
} }
@@ -608,7 +608,7 @@ void IarToolChainConfigWidget::applyImpl()
if (m_macros.isEmpty()) if (m_macros.isEmpty())
return; return;
const auto languageVersion = ToolChain::languageVersion(tc->language(), m_macros); const auto languageVersion = Toolchain::languageVersion(tc->language(), m_macros);
tc->predefinedMacrosCache()->insert({}, {m_macros, languageVersion}); tc->predefinedMacrosCache()->insert({}, {m_macros, languageVersion});
setFromToolchain(); setFromToolchain();

View File

@@ -418,11 +418,11 @@ private:
// KeilToolChain // KeilToolChain
class KeilToolChain final : public ToolChain class KeilToolChain final : public Toolchain
{ {
public: public:
KeilToolChain() : KeilToolChain() :
ToolChain(Constants::KEIL_TOOLCHAIN_TYPEID) Toolchain(Constants::KEIL_TOOLCHAIN_TYPEID)
{ {
setTypeDisplayName(Tr::tr("KEIL")); setTypeDisplayName(Tr::tr("KEIL"));
setTargetAbiKey("TargetAbi"); setTargetAbiKey("TargetAbi");
@@ -445,7 +445,7 @@ public:
std::unique_ptr<ToolchainConfigWidget> createConfigurationWidget() final; std::unique_ptr<ToolchainConfigWidget> createConfigurationWidget() final;
bool operator==(const ToolChain &other) const final; bool operator==(const Toolchain &other) const final;
QStringList extraCodeModelFlags() const final; QStringList extraCodeModelFlags() const final;
@@ -458,7 +458,7 @@ private:
friend class KeilToolChainConfigWidget; friend class KeilToolChainConfigWidget;
}; };
ToolChain::MacroInspectionRunner KeilToolChain::createMacroInspectionRunner() const Toolchain::MacroInspectionRunner KeilToolChain::createMacroInspectionRunner() const
{ {
Environment env = Environment::systemEnvironment(); Environment env = Environment::systemEnvironment();
addToEnvironment(env); addToEnvironment(env);
@@ -491,7 +491,7 @@ WarningFlags KeilToolChain::warningFlags(const QStringList &cxxflags) const
return WarningFlags::Default; return WarningFlags::Default;
} }
ToolChain::BuiltInHeaderPathsRunner KeilToolChain::createBuiltInHeaderPathsRunner( Toolchain::BuiltInHeaderPathsRunner KeilToolChain::createBuiltInHeaderPathsRunner(
const Environment &) const const Environment &) const
{ {
const FilePath compiler = compilerCommand(); const FilePath compiler = compilerCommand();
@@ -520,9 +520,9 @@ std::unique_ptr<ToolchainConfigWidget> KeilToolChain::createConfigurationWidget(
return std::make_unique<KeilToolChainConfigWidget>(this); return std::make_unique<KeilToolChainConfigWidget>(this);
} }
bool KeilToolChain::operator ==(const ToolChain &other) const bool KeilToolChain::operator ==(const Toolchain &other) const
{ {
if (!ToolChain::operator ==(other)) if (!Toolchain::operator ==(other))
return false; return false;
const auto customTc = static_cast<const KeilToolChain *>(&other); const auto customTc = static_cast<const KeilToolChain *>(&other);
@@ -667,7 +667,7 @@ Toolchains KeilToolchainFactory::autoDetectToolchains(
for (const Candidate &candidate : std::as_const(candidates)) { for (const Candidate &candidate : std::as_const(candidates)) {
const Toolchains filtered = Utils::filtered( const Toolchains filtered = Utils::filtered(
alreadyKnown, [candidate](ToolChain *tc) { alreadyKnown, [candidate](Toolchain *tc) {
return tc->typeId() == Constants::IAREW_TOOLCHAIN_TYPEID return tc->typeId() == Constants::IAREW_TOOLCHAIN_TYPEID
&& tc->compilerCommand() == candidate.compilerPath && tc->compilerCommand() == candidate.compilerPath
&& (tc->language() == ProjectExplorer::Constants::C_LANGUAGE_ID && (tc->language() == ProjectExplorer::Constants::C_LANGUAGE_ID
@@ -710,14 +710,14 @@ Toolchains KeilToolchainFactory::autoDetectToolchain(const Candidate &candidate,
} }
const auto tc = new KeilToolChain; const auto tc = new KeilToolChain;
tc->setDetection(ToolChain::AutoDetection); tc->setDetection(Toolchain::AutoDetection);
tc->setLanguage(language); tc->setLanguage(language);
tc->setCompilerCommand(candidate.compilerPath); tc->setCompilerCommand(candidate.compilerPath);
tc->m_extraCodeModelFlags.setValue(extraArgs); tc->m_extraCodeModelFlags.setValue(extraArgs);
tc->setTargetAbi(abi); tc->setTargetAbi(abi);
tc->setDisplayName(buildDisplayName(abi.architecture(), language, candidate.compilerVersion)); tc->setDisplayName(buildDisplayName(abi.architecture(), language, candidate.compilerVersion));
const auto languageVersion = ToolChain::languageVersion(language, macros); const auto languageVersion = Toolchain::languageVersion(language, macros);
tc->predefinedMacrosCache()->insert({}, {macros, languageVersion}); tc->predefinedMacrosCache()->insert({}, {macros, languageVersion});
return {tc}; return {tc};
} }
@@ -765,7 +765,7 @@ void KeilToolChainConfigWidget::applyImpl()
if (m_macros.isEmpty()) if (m_macros.isEmpty())
return; return;
const auto languageVersion = ToolChain::languageVersion(tc->language(), m_macros); const auto languageVersion = Toolchain::languageVersion(tc->language(), m_macros);
tc->predefinedMacrosCache()->insert({}, {m_macros, languageVersion}); tc->predefinedMacrosCache()->insert({}, {m_macros, languageVersion});
setFromToolChain(); setFromToolChain();

View File

@@ -199,10 +199,10 @@ private:
// SdccToolChain // SdccToolChain
class SdccToolChain final : public ToolChain class SdccToolChain final : public Toolchain
{ {
public: public:
SdccToolChain() : ToolChain(Constants::SDCC_TOOLCHAIN_TYPEID) SdccToolChain() : Toolchain(Constants::SDCC_TOOLCHAIN_TYPEID)
{ {
setTypeDisplayName(Tr::tr("SDCC")); setTypeDisplayName(Tr::tr("SDCC"));
setTargetAbiKey("TargetAbi"); setTargetAbiKey("TargetAbi");
@@ -220,7 +220,7 @@ public:
std::unique_ptr<ToolchainConfigWidget> createConfigurationWidget() final; std::unique_ptr<ToolchainConfigWidget> createConfigurationWidget() final;
bool operator==(const ToolChain &other) const final; bool operator==(const Toolchain &other) const final;
FilePath makeCommand(const Environment &) const final { return {}; } FilePath makeCommand(const Environment &) const final { return {}; }
@@ -229,7 +229,7 @@ private:
friend class SdccToolChainConfigWidget; friend class SdccToolChainConfigWidget;
}; };
ToolChain::MacroInspectionRunner SdccToolChain::createMacroInspectionRunner() const Toolchain::MacroInspectionRunner SdccToolChain::createMacroInspectionRunner() const
{ {
Environment env = Environment::systemEnvironment(); Environment env = Environment::systemEnvironment();
addToEnvironment(env); addToEnvironment(env);
@@ -263,7 +263,7 @@ WarningFlags SdccToolChain::warningFlags(const QStringList &cxxflags) const
return WarningFlags::Default; return WarningFlags::Default;
} }
ToolChain::BuiltInHeaderPathsRunner SdccToolChain::createBuiltInHeaderPathsRunner( Toolchain::BuiltInHeaderPathsRunner SdccToolChain::createBuiltInHeaderPathsRunner(
const Environment &) const const Environment &) const
{ {
Environment env = Environment::systemEnvironment(); Environment env = Environment::systemEnvironment();
@@ -288,9 +288,9 @@ std::unique_ptr<ToolchainConfigWidget> SdccToolChain::createConfigurationWidget(
return std::make_unique<SdccToolChainConfigWidget>(this); return std::make_unique<SdccToolChainConfigWidget>(this);
} }
bool SdccToolChain::operator==(const ToolChain &other) const bool SdccToolChain::operator==(const Toolchain &other) const
{ {
if (!ToolChain::operator==(other)) if (!Toolchain::operator==(other))
return false; return false;
const auto customTc = static_cast<const SdccToolChain *>(&other); const auto customTc = static_cast<const SdccToolChain *>(&other);
@@ -388,7 +388,7 @@ Toolchains SdccToolchainFactory::autoDetectToolchains(
Toolchains result; Toolchains result;
for (const Candidate &candidate : std::as_const(candidates)) { for (const Candidate &candidate : std::as_const(candidates)) {
const Toolchains filtered = Utils::filtered(alreadyKnown, [candidate](ToolChain *tc) { const Toolchains filtered = Utils::filtered(alreadyKnown, [candidate](Toolchain *tc) {
return tc->typeId() == Constants::SDCC_TOOLCHAIN_TYPEID return tc->typeId() == Constants::SDCC_TOOLCHAIN_TYPEID
&& tc->compilerCommand() == candidate.compilerPath && tc->compilerCommand() == candidate.compilerPath
&& (tc->language() == ProjectExplorer::Constants::C_LANGUAGE_ID); && (tc->language() == ProjectExplorer::Constants::C_LANGUAGE_ID);
@@ -429,14 +429,14 @@ Toolchains SdccToolchainFactory::autoDetectToolchain(const Candidate &candidate,
continue; continue;
const auto tc = new SdccToolChain; const auto tc = new SdccToolChain;
tc->setDetection(ToolChain::AutoDetection); tc->setDetection(Toolchain::AutoDetection);
tc->setLanguage(language); tc->setLanguage(language);
tc->setCompilerCommand(candidate.compilerPath); tc->setCompilerCommand(candidate.compilerPath);
tc->setTargetAbi(abi); tc->setTargetAbi(abi);
tc->setDisplayName(buildDisplayName(abi.architecture(), language, tc->setDisplayName(buildDisplayName(abi.architecture(), language,
candidate.compilerVersion)); candidate.compilerVersion));
const auto languageVersion = ToolChain::languageVersion(language, macros); const auto languageVersion = Toolchain::languageVersion(language, macros);
tc->predefinedMacrosCache()->insert({}, {macros, languageVersion}); tc->predefinedMacrosCache()->insert({}, {macros, languageVersion});
tcs.push_back(tc); tcs.push_back(tc);
@@ -482,7 +482,7 @@ void SdccToolChainConfigWidget::applyImpl()
if (m_macros.isEmpty()) if (m_macros.isEmpty())
return; return;
const auto languageVersion = ToolChain::languageVersion(tc->language(), m_macros); const auto languageVersion = Toolchain::languageVersion(tc->language(), m_macros);
tc->predefinedMacrosCache()->insert({}, {m_macros, languageVersion}); tc->predefinedMacrosCache()->insert({}, {m_macros, languageVersion});
setFromToolchain(); setFromToolchain();

View File

@@ -148,7 +148,7 @@ static QList<Target *> validTargets(Project *project)
return false; return false;
} }
const ToolChain * const toolchain = ToolChainKitAspect::cxxToolChain(kit); const Toolchain * const toolchain = ToolChainKitAspect::cxxToolChain(kit);
QTC_ASSERT(toolchain, return false); QTC_ASSERT(toolchain, return false);
if (Core::ICore::clangExecutable(CLANG_BINDIR).isEmpty()) { if (Core::ICore::clangExecutable(CLANG_BINDIR).isEmpty()) {

View File

@@ -50,7 +50,7 @@ void ClangToolsUnitTests::initTestCase()
if (!m_kit) if (!m_kit)
QSKIP("This test requires at least one valid kit with a valid Qt"); QSKIP("This test requires at least one valid kit with a valid Qt");
const ToolChain *const toolchain = ToolChainKitAspect::cxxToolChain(m_kit); const Toolchain * const toolchain = ToolChainKitAspect::cxxToolChain(m_kit);
if (!toolchain) if (!toolchain)
QSKIP("This test requires that there is a kit with a toolchain."); QSKIP("This test requires that there is a kit with a toolchain.");

View File

@@ -1091,7 +1091,7 @@ static bool isQnx(const Kit *k)
static bool isWindowsARM64(const Kit *k) static bool isWindowsARM64(const Kit *k)
{ {
ToolChain *toolchain = ToolChainKitAspect::cxxToolChain(k); Toolchain *toolchain = ToolChainKitAspect::cxxToolChain(k);
if (!toolchain) if (!toolchain)
return false; return false;
const Abi targetAbi = toolchain->targetAbi(); const Abi targetAbi = toolchain->targetAbi();
@@ -1124,7 +1124,7 @@ static CommandLine defaultInitialCMakeCommand(const Kit *k, const QString &build
const QString sysRoot = SysRootKitAspect::sysRoot(k).path(); const QString sysRoot = SysRootKitAspect::sysRoot(k).path();
if (!sysRoot.isEmpty()) { if (!sysRoot.isEmpty()) {
cmd.addArg("-DCMAKE_SYSROOT:PATH=" + sysRoot); cmd.addArg("-DCMAKE_SYSROOT:PATH=" + sysRoot);
if (ToolChain *tc = ToolChainKitAspect::cxxToolChain(k)) { if (Toolchain *tc = ToolChainKitAspect::cxxToolChain(k)) {
const QString targetTriple = tc->originalTargetTriple(); const QString targetTriple = tc->originalTargetTriple();
cmd.addArg("-DCMAKE_C_COMPILER_TARGET:STRING=" + targetTriple); cmd.addArg("-DCMAKE_C_COMPILER_TARGET:STRING=" + targetTriple);
cmd.addArg("-DCMAKE_CXX_COMPILER_TARGET:STRING=" + targetTriple); cmd.addArg("-DCMAKE_CXX_COMPILER_TARGET:STRING=" + targetTriple);

View File

@@ -335,7 +335,7 @@ void CMakeBuildStep::setupOutputFormatter(Utils::OutputFormatter *formatter)
formatter->addLineParser(progressParser); formatter->addLineParser(progressParser);
cmakeParser->setSourceDirectory(project()->projectDirectory()); cmakeParser->setSourceDirectory(project()->projectDirectory());
formatter->addLineParsers({cmakeParser, new GnuMakeParser}); formatter->addLineParsers({cmakeParser, new GnuMakeParser});
ToolChain *tc = ToolChainKitAspect::cxxToolChain(kit()); Toolchain *tc = ToolChainKitAspect::cxxToolChain(kit());
OutputTaskParser *xcodeBuildParser = nullptr; OutputTaskParser *xcodeBuildParser = nullptr;
if (tc && tc->targetAbi().os() == Abi::DarwinOS) { if (tc && tc->targetAbi().os() == Abi::DarwinOS) {
xcodeBuildParser = new XcodebuildParser; xcodeBuildParser = new XcodebuildParser;

View File

@@ -681,7 +681,7 @@ QVariant CMakeGeneratorKitAspectFactory::defaultValue(const Kit *k) const
if (tool->filePath().osType() == OsTypeWindows) { if (tool->filePath().osType() == OsTypeWindows) {
// *sigh* Windows with its zoo of incompatible stuff again... // *sigh* Windows with its zoo of incompatible stuff again...
ToolChain *tc = ToolChainKitAspect::cxxToolChain(k); Toolchain *tc = ToolChainKitAspect::cxxToolChain(k);
if (tc && tc->typeId() == ProjectExplorer::Constants::MINGW_TOOLCHAIN_TYPEID) { if (tc && tc->typeId() == ProjectExplorer::Constants::MINGW_TOOLCHAIN_TYPEID) {
it = std::find_if(known.constBegin(), it = std::find_if(known.constBegin(),
known.constEnd(), known.constEnd(),
@@ -1135,8 +1135,8 @@ Tasks CMakeConfigurationKitAspectFactory::validate(const Kit *k) const
return Tasks(); return Tasks();
const QtSupport::QtVersion *const version = QtSupport::QtKitAspect::qtVersion(k); const QtSupport::QtVersion *const version = QtSupport::QtKitAspect::qtVersion(k);
const ToolChain *const tcC = ToolChainKitAspect::cToolChain(k); const Toolchain *const tcC = ToolChainKitAspect::cToolChain(k);
const ToolChain *const tcCxx = ToolChainKitAspect::cxxToolChain(k); const Toolchain *const tcCxx = ToolChainKitAspect::cxxToolChain(k);
const CMakeConfig config = CMakeConfigurationKitAspect::configuration(k); const CMakeConfig config = CMakeConfigurationKitAspect::configuration(k);
const bool isQt4 = version && version->qtVersion() < QVersionNumber(5, 0, 0); const bool isQt4 = version && version->qtVersion() < QVersionNumber(5, 0, 0);

View File

@@ -585,7 +585,7 @@ void updateConfigWithDirectoryData(CMakeConfig &config, const std::unique_ptr<Di
data->qt.qt->qmakeFilePath().toString().toUtf8()); data->qt.qt->qmakeFilePath().toString().toUtf8());
} }
ToolChain *findExternalToolchain(const QString &presetArchitecture, const QString &presetToolset) Toolchain *findExternalToolchain(const QString &presetArchitecture, const QString &presetToolset)
{ {
// A compiler path example. Note that the compiler version is not the same version from MsvcToolChain // A compiler path example. Note that the compiler version is not the same version from MsvcToolChain
// ... \MSVC\14.29.30133\bin\Hostx64\x64\cl.exe // ... \MSVC\14.29.30133\bin\Hostx64\x64\cl.exe
@@ -601,16 +601,16 @@ ToolChain *findExternalToolchain(const QString &presetArchitecture, const QStrin
// "strategy": "external" // "strategy": "external"
// } // }
auto msvcToolchains = ToolChainManager::toolchains([](const ToolChain *tc) { auto msvcToolchains = ToolChainManager::toolchains([](const Toolchain *tc) {
return tc->typeId() == ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID; return tc->typeId() == ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID;
}); });
const QSet<Abi::OSFlavor> msvcFlavors = Utils::toSet(Utils::transform(msvcToolchains, [](const ToolChain *tc) { const QSet<Abi::OSFlavor> msvcFlavors = Utils::toSet(Utils::transform(msvcToolchains, [](const Toolchain *tc) {
return tc->targetAbi().osFlavor(); return tc->targetAbi().osFlavor();
})); }));
return ToolChainManager::toolChain( return ToolChainManager::toolChain(
[presetArchitecture, presetToolset, msvcFlavors](const ToolChain *tc) -> bool { [presetArchitecture, presetToolset, msvcFlavors](const Toolchain *tc) -> bool {
if (tc->typeId() != ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID) if (tc->typeId() != ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID)
return false; return false;
@@ -732,7 +732,7 @@ QList<void *> CMakeProjectImporter::examineDirectory(const FilePath &importPath,
data->toolset = configurePreset.toolset.value().value.value(); data->toolset = configurePreset.toolset.value().value.value();
if (architectureExternalStrategy && toolsetExternalStrategy) { if (architectureExternalStrategy && toolsetExternalStrategy) {
const ToolChain *tc const Toolchain *tc
= findExternalToolchain(configurePreset.architecture->value.value_or(QString()), = findExternalToolchain(configurePreset.architecture->value.value_or(QString()),
configurePreset.toolset->value.value_or(QString())); configurePreset.toolset->value.value_or(QString()));
if (tc) if (tc)
@@ -937,7 +937,7 @@ bool CMakeProjectImporter::matchKit(void *directoryData, const Kit *k) const
if (!Utils::contains(allLanguages, if (!Utils::contains(allLanguages,
[&tcd](const Id &language) { return language == tcd.language; })) [&tcd](const Id &language) { return language == tcd.language; }))
continue; continue;
ToolChain *tc = ToolChainKitAspect::toolChain(k, tcd.language); Toolchain *tc = ToolChainKitAspect::toolChain(k, tcd.language);
if ((!tc || !tc->matchesCompilerCommand(tcd.compilerPath))) { if ((!tc || !tc->matchesCompilerCommand(tcd.compilerPath))) {
return false; return false;
} }
@@ -950,7 +950,7 @@ bool CMakeProjectImporter::matchKit(void *directoryData, const Kit *k) const
if (!Utils::contains(allLanguages, if (!Utils::contains(allLanguages,
[&tcd](const Id &language) { return language == tcd.language; })) [&tcd](const Id &language) { return language == tcd.language; }))
continue; continue;
ToolChain *tc = ToolChainKitAspect::toolChain(k, tcd.language); Toolchain *tc = ToolChainKitAspect::toolChain(k, tcd.language);
if (tc && tc->matchesCompilerCommand(tcd.compilerPath)) { if (tc && tc->matchesCompilerCommand(tcd.compilerPath)) {
return false; return false;
} }
@@ -1000,7 +1000,7 @@ Kit *CMakeProjectImporter::createKit(void *directoryData) const
QTC_ASSERT(!tcd.tcs.isEmpty(), continue); QTC_ASSERT(!tcd.tcs.isEmpty(), continue);
if (tcd.areTemporary) { if (tcd.areTemporary) {
for (ToolChain *tc : tcd.tcs) for (Toolchain *tc : tcd.tcs)
addTemporaryData(ToolChainKitAspect::id(), tc->id(), k); addTemporaryData(ToolChainKitAspect::id(), tc->id(), k);
} }

View File

@@ -75,9 +75,9 @@ Utils::Id getCompilerId(QString compilerName)
return ProjectExplorer::Constants::CLANG_TOOLCHAIN_TYPEID; return ProjectExplorer::Constants::CLANG_TOOLCHAIN_TYPEID;
} }
ToolChain *toolchainFromCompilerId(const Utils::Id &compilerId, const Utils::Id &language) Toolchain *toolchainFromCompilerId(const Utils::Id &compilerId, const Utils::Id &language)
{ {
return ToolChainManager::toolChain([&compilerId, &language](const ToolChain *tc) { return ToolChainManager::toolChain([&compilerId, &language](const Toolchain *tc) {
if (!tc->isValid() || tc->language() != language) if (!tc->isValid() || tc->language() != language)
return false; return false;
return tc->typeId() == compilerId; return tc->typeId() == compilerId;
@@ -105,14 +105,14 @@ QString compilerPath(QString pathFlag)
return QDir::fromNativeSeparators(pathFlag); return QDir::fromNativeSeparators(pathFlag);
} }
ToolChain *toolchainFromFlags(const Kit *kit, const QStringList &flags, const Utils::Id &language) Toolchain *toolchainFromFlags(const Kit *kit, const QStringList &flags, const Utils::Id &language)
{ {
if (flags.empty()) if (flags.empty())
return ToolChainKitAspect::toolChain(kit, language); return ToolChainKitAspect::toolChain(kit, language);
// Try exact compiler match. // Try exact compiler match.
const Utils::FilePath compiler = Utils::FilePath::fromUserInput(compilerPath(flags.front())); const Utils::FilePath compiler = Utils::FilePath::fromUserInput(compilerPath(flags.front()));
ToolChain *toolchain = ToolChainManager::toolChain([&compiler, &language](const ToolChain *tc) { Toolchain *toolchain = ToolChainManager::toolChain([&compiler, &language](const Toolchain *tc) {
return tc->isValid() && tc->language() == language && tc->compilerCommand() == compiler; return tc->isValid() && tc->language() == language && tc->compilerCommand() == compiler;
}); });
if (toolchain) if (toolchain)
@@ -136,7 +136,7 @@ ToolChain *toolchainFromFlags(const Kit *kit, const QStringList &flags, const Ut
return toolchain; return toolchain;
} }
void addDriverModeFlagIfNeeded(const ToolChain *toolchain, void addDriverModeFlagIfNeeded(const Toolchain *toolchain,
QStringList &flags, QStringList &flags,
const QStringList &originalFlags) const QStringList &originalFlags)
{ {

View File

@@ -39,7 +39,7 @@ void CompilationDatabaseTests::initTestCase()
if (allKits.empty()) if (allKits.empty())
QSKIP("This test requires at least one kit to be present."); QSKIP("This test requires at least one kit to be present.");
ToolChain *toolchain = ToolChainManager::toolChain([](const ToolChain *tc) { Toolchain *toolchain = ToolChainManager::toolChain([](const Toolchain *tc) {
return tc->isValid() && tc->language() == ProjectExplorer::Constants::CXX_LANGUAGE_ID; return tc->isValid() && tc->language() == ProjectExplorer::Constants::CXX_LANGUAGE_ID;
}); });
if (!toolchain) if (!toolchain)

View File

@@ -104,7 +104,7 @@ ConanInstallStep::ConanInstallStep(BuildStepList *bsl, Id id)
}); });
setSummaryUpdater([this]() -> QString { setSummaryUpdater([this]() -> QString {
QList<ToolChain *> tcList = ToolChainKitAspect::toolChains(target()->kit()); QList<Toolchain *> tcList = ToolChainKitAspect::toolChains(target()->kit());
if (tcList.isEmpty()) if (tcList.isEmpty())
return "<b>" + ToolChainKitAspect::msgNoToolChainInTarget() + "</b>"; return "<b>" + ToolChainKitAspect::msgNoToolChainInTarget() + "</b>";
ProcessParameters param; ProcessParameters param;
@@ -124,7 +124,7 @@ bool ConanInstallStep::init()
if (!AbstractProcessStep::init()) if (!AbstractProcessStep::init())
return false; return false;
const QList<ToolChain *> tcList = ToolChainKitAspect::toolChains(target()->kit()); const QList<Toolchain *> tcList = ToolChainKitAspect::toolChains(target()->kit());
if (tcList.isEmpty()) { if (tcList.isEmpty()) {
emit addTask(Task::compilerMissingTask()); emit addTask(Task::compilerMissingTask());
emitFaultyConfigurationMessage(); emitFaultyConfigurationMessage();

View File

@@ -46,7 +46,7 @@ public:
tcInfo.isMsvc2015ToolChain = isMsvc2015; tcInfo.isMsvc2015ToolChain = isMsvc2015;
tcInfo.extraCodeModelFlags = extraFlags; tcInfo.extraCodeModelFlags = extraFlags;
tcInfo.macroInspectionRunner = [this](const QStringList &) { tcInfo.macroInspectionRunner = [this](const QStringList &) {
return ToolChain::MacroInspectionReport{toolchainMacros, languageVersion}; return Toolchain::MacroInspectionReport{toolchainMacros, languageVersion};
}; };
RawProjectPartFlags rppFlags; RawProjectPartFlags rppFlags;
rppFlags.commandLineFlags = flags; rppFlags.commandLineFlags = flags;

View File

@@ -409,7 +409,7 @@ void CppModelManager::showPreprocessedFile(bool inNextSplit)
return; return;
} }
const ToolChain * tc = nullptr; const Toolchain * tc = nullptr;
const ProjectFile classifier(filePath, ProjectFile::classify(filePath.toString())); const ProjectFile classifier(filePath, ProjectFile::classify(filePath.toString()));
if (classifier.isC()) { if (classifier.isC()) {
tc = ToolChainKitAspect::cToolChain(project->activeTarget()->kit()); tc = ToolChainKitAspect::cToolChain(project->activeTarget()->kit());
@@ -1964,7 +1964,7 @@ void CppModelManager::setupFallbackProjectPart()
// TODO: Use different fallback toolchain for different kinds of files? // TODO: Use different fallback toolchain for different kinds of files?
const Kit * const defaultKit = KitManager::isLoaded() ? KitManager::defaultKit() : nullptr; const Kit * const defaultKit = KitManager::isLoaded() ? KitManager::defaultKit() : nullptr;
const ToolChain * const defaultTc = defaultKit const Toolchain * const defaultTc = defaultKit
? ToolChainKitAspect::cxxToolChain(defaultKit) : nullptr; ? ToolChainKitAspect::cxxToolChain(defaultKit) : nullptr;
if (defaultKit && defaultTc) { if (defaultKit && defaultTc) {
FilePath sysroot = SysRootKitAspect::sysRoot(defaultKit); FilePath sysroot = SysRootKitAspect::sysRoot(defaultKit);
@@ -1974,7 +1974,7 @@ void CppModelManager::setupFallbackProjectPart()
tcInfo = ToolChainInfo(defaultTc, sysroot, env); tcInfo = ToolChainInfo(defaultTc, sysroot, env);
const auto macroInspectionWrapper = [runner = tcInfo.macroInspectionRunner]( const auto macroInspectionWrapper = [runner = tcInfo.macroInspectionRunner](
const QStringList &flags) { const QStringList &flags) {
ToolChain::MacroInspectionReport report = runner(flags); Toolchain::MacroInspectionReport report = runner(flags);
report.languageVersion = LanguageVersion::LatestCxx; report.languageVersion = LanguageVersion::LatestCxx;
return report; return report;
}; };

View File

@@ -69,7 +69,7 @@ public:
// Create project part for C // Create project part for C
tcInfo.macroInspectionRunner = [](const QStringList &) { tcInfo.macroInspectionRunner = [](const QStringList &) {
return ToolChain::MacroInspectionReport{{}, Utils::LanguageVersion::C11}; return Toolchain::MacroInspectionReport{{}, Utils::LanguageVersion::C11};
}; };
const ProjectPart::ConstPtr cprojectpart = ProjectPart::create({}, {}, {}, {}, {}, {}, {}, const ProjectPart::ConstPtr cprojectpart = ProjectPart::create({}, {}, {}, {}, {}, {}, {},
tcInfo); tcInfo);
@@ -77,7 +77,7 @@ public:
// Create project part for CXX // Create project part for CXX
tcInfo.macroInspectionRunner = [](const QStringList &) { tcInfo.macroInspectionRunner = [](const QStringList &) {
return ToolChain::MacroInspectionReport{{}, Utils::LanguageVersion::CXX98}; return Toolchain::MacroInspectionReport{{}, Utils::LanguageVersion::CXX98};
}; };
const ProjectPart::ConstPtr cxxprojectpart = ProjectPart::create({}, {}, {}, {}, {}, {}, {}, const ProjectPart::ConstPtr cxxprojectpart = ProjectPart::create({}, {}, {}, {}, {}, {}, {},
tcInfo); tcInfo);
@@ -330,10 +330,10 @@ void ProjectPartChooserTest::testDoNotIndicateFromDependencies()
} }
namespace { namespace {
class TestToolchain : public ToolChain class TestToolchain : public Toolchain
{ {
public: public:
TestToolchain() : ToolChain("dummy") {} TestToolchain() : Toolchain("dummy") {}
private: private:
MacroInspectionRunner createMacroInspectionRunner() const override { return {}; } MacroInspectionRunner createMacroInspectionRunner() const override { return {}; }

View File

@@ -96,10 +96,10 @@ static HeaderPaths getHeaderPaths(const RawProjectPart &rpp,
return headerPaths; return headerPaths;
} }
static ToolChain::MacroInspectionReport getToolchainMacros( static Toolchain::MacroInspectionReport getToolchainMacros(
const RawProjectPartFlags &flags, const ToolChainInfo &tcInfo, Utils::Language language) const RawProjectPartFlags &flags, const ToolChainInfo &tcInfo, Utils::Language language)
{ {
ToolChain::MacroInspectionReport report; Toolchain::MacroInspectionReport report;
if (tcInfo.macroInspectionRunner) { if (tcInfo.macroInspectionRunner) {
report = tcInfo.macroInspectionRunner(flags.commandLineFlags); report = tcInfo.macroInspectionRunner(flags.commandLineFlags);
} else if (language == Utils::Language::C) { // No compiler set in kit. } else if (language == Utils::Language::C) { // No compiler set in kit.

View File

@@ -110,7 +110,7 @@ private:
CPlusPlus::LanguageFeatures deriveLanguageFeatures() const; CPlusPlus::LanguageFeatures deriveLanguageFeatures() const;
const ProjectExplorer::ToolChain::MacroInspectionReport m_macroReport; const ProjectExplorer::Toolchain::MacroInspectionReport m_macroReport;
public: public:
// Must come last due to initialization order. // Must come last due to initialization order.

View File

@@ -46,7 +46,7 @@ public:
private: private:
QtVersions autoDetectQtVersions() const; QtVersions autoDetectQtVersions() const;
QList<ToolChain *> autoDetectToolChains(); QList<Toolchain *> autoDetectToolChains();
void autoDetectPython(); void autoDetectPython();
QList<Id> autoDetectCMake(); QList<Id> autoDetectCMake();
void autoDetectDebugger(); void autoDetectDebugger();
@@ -107,7 +107,7 @@ void KitDetectorPrivate::undoAutoDetect() const
emit q->logOutput('\n' + ProjectExplorer::Tr::tr("Removing toolchain entries...")); emit q->logOutput('\n' + ProjectExplorer::Tr::tr("Removing toolchain entries..."));
const Toolchains toolchains = ToolChainManager::toolchains(); const Toolchains toolchains = ToolChainManager::toolchains();
for (ToolChain *toolChain : toolchains) { for (Toolchain *toolChain : toolchains) {
if (toolChain && toolChain->detectionSource() == m_sharedId) { if (toolChain && toolChain->detectionSource() == m_sharedId) {
emit q->logOutput(ProjectExplorer::Tr::tr("Removed \"%1\"").arg(toolChain->displayName())); emit q->logOutput(ProjectExplorer::Tr::tr("Removed \"%1\"").arg(toolChain->displayName()));
ToolChainManager::deregisterToolChain(toolChain); ToolChainManager::deregisterToolChain(toolChain);
@@ -164,7 +164,7 @@ void KitDetectorPrivate::listAutoDetected() const
} }
emit q->logOutput('\n' + ProjectExplorer::Tr::tr("Toolchains:")); emit q->logOutput('\n' + ProjectExplorer::Tr::tr("Toolchains:"));
for (ToolChain *toolChain : ToolChainManager::toolchains()) { for (Toolchain *toolChain : ToolChainManager::toolchains()) {
if (toolChain->detectionSource() == m_sharedId) if (toolChain->detectionSource() == m_sharedId)
emit q->logOutput(toolChain->displayName()); emit q->logOutput(toolChain->displayName());
} }
@@ -259,7 +259,7 @@ Toolchains KitDetectorPrivate::autoDetectToolChains()
emit q->logOutput(ProjectExplorer::Tr::tr("Searching toolchains of type %1").arg(factory->displayName())); emit q->logOutput(ProjectExplorer::Tr::tr("Searching toolchains of type %1").arg(factory->displayName()));
const ToolchainDetector detector(alreadyKnown, m_device, m_searchPaths); const ToolchainDetector detector(alreadyKnown, m_device, m_searchPaths);
const Toolchains newToolChains = factory->autoDetect(detector); const Toolchains newToolChains = factory->autoDetect(detector);
for (ToolChain *toolChain : newToolChains) { for (Toolchain *toolChain : newToolChains) {
emit q->logOutput(ProjectExplorer::Tr::tr("Found \"%1\"").arg(toolChain->compilerCommand().toUserOutput())); emit q->logOutput(ProjectExplorer::Tr::tr("Found \"%1\"").arg(toolChain->compilerCommand().toUserOutput()));
toolChain->setDetectionSource(m_sharedId); toolChain->setDetectionSource(m_sharedId);
ToolChainManager::registerToolChain(toolChain); ToolChainManager::registerToolChain(toolChain);
@@ -359,11 +359,11 @@ void KitDetectorPrivate::autoDetect()
QtSupport::QtKitAspect::setQtVersion(k, qt); QtSupport::QtKitAspect::setQtVersion(k, qt);
} }
Toolchains toolchainsToSet; Toolchains toolchainsToSet;
toolchainsToSet = ToolChainManager::toolchains([qt, this](const ToolChain *tc) { toolchainsToSet = ToolChainManager::toolchains([qt, this](const Toolchain *tc) {
return tc->detectionSource() == m_sharedId return tc->detectionSource() == m_sharedId
&& (!qt || qt->qtAbis().contains(tc->targetAbi())); && (!qt || qt->qtAbis().contains(tc->targetAbi()));
}); });
for (ToolChain *toolChain : toolchainsToSet) for (Toolchain *toolChain : toolchainsToSet)
ToolChainKitAspect::setToolChain(k, toolChain); ToolChainKitAspect::setToolChain(k, toolChain);
if (cmakeId.isValid()) if (cmakeId.isValid())

View File

@@ -37,7 +37,7 @@ FilePath MakeCommandBuilder::defaultCommand() const
{ {
if (BuildConfiguration *buildConfig = buildStep()->buildConfiguration()) { if (BuildConfiguration *buildConfig = buildStep()->buildConfiguration()) {
if (Target *target = buildStep()->target()) { if (Target *target = buildStep()->target()) {
if (ToolChain *toolChain = ToolChainKitAspect::cxxToolChain(target->kit())) if (Toolchain *toolChain = ToolChainKitAspect::cxxToolChain(target->kit()))
return toolChain->makeCommand(buildConfig->environment()); return toolChain->makeCommand(buildConfig->environment());
} }
} }

View File

@@ -148,7 +148,7 @@ bool IosBuildStep::init()
if (!AbstractProcessStep::init()) if (!AbstractProcessStep::init())
return false; return false;
ToolChain *tc = ToolChainKitAspect::cxxToolChain(kit()); Toolchain *tc = ToolChainKitAspect::cxxToolChain(kit());
if (!tc) { if (!tc) {
emit addTask(Task::compilerMissingTask()); emit addTask(Task::compilerMissingTask());
emitFaultyConfigurationMessage(); emitFaultyConfigurationMessage();
@@ -195,7 +195,7 @@ QStringList IosBuildStep::defaultArguments() const
{ {
QStringList res; QStringList res;
Kit *kit = target()->kit(); Kit *kit = target()->kit();
ToolChain *tc = ToolChainKitAspect::cxxToolChain(kit); Toolchain *tc = ToolChainKitAspect::cxxToolChain(kit);
switch (buildConfiguration()->buildType()) { switch (buildConfiguration()->buildType()) {
case BuildConfiguration::Debug : case BuildConfiguration::Debug :
res << "-configuration" << "Debug"; res << "-configuration" << "Debug";

View File

@@ -101,7 +101,7 @@ static bool isSimulatorDeviceId(const Id &id)
static QList<GccToolChain *> clangToolChains(const Toolchains &toolChains) static QList<GccToolChain *> clangToolChains(const Toolchains &toolChains)
{ {
QList<GccToolChain *> 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<GccToolChain *>(toolChain)); clangToolChains.append(static_cast<GccToolChain *>(toolChain));
return clangToolChains; return clangToolChains;
@@ -593,8 +593,8 @@ Toolchains IosToolchainFactory::autoDetect(const ToolchainDetector &detector) co
if (!toolChain) { if (!toolChain) {
toolChain = new GccToolChain(ProjectExplorer::Constants::CLANG_TOOLCHAIN_TYPEID, toolChain = new GccToolChain(ProjectExplorer::Constants::CLANG_TOOLCHAIN_TYPEID,
GccToolChain::Clang); GccToolChain::Clang);
toolChain->setPriority(ToolChain::PriorityHigh); toolChain->setPriority(Toolchain::PriorityHigh);
toolChain->setDetection(ToolChain::AutoDetection); toolChain->setDetection(Toolchain::AutoDetection);
toolChain->setLanguage(l); toolChain->setLanguage(l);
toolChain->setDisplayName(target.name); toolChain->setDisplayName(target.name);
toolChain->setPlatformCodeGenFlags(target.backendFlags); toolChain->setPlatformCodeGenFlags(target.backendFlags);

View File

@@ -364,9 +364,9 @@ bool McuToolChainPackage::isDesktopToolchain() const
|| m_type == ToolChainType::MinGW; || m_type == ToolChainType::MinGW;
} }
ToolChain *McuToolChainPackage::msvcToolChain(Id language) Toolchain *McuToolChainPackage::msvcToolChain(Id language)
{ {
ToolChain *toolChain = ToolChainManager::toolChain([language](const ToolChain *t) { Toolchain *toolChain = ToolChainManager::toolChain([language](const Toolchain *t) {
const Abi abi = t->targetAbi(); const Abi abi = t->targetAbi();
return abi.osFlavor() == Abi::WindowsMsvc2019Flavor return abi.osFlavor() == Abi::WindowsMsvc2019Flavor
&& abi.architecture() == Abi::X86Architecture && abi.wordWidth() == 64 && abi.architecture() == Abi::X86Architecture && abi.wordWidth() == 64
@@ -376,9 +376,9 @@ ToolChain *McuToolChainPackage::msvcToolChain(Id language)
return toolChain; return toolChain;
} }
ToolChain *McuToolChainPackage::gccToolChain(Id language) Toolchain *McuToolChainPackage::gccToolChain(Id language)
{ {
ToolChain *toolChain = ToolChainManager::toolChain([language](const ToolChain *t) { Toolchain *toolChain = ToolChainManager::toolChain([language](const Toolchain *t) {
const Abi abi = t->targetAbi(); const Abi abi = t->targetAbi();
return abi.os() != Abi::WindowsOS && abi.architecture() == Abi::X86Architecture return abi.os() != Abi::WindowsOS && abi.architecture() == Abi::X86Architecture
&& abi.wordWidth() == 64 && t->language() == language; && abi.wordWidth() == 64 && t->language() == language;
@@ -386,9 +386,9 @@ ToolChain *McuToolChainPackage::gccToolChain(Id language)
return toolChain; return toolChain;
} }
static ToolChain *mingwToolChain(const FilePath &path, Id language) static Toolchain *mingwToolChain(const FilePath &path, Id language)
{ {
ToolChain *toolChain = ToolChainManager::toolChain([&path, language](const ToolChain *t) { Toolchain *toolChain = ToolChainManager::toolChain([&path, language](const Toolchain *t) {
// find a MinGW toolchain having the same path from registered toolchains // find a MinGW toolchain having the same path from registered toolchains
const Abi abi = t->targetAbi(); const Abi abi = t->targetAbi();
return t->typeId() == ProjectExplorer::Constants::MINGW_TOOLCHAIN_TYPEID return t->typeId() == ProjectExplorer::Constants::MINGW_TOOLCHAIN_TYPEID
@@ -398,7 +398,7 @@ static ToolChain *mingwToolChain(const FilePath &path, Id language)
if (!toolChain) { if (!toolChain) {
// if there's no MinGW toolchain having the same path, // if there's no MinGW toolchain having the same path,
// a proper MinGW would be selected from the registered toolchains. // a proper MinGW would be selected from the registered toolchains.
toolChain = ToolChainManager::toolChain([language](const ToolChain *t) { toolChain = ToolChainManager::toolChain([language](const Toolchain *t) {
const Abi abi = t->targetAbi(); const Abi abi = t->targetAbi();
return t->typeId() == ProjectExplorer::Constants::MINGW_TOOLCHAIN_TYPEID return t->typeId() == ProjectExplorer::Constants::MINGW_TOOLCHAIN_TYPEID
&& abi.architecture() == Abi::X86Architecture && abi.wordWidth() == 64 && abi.architecture() == Abi::X86Architecture && abi.wordWidth() == 64
@@ -408,9 +408,9 @@ static ToolChain *mingwToolChain(const FilePath &path, Id language)
return toolChain; return toolChain;
} }
static ToolChain *armGccToolChain(const FilePath &path, Id language) static Toolchain *armGccToolChain(const FilePath &path, Id language)
{ {
ToolChain *toolChain = ToolChainManager::toolChain([&path, language](const ToolChain *t) { Toolchain *toolChain = ToolChainManager::toolChain([&path, language](const Toolchain *t) {
return t->compilerCommand() == path && t->language() == language; return t->compilerCommand() == path && t->language() == language;
}); });
if (!toolChain) { if (!toolChain) {
@@ -421,10 +421,10 @@ static ToolChain *armGccToolChain(const FilePath &path, Id language)
== ProjectExplorer::Constants::GCC_TOOLCHAIN_TYPEID; == ProjectExplorer::Constants::GCC_TOOLCHAIN_TYPEID;
}); });
if (gccFactory) { if (gccFactory) {
const QList<ToolChain *> detected = gccFactory->detectForImport({path, language}); const QList<Toolchain *> detected = gccFactory->detectForImport({path, language});
if (!detected.isEmpty()) { if (!detected.isEmpty()) {
toolChain = detected.first(); toolChain = detected.first();
toolChain->setDetection(ToolChain::ManualDetection); toolChain->setDetection(Toolchain::ManualDetection);
toolChain->setDisplayName("Arm GCC"); toolChain->setDisplayName("Arm GCC");
ToolChainManager::registerToolChain(toolChain); ToolChainManager::registerToolChain(toolChain);
} }
@@ -434,9 +434,9 @@ static ToolChain *armGccToolChain(const FilePath &path, Id language)
return toolChain; return toolChain;
} }
static ToolChain *iarToolChain(const FilePath &path, Id language) static Toolchain *iarToolChain(const FilePath &path, Id language)
{ {
ToolChain *toolChain = ToolChainManager::toolChain([language](const ToolChain *t) { Toolchain *toolChain = ToolChainManager::toolChain([language](const Toolchain *t) {
return t->typeId() == BareMetal::Constants::IAREW_TOOLCHAIN_TYPEID return t->typeId() == BareMetal::Constants::IAREW_TOOLCHAIN_TYPEID
&& t->language() == language; && t->language() == language;
}); });
@@ -455,7 +455,7 @@ static ToolChain *iarToolChain(const FilePath &path, Id language)
for (auto tc : detected) { for (auto tc : detected) {
if (tc->language() == language) { if (tc->language() == language) {
toolChain = tc; toolChain = tc;
toolChain->setDetection(ToolChain::ManualDetection); toolChain->setDetection(Toolchain::ManualDetection);
toolChain->setDisplayName("IAREW"); toolChain->setDisplayName("IAREW");
ToolChainManager::registerToolChain(toolChain); ToolChainManager::registerToolChain(toolChain);
} }
@@ -466,7 +466,7 @@ static ToolChain *iarToolChain(const FilePath &path, Id language)
return toolChain; return toolChain;
} }
ToolChain *McuToolChainPackage::toolChain(Id language) const Toolchain *McuToolChainPackage::toolChain(Id language) const
{ {
switch (m_type) { switch (m_type) {
case ToolChainType::MSVC: case ToolChainType::MSVC:

View File

@@ -13,7 +13,7 @@
#include <QObject> #include <QObject>
namespace ProjectExplorer { namespace ProjectExplorer {
class ToolChain; class Toolchain;
} }
namespace Utils { namespace Utils {
@@ -116,12 +116,12 @@ public:
ToolChainType toolchainType() const; ToolChainType toolchainType() const;
bool isDesktopToolchain() const; bool isDesktopToolchain() const;
ProjectExplorer::ToolChain *toolChain(Utils::Id language) const; ProjectExplorer::Toolchain *toolChain(Utils::Id language) const;
QString toolChainName() const; QString toolChainName() const;
QVariant debuggerId() const; QVariant debuggerId() const;
static ProjectExplorer::ToolChain *msvcToolChain(Utils::Id language); static ProjectExplorer::Toolchain *msvcToolChain(Utils::Id language);
static ProjectExplorer::ToolChain *gccToolChain(Utils::Id language); static ProjectExplorer::Toolchain *gccToolChain(Utils::Id language);
private: private:
const ToolChainType m_type; const ToolChainType m_type;

View File

@@ -21,7 +21,7 @@ class InfoLabel;
namespace ProjectExplorer { namespace ProjectExplorer {
class Kit; class Kit;
class ToolChain; class Toolchain;
} // namespace ProjectExplorer } // namespace ProjectExplorer
namespace McuSupport { namespace McuSupport {

View File

@@ -184,7 +184,7 @@ McuToolChainPackagePtr createUnsupportedToolChainPackage(const SettingsHandler::
McuToolChainPackagePtr createMsvcToolChainPackage(const SettingsHandler::Ptr &settingsHandler, McuToolChainPackagePtr createMsvcToolChainPackage(const SettingsHandler::Ptr &settingsHandler,
const QStringList &versions) const QStringList &versions)
{ {
ToolChain *toolChain = McuToolChainPackage::msvcToolChain( Toolchain *toolChain = McuToolChainPackage::msvcToolChain(
ProjectExplorer::Constants::CXX_LANGUAGE_ID); ProjectExplorer::Constants::CXX_LANGUAGE_ID);
const FilePath detectionPath = FilePath("cl").withExecutableSuffix(); const FilePath detectionPath = FilePath("cl").withExecutableSuffix();
@@ -209,7 +209,7 @@ McuToolChainPackagePtr createMsvcToolChainPackage(const SettingsHandler::Ptr &se
McuToolChainPackagePtr createGccToolChainPackage(const SettingsHandler::Ptr &settingsHandler, McuToolChainPackagePtr createGccToolChainPackage(const SettingsHandler::Ptr &settingsHandler,
const QStringList &versions) const QStringList &versions)
{ {
ToolChain *toolChain = McuToolChainPackage::gccToolChain( Toolchain *toolChain = McuToolChainPackage::gccToolChain(
ProjectExplorer::Constants::CXX_LANGUAGE_ID); ProjectExplorer::Constants::CXX_LANGUAGE_ID);
const FilePath detectionPath = FilePath("bin/g++").withExecutableSuffix(); const FilePath detectionPath = FilePath("bin/g++").withExecutableSuffix();
@@ -328,8 +328,8 @@ McuToolChainPackagePtr createIarToolChainPackage(const SettingsHandler::Ptr &set
if (qtcEnvironmentVariableIsSet(envVar)) if (qtcEnvironmentVariableIsSet(envVar))
defaultPath = FilePath::fromUserInput(qtcEnvironmentVariable(envVar)); defaultPath = FilePath::fromUserInput(qtcEnvironmentVariable(envVar));
else { else {
const ProjectExplorer::ToolChain *tc = ProjectExplorer::ToolChainManager::toolChain( const ProjectExplorer::Toolchain *tc = ProjectExplorer::ToolChainManager::toolChain(
[](const ProjectExplorer::ToolChain *t) { [](const ProjectExplorer::Toolchain *t) {
return t->typeId() == BareMetal::Constants::IAREW_TOOLCHAIN_TYPEID; return t->typeId() == BareMetal::Constants::IAREW_TOOLCHAIN_TYPEID;
}); });
if (tc) { if (tc) {

View File

@@ -9,7 +9,7 @@
#include <QVersionNumber> #include <QVersionNumber>
namespace ProjectExplorer { namespace ProjectExplorer {
class ToolChain; class Toolchain;
} }
namespace Utils { namespace Utils {

View File

@@ -70,7 +70,7 @@ using Legacy::Constants::TOOLCHAIN_FILE_CMAKE_VARIABLE;
using CMakeProjectManager::CMakeConfigurationKitAspect; using CMakeProjectManager::CMakeConfigurationKitAspect;
using ProjectExplorer::Kit; using ProjectExplorer::Kit;
using ProjectExplorer::KitManager; using ProjectExplorer::KitManager;
using ProjectExplorer::ToolChain; using ProjectExplorer::Toolchain;
using ProjectExplorer::ToolChainManager; using ProjectExplorer::ToolChainManager;
using testing::_; using testing::_;
@@ -214,7 +214,7 @@ void verifyIarToolchain(const McuToolChainPackagePtr &iarToolchainPackage)
{ {
ProjectExplorer::ToolchainFactory toolchainFactory; ProjectExplorer::ToolchainFactory toolchainFactory;
Id iarId{BareMetal::Constants::IAREW_TOOLCHAIN_TYPEID}; Id iarId{BareMetal::Constants::IAREW_TOOLCHAIN_TYPEID};
ToolChain *iarToolchain{ProjectExplorer::ToolchainFactory::createToolChain(iarId)}; Toolchain *iarToolchain{ProjectExplorer::ToolchainFactory::createToolChain(iarId)};
iarToolchain->setLanguage(cxxLanguageId); iarToolchain->setLanguage(cxxLanguageId);
ToolChainManager::registerToolChain(iarToolchain); ToolChainManager::registerToolChain(iarToolchain);
@@ -229,7 +229,7 @@ void verifyIarToolchain(const McuToolChainPackagePtr &iarToolchainPackage)
iarToolchain = iarToolchainPackage->toolChain(cxxLanguageId); iarToolchain = iarToolchainPackage->toolChain(cxxLanguageId);
QVERIFY(iarToolchain != nullptr); QVERIFY(iarToolchain != nullptr);
QCOMPARE(iarToolchain->displayName(), "IAREW"); QCOMPARE(iarToolchain->displayName(), "IAREW");
QCOMPARE(iarToolchain->detection(), ToolChain::UninitializedDetection); QCOMPARE(iarToolchain->detection(), Toolchain::UninitializedDetection);
} }
void verifyArmGccToolchain(const McuToolChainPackagePtr &armGccPackage, const QStringList &versions) void verifyArmGccToolchain(const McuToolChainPackagePtr &armGccPackage, const QStringList &versions)
@@ -238,7 +238,7 @@ void verifyArmGccToolchain(const McuToolChainPackagePtr &armGccPackage, const QS
ProjectExplorer::ToolchainFactory toolchainFactory; ProjectExplorer::ToolchainFactory toolchainFactory;
Id armGccId{ProjectExplorer::Constants::GCC_TOOLCHAIN_TYPEID}; Id armGccId{ProjectExplorer::Constants::GCC_TOOLCHAIN_TYPEID};
ToolChain *armToolchain{ProjectExplorer::ToolchainFactory::createToolChain(armGccId)}; Toolchain *armToolchain{ProjectExplorer::ToolchainFactory::createToolChain(armGccId)};
armToolchain->setLanguage(cxxLanguageId); armToolchain->setLanguage(cxxLanguageId);
ToolChainManager::registerToolChain(armToolchain); ToolChainManager::registerToolChain(armToolchain);

View File

@@ -254,8 +254,8 @@ void MesonProjectParser::update(const QFuture<MesonProjectParser::ParserData *>
RawProjectPart MesonProjectParser::buildRawPart( RawProjectPart MesonProjectParser::buildRawPart(
const Target &target, const Target &target,
const Target::SourceGroup &sources, const Target::SourceGroup &sources,
const ToolChain *cxxToolChain, const Toolchain *cxxToolChain,
const ToolChain *cToolChain) const Toolchain *cToolChain)
{ {
RawProjectPart part; RawProjectPart part;
part.setDisplayName(target.name); part.setDisplayName(target.name);
@@ -274,7 +274,7 @@ RawProjectPart MesonProjectParser::buildRawPart(
} }
RawProjectParts MesonProjectParser::buildProjectParts( RawProjectParts MesonProjectParser::buildProjectParts(
const ToolChain *cxxToolChain, const ToolChain *cToolChain) const Toolchain *cxxToolChain, const Toolchain *cToolChain)
{ {
RawProjectParts parts; RawProjectParts parts;
for_each_source_group(m_parserResult.targets, for_each_source_group(m_parserResult.targets,

View File

@@ -57,8 +57,8 @@ public:
QList<ProjectExplorer::BuildTargetInfo> appsTargets() const; QList<ProjectExplorer::BuildTargetInfo> appsTargets() const;
ProjectExplorer::RawProjectParts buildProjectParts( ProjectExplorer::RawProjectParts buildProjectParts(
const ProjectExplorer::ToolChain *cxxToolChain, const ProjectExplorer::Toolchain *cxxToolChain,
const ProjectExplorer::ToolChain *cToolChain); const ProjectExplorer::Toolchain *cToolChain);
void setEnvironment(const Utils::Environment &environment) { m_env = environment; } void setEnvironment(const Utils::Environment &environment) { m_env = environment; }
@@ -78,8 +78,8 @@ private:
void update(const QFuture<ParserData *> &data); void update(const QFuture<ParserData *> &data);
ProjectExplorer::RawProjectPart buildRawPart(const Target &target, ProjectExplorer::RawProjectPart buildRawPart(const Target &target,
const Target::SourceGroup &sources, const Target::SourceGroup &sources,
const ProjectExplorer::ToolChain *cxxToolChain, const ProjectExplorer::Toolchain *cxxToolChain,
const ProjectExplorer::ToolChain *cToolChain); const ProjectExplorer::Toolchain *cToolChain);
MesonOutputParser m_outputParser; MesonOutputParser m_outputParser;
Utils::Environment m_env; Utils::Environment m_env;

View File

@@ -32,7 +32,7 @@ NimToolChain::NimToolChain()
{} {}
NimToolChain::NimToolChain(Utils::Id typeId) NimToolChain::NimToolChain(Utils::Id typeId)
: ToolChain(typeId) : Toolchain(typeId)
, m_version(std::make_tuple(-1,-1,-1)) , m_version(std::make_tuple(-1,-1,-1))
{ {
setLanguage(Constants::C_NIMLANGUAGE_ID); setLanguage(Constants::C_NIMLANGUAGE_ID);
@@ -41,9 +41,9 @@ NimToolChain::NimToolChain(Utils::Id typeId)
setCompilerCommandKey("Nim.NimToolChain.CompilerCommand"); setCompilerCommandKey("Nim.NimToolChain.CompilerCommand");
} }
ToolChain::MacroInspectionRunner NimToolChain::createMacroInspectionRunner() const Toolchain::MacroInspectionRunner NimToolChain::createMacroInspectionRunner() const
{ {
return ToolChain::MacroInspectionRunner(); return Toolchain::MacroInspectionRunner();
} }
LanguageExtensions NimToolChain::languageExtensions(const QStringList &) const LanguageExtensions NimToolChain::languageExtensions(const QStringList &) const
@@ -56,10 +56,10 @@ WarningFlags NimToolChain::warningFlags(const QStringList &) const
return WarningFlags::NoWarnings; return WarningFlags::NoWarnings;
} }
ToolChain::BuiltInHeaderPathsRunner NimToolChain::createBuiltInHeaderPathsRunner( Toolchain::BuiltInHeaderPathsRunner NimToolChain::createBuiltInHeaderPathsRunner(
const Environment &) const const Environment &) const
{ {
return ToolChain::BuiltInHeaderPathsRunner(); return Toolchain::BuiltInHeaderPathsRunner();
} }
void NimToolChain::addToEnvironment(Environment &env) const void NimToolChain::addToEnvironment(Environment &env) const
@@ -91,7 +91,7 @@ QString NimToolChain::compilerVersion() const
void NimToolChain::fromMap(const Store &data) void NimToolChain::fromMap(const Store &data)
{ {
ToolChain::fromMap(data); Toolchain::fromMap(data);
if (hasError()) if (hasError())
return; return;
parseVersion(compilerCommand(), m_version); parseVersion(compilerCommand(), m_version);
@@ -220,7 +220,7 @@ Toolchains NimToolchainFactory::autoDetect(const ToolchainDetector &detector) co
if (compilerPath.isEmpty()) if (compilerPath.isEmpty())
return result; return result;
result = Utils::filtered(detector.alreadyKnown, [compilerPath](ToolChain *tc) { result = Utils::filtered(detector.alreadyKnown, [compilerPath](Toolchain *tc) {
return tc->typeId() == Constants::C_NIMTOOLCHAIN_TYPEID return tc->typeId() == Constants::C_NIMTOOLCHAIN_TYPEID
&& tc->compilerCommand() == compilerPath; && tc->compilerCommand() == compilerPath;
}); });
@@ -229,7 +229,7 @@ Toolchains NimToolchainFactory::autoDetect(const ToolchainDetector &detector) co
return result; return result;
auto tc = new NimToolChain; auto tc = new NimToolChain;
tc->setDetection(ToolChain::AutoDetection); tc->setDetection(Toolchain::AutoDetection);
tc->setCompilerCommand(compilerPath); tc->setCompilerCommand(compilerPath);
result.append(tc); result.append(tc);
return result; return result;
@@ -240,7 +240,7 @@ Toolchains NimToolchainFactory::detectForImport(const ToolChainDescription &tcd)
Toolchains result; Toolchains result;
if (tcd.language == Constants::C_NIMLANGUAGE_ID) { if (tcd.language == Constants::C_NIMLANGUAGE_ID) {
auto tc = new NimToolChain; auto tc = new NimToolChain;
tc->setDetection(ToolChain::ManualDetection); // FIXME: sure? tc->setDetection(Toolchain::ManualDetection); // FIXME: sure?
tc->setCompilerCommand(tcd.compilerPath); tc->setCompilerCommand(tcd.compilerPath);
result.append(tc); result.append(tc);
} }

View File

@@ -8,7 +8,7 @@
namespace Nim { namespace Nim {
class NimToolChain : public ProjectExplorer::ToolChain class NimToolChain : public ProjectExplorer::Toolchain
{ {
public: public:
NimToolChain(); NimToolChain();

View File

@@ -44,11 +44,11 @@ const char outputParserKeyC[] = "ProjectExplorer.CustomToolChain.OutputParser";
// CustomToolChain // CustomToolChain
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
class CustomToolChain : public ToolChain class CustomToolChain : public Toolchain
{ {
public: public:
CustomToolChain() CustomToolChain()
: ToolChain(Constants::CUSTOM_TOOLCHAIN_TYPEID) : Toolchain(Constants::CUSTOM_TOOLCHAIN_TYPEID)
, m_outputParserId(GccParser::id()) , m_outputParserId(GccParser::id())
{ {
setTypeDisplayName(Tr::tr("Custom")); setTypeDisplayName(Tr::tr("Custom"));
@@ -82,7 +82,7 @@ public:
std::unique_ptr<ToolchainConfigWidget> createConfigurationWidget() override; std::unique_ptr<ToolchainConfigWidget> createConfigurationWidget() override;
bool operator ==(const ToolChain &) const override; bool operator ==(const Toolchain &) const override;
void setMakeCommand(const FilePath &); void setMakeCommand(const FilePath &);
FilePath makeCommand(const Environment &environment) const override; FilePath makeCommand(const Environment &environment) const override;
@@ -123,7 +123,7 @@ bool CustomToolChain::isValid() const
return true; return true;
} }
ToolChain::MacroInspectionRunner CustomToolChain::createMacroInspectionRunner() const Toolchain::MacroInspectionRunner CustomToolChain::createMacroInspectionRunner() const
{ {
const Macros theMacros = m_predefinedMacros; const Macros theMacros = m_predefinedMacros;
const Id lang = language(); const Id lang = language();
@@ -138,7 +138,7 @@ ToolChain::MacroInspectionRunner CustomToolChain::createMacroInspectionRunner()
macros.append({cxxFlag.mid(2).trimmed().toUtf8(), MacroType::Undefine}); macros.append({cxxFlag.mid(2).trimmed().toUtf8(), MacroType::Undefine});
} }
return MacroInspectionReport{macros, ToolChain::languageVersion(lang, macros)}; return MacroInspectionReport{macros, Toolchain::languageVersion(lang, macros)};
}; };
} }
@@ -166,7 +166,7 @@ void CustomToolChain::setPredefinedMacros(const Macros &macros)
toolChainUpdated(); toolChainUpdated();
} }
ToolChain::BuiltInHeaderPathsRunner CustomToolChain::createBuiltInHeaderPathsRunner( Toolchain::BuiltInHeaderPathsRunner CustomToolChain::createBuiltInHeaderPathsRunner(
const Environment &) const const Environment &) const
{ {
const HeaderPaths builtInHeaderPaths = m_builtInHeaderPaths; const HeaderPaths builtInHeaderPaths = m_builtInHeaderPaths;
@@ -273,7 +273,7 @@ QString CustomToolChain::mkspecs() const
void CustomToolChain::toMap(Store &data) const void CustomToolChain::toMap(Store &data) const
{ {
ToolChain::toMap(data); Toolchain::toMap(data);
data.insert(makeCommandKeyC, m_makeCommand.toString()); data.insert(makeCommandKeyC, m_makeCommand.toString());
QStringList macros = Utils::transform<QList>(m_predefinedMacros, [](const Macro &m) { return QString::fromUtf8(m.toByteArray()); }); QStringList macros = Utils::transform<QList>(m_predefinedMacros, [](const Macro &m) { return QString::fromUtf8(m.toByteArray()); });
data.insert(predefinedMacrosKeyC, macros); data.insert(predefinedMacrosKeyC, macros);
@@ -285,7 +285,7 @@ void CustomToolChain::toMap(Store &data) const
void CustomToolChain::fromMap(const Store &data) void CustomToolChain::fromMap(const Store &data)
{ {
ToolChain::fromMap(data); Toolchain::fromMap(data);
if (hasError()) if (hasError())
return; return;
@@ -298,9 +298,9 @@ void CustomToolChain::fromMap(const Store &data)
setOutputParserId(Id::fromSetting(data.value(outputParserKeyC))); setOutputParserId(Id::fromSetting(data.value(outputParserKeyC)));
} }
bool CustomToolChain::operator ==(const ToolChain &other) const bool CustomToolChain::operator ==(const Toolchain &other) const
{ {
if (!ToolChain::operator ==(other)) if (!Toolchain::operator ==(other))
return false; return false;
auto customTc = static_cast<const CustomToolChain *>(&other); auto customTc = static_cast<const CustomToolChain *>(&other);

View File

@@ -363,7 +363,7 @@ static Id idForSubType(GccToolChain::SubType subType)
} }
GccToolChain::GccToolChain(Id typeId, SubType subType) GccToolChain::GccToolChain(Id typeId, SubType subType)
: ToolChain(typeId.isValid() ? typeId : idForSubType(subType)), m_subType(subType) : Toolchain(typeId.isValid() ? typeId : idForSubType(subType)), m_subType(subType)
{ {
setTypeDisplayName(Tr::tr("GCC")); setTypeDisplayName(Tr::tr("GCC"));
setTargetAbiKey(targetAbiKeyC); setTargetAbiKey(targetAbiKeyC);
@@ -437,7 +437,7 @@ LanguageExtensions GccToolChain::defaultLanguageExtensions() const
static const Toolchains mingwToolChains() static const Toolchains mingwToolChains()
{ {
return ToolChainManager::toolchains([](const ToolChain *tc) -> bool { return ToolChainManager::toolchains([](const Toolchain *tc) -> bool {
return tc->typeId() == Constants::MINGW_TOOLCHAIN_TYPEID; return tc->typeId() == Constants::MINGW_TOOLCHAIN_TYPEID;
}); });
} }
@@ -447,7 +447,7 @@ static const GccToolChain *mingwToolChainFromId(const QByteArray &id)
if (id.isEmpty()) if (id.isEmpty())
return nullptr; return nullptr;
for (const ToolChain *tc : mingwToolChains()) { for (const Toolchain *tc : mingwToolChains()) {
if (tc->id() == id) if (tc->id() == id)
return static_cast<const GccToolChain *>(tc); return static_cast<const GccToolChain *>(tc);
} }
@@ -546,7 +546,7 @@ static QStringList filteredFlags(const QStringList &allFlags, bool considerSysro
return filtered; return filtered;
} }
ToolChain::MacroInspectionRunner GccToolChain::createMacroInspectionRunner() const Toolchain::MacroInspectionRunner GccToolChain::createMacroInspectionRunner() const
{ {
// Using a clean environment breaks ccache/distcc/etc. // Using a clean environment breaks ccache/distcc/etc.
Environment env = compilerCommand().deviceEnvironment(); Environment env = compilerCommand().deviceEnvironment();
@@ -702,7 +702,7 @@ WarningFlags GccToolChain::warningFlags(const QStringList &cflags) const
FilePaths GccToolChain::includedFiles(const QStringList &flags, const FilePath &directoryPath) const FilePaths GccToolChain::includedFiles(const QStringList &flags, const FilePath &directoryPath) const
{ {
return ToolChain::includedFiles("-include", flags, directoryPath, PossiblyConcatenatedFlag::No); return Toolchain::includedFiles("-include", flags, directoryPath, PossiblyConcatenatedFlag::No);
} }
static QStringList gccPrepareArguments(const QStringList &flags, static QStringList gccPrepareArguments(const QStringList &flags,
@@ -770,7 +770,7 @@ HeaderPaths GccToolChain::builtInHeaderPaths(const Environment &env,
return paths; return paths;
} }
ToolChain::BuiltInHeaderPathsRunner GccToolChain::createBuiltInHeaderPathsRunner( Toolchain::BuiltInHeaderPathsRunner GccToolChain::createBuiltInHeaderPathsRunner(
const Environment &env) const const Environment &env) const
{ {
// Using a clean environment breaks ccache/distcc/etc. // Using a clean environment breaks ccache/distcc/etc.
@@ -866,7 +866,7 @@ QStringList GccToolChain::suggestedMkspecList() const
} }
if (m_subType == Clang) { if (m_subType == Clang) {
if (const ToolChain * const parentTc = ToolChainManager::findToolChain(m_parentToolChainId)) if (const Toolchain * const parentTc = ToolChainManager::findToolChain(m_parentToolChainId))
return parentTc->suggestedMkspecList(); return parentTc->suggestedMkspecList();
const Abi abi = targetAbi(); const Abi abi = targetAbi();
if (abi.os() == Abi::DarwinOS) if (abi.os() == Abi::DarwinOS)
@@ -1014,7 +1014,7 @@ QStringList GccToolChain::platformLinkerFlags() const
void GccToolChain::toMap(Store &data) const void GccToolChain::toMap(Store &data) const
{ {
ToolChain::toMap(data); Toolchain::toMap(data);
data.insert(compilerPlatformCodeGenFlagsKeyC, m_platformCodeGenFlags); data.insert(compilerPlatformCodeGenFlagsKeyC, m_platformCodeGenFlags);
data.insert(compilerPlatformLinkerFlagsKeyC, m_platformLinkerFlags); data.insert(compilerPlatformLinkerFlagsKeyC, m_platformLinkerFlags);
data.insert(originalTargetTripleKeyC, m_originalTargetTriple); data.insert(originalTargetTripleKeyC, m_originalTargetTriple);
@@ -1028,7 +1028,7 @@ void GccToolChain::toMap(Store &data) const
void GccToolChain::fromMap(const Store &data) void GccToolChain::fromMap(const Store &data)
{ {
ToolChain::fromMap(data); Toolchain::fromMap(data);
if (hasError()) if (hasError())
return; return;
@@ -1051,9 +1051,9 @@ void GccToolChain::fromMap(const Store &data)
} }
} }
bool GccToolChain::operator ==(const ToolChain &other) const bool GccToolChain::operator ==(const Toolchain &other) const
{ {
if (!ToolChain::operator ==(other)) if (!Toolchain::operator ==(other))
return false; return false;
auto gccTc = static_cast<const GccToolChain *>(&other); auto gccTc = static_cast<const GccToolChain *>(&other);
@@ -1254,22 +1254,22 @@ static Utils::FilePaths renesasRl78SearchPathsFromRegistry()
return searchPaths; return searchPaths;
} }
static ToolChain *constructRealGccToolchain() static Toolchain *constructRealGccToolchain()
{ {
return new GccToolChain(Constants::GCC_TOOLCHAIN_TYPEID, GccToolChain::RealGcc); return new GccToolChain(Constants::GCC_TOOLCHAIN_TYPEID, GccToolChain::RealGcc);
} }
static ToolChain *constructClangToolchain() static Toolchain *constructClangToolchain()
{ {
return new GccToolChain(Constants::CLANG_TOOLCHAIN_TYPEID, GccToolChain::Clang); return new GccToolChain(Constants::CLANG_TOOLCHAIN_TYPEID, GccToolChain::Clang);
} }
static ToolChain *constructMinGWToolchain() static Toolchain *constructMinGWToolchain()
{ {
return new GccToolChain(Constants::MINGW_TOOLCHAIN_TYPEID, GccToolChain::MinGW); return new GccToolChain(Constants::MINGW_TOOLCHAIN_TYPEID, GccToolChain::MinGW);
} }
static ToolChain *constructLinuxIccToolchain() static Toolchain *constructLinuxIccToolchain()
{ {
return new GccToolChain(Constants::LINUXICC_TOOLCHAIN_TYPEID, GccToolChain::LinuxIcc); return new GccToolChain(Constants::LINUXICC_TOOLCHAIN_TYPEID, GccToolChain::LinuxIcc);
} }
@@ -1557,7 +1557,7 @@ Toolchains GccToolchainFactory::autoDetectSdkClangToolchain(const Toolchains &kn
if (compilerPath.isEmpty()) if (compilerPath.isEmpty())
return {}; return {};
for (ToolChain * const existingTc : known) { for (Toolchain * const existingTc : known) {
if (existingTc->compilerCommand() == compilerPath) if (existingTc->compilerCommand() == compilerPath)
return {existingTc}; return {existingTc};
} }
@@ -1572,12 +1572,12 @@ Toolchains GccToolchainFactory::autoDetectToolchains(const FilePaths &compilerPa
const GccToolChain::SubType subType) const GccToolChain::SubType subType)
{ {
Toolchains existingCandidates = filtered(known, Toolchains existingCandidates = filtered(known,
[language](const ToolChain *tc) { return tc->language() == language; }); [language](const Toolchain *tc) { return tc->language() == language; });
Toolchains result; Toolchains result;
for (const FilePath &compilerPath : std::as_const(compilerPaths)) { for (const FilePath &compilerPath : std::as_const(compilerPaths)) {
bool alreadyExists = false; bool alreadyExists = false;
for (ToolChain * const existingTc : existingCandidates) { for (Toolchain * const existingTc : existingCandidates) {
// We have a match if the existing toolchain ultimately refers to the same file // We have a match if the existing toolchain ultimately refers to the same file
// as the candidate path, either directly or via a hard or soft link. // as the candidate path, either directly or via a hard or soft link.
// Exceptions: // Exceptions:
@@ -1644,11 +1644,11 @@ Toolchains GccToolchainFactory::autoDetectToolChain(const ToolChainDescription &
auto tc = new GccToolChain({}, detectedSubType); auto tc = new GccToolChain({}, detectedSubType);
tc->setLanguage(tcd.language); tc->setLanguage(tcd.language);
tc->setDetection(ToolChain::AutoDetection); tc->setDetection(Toolchain::AutoDetection);
tc->predefinedMacrosCache() tc->predefinedMacrosCache()
->insert(QStringList(), ->insert(QStringList(),
ToolChain::MacroInspectionReport{macros, Toolchain::MacroInspectionReport{macros,
ToolChain::languageVersion(tcd.language, macros)}); Toolchain::languageVersion(tcd.language, macros)});
tc->setCompilerCommand(tcd.compilerPath); tc->setCompilerCommand(tcd.compilerPath);
tc->setSupportedAbis(detectedAbis.supportedAbis); tc->setSupportedAbis(detectedAbis.supportedAbis);
tc->setTargetAbi(abi); tc->setTargetAbi(abi);
@@ -1656,7 +1656,7 @@ Toolchains GccToolchainFactory::autoDetectToolChain(const ToolChainDescription &
tc->setDisplayName(tc->defaultDisplayName()); // reset displayname tc->setDisplayName(tc->defaultDisplayName()); // reset displayname
// lower priority of g++/gcc on macOS - usually just a frontend to clang // lower priority of g++/gcc on macOS - usually just a frontend to clang
if (detectedSubType == GccToolChain::RealGcc && abi.binaryFormat() == Abi::MachOFormat) if (detectedSubType == GccToolChain::RealGcc && abi.binaryFormat() == Abi::MachOFormat)
tc->setPriority(ToolChain::PriorityLow); tc->setPriority(Toolchain::PriorityLow);
result.append(tc); result.append(tc);
} }
return result; return result;
@@ -1671,7 +1671,7 @@ class TargetTripleWidget : public QWidget
Q_OBJECT Q_OBJECT
public: public:
TargetTripleWidget(const ToolChain *toolchain) TargetTripleWidget(const Toolchain *toolchain)
{ {
const auto layout = new QHBoxLayout(this); const auto layout = new QHBoxLayout(this);
layout->setContentsMargins(0, 0, 0, 0); layout->setContentsMargins(0, 0, 0, 0);
@@ -1759,17 +1759,17 @@ GccToolChainConfigWidget::GccToolChainConfigWidget(GccToolChain *tc) :
ToolChainManager *tcManager = ToolChainManager::instance(); ToolChainManager *tcManager = ToolChainManager::instance();
m_parentToolChainConnections.append( m_parentToolChainConnections.append(
connect(tcManager, &ToolChainManager::toolChainUpdated, this, [this](ToolChain *tc) { connect(tcManager, &ToolChainManager::toolChainUpdated, this, [this](Toolchain *tc) {
if (tc->typeId() == Constants::MINGW_TOOLCHAIN_TYPEID) if (tc->typeId() == Constants::MINGW_TOOLCHAIN_TYPEID)
updateParentToolChainComboBox(); updateParentToolChainComboBox();
})); }));
m_parentToolChainConnections.append( m_parentToolChainConnections.append(
connect(tcManager, &ToolChainManager::toolChainAdded, this, [this](ToolChain *tc) { connect(tcManager, &ToolChainManager::toolChainAdded, this, [this](Toolchain *tc) {
if (tc->typeId() == Constants::MINGW_TOOLCHAIN_TYPEID) if (tc->typeId() == Constants::MINGW_TOOLCHAIN_TYPEID)
updateParentToolChainComboBox(); updateParentToolChainComboBox();
})); }));
m_parentToolChainConnections.append( m_parentToolChainConnections.append(
connect(tcManager, &ToolChainManager::toolChainRemoved, this, [this](ToolChain *tc) { connect(tcManager, &ToolChainManager::toolChainRemoved, this, [this](Toolchain *tc) {
if (tc->id() == toolChain()->id()) { if (tc->id() == toolChain()->id()) {
for (QMetaObject::Connection &connection : m_parentToolChainConnections) for (QMetaObject::Connection &connection : m_parentToolChainConnections)
QObject::disconnect(connection); QObject::disconnect(connection);
@@ -1808,8 +1808,8 @@ void GccToolChainConfigWidget::applyImpl()
tc->predefinedMacrosCache() tc->predefinedMacrosCache()
->insert(tc->platformCodeGenFlags(), ->insert(tc->platformCodeGenFlags(),
ToolChain::MacroInspectionReport{m_macros, Toolchain::MacroInspectionReport{m_macros,
ToolChain::languageVersion(tc->language(), Toolchain::languageVersion(tc->language(),
m_macros)}); m_macros)});
if (m_subType == GccToolChain::Clang && m_parentToolchainCombo) { if (m_subType == GccToolChain::Clang && m_parentToolchainCombo) {
@@ -1818,7 +1818,7 @@ void GccToolChainConfigWidget::applyImpl()
const QByteArray parentId = m_parentToolchainCombo->currentData().toByteArray(); const QByteArray parentId = m_parentToolchainCombo->currentData().toByteArray();
if (!parentId.isEmpty()) { if (!parentId.isEmpty()) {
for (const ToolChain *mingwTC : mingwToolChains()) { for (const Toolchain *mingwTC : mingwToolChains()) {
if (parentId == mingwTC->id()) { if (parentId == mingwTC->id()) {
tc->m_parentToolChainId = mingwTC->id(); tc->m_parentToolChainId = mingwTC->id();
tc->setTargetAbi(mingwTC->targetAbi()); tc->setTargetAbi(mingwTC->targetAbi());
@@ -1959,7 +1959,7 @@ void GccToolChain::syncAutodetectedWithParentToolchains()
if (!ToolChainManager::isLoaded()) { if (!ToolChainManager::isLoaded()) {
connect(ToolChainManager::instance(), &ToolChainManager::toolChainsLoaded, this, connect(ToolChainManager::instance(), &ToolChainManager::toolChainsLoaded, this,
[id = id()] { [id = id()] {
if (ToolChain * const tc = ToolChainManager::findToolChain(id)) { if (Toolchain * const tc = ToolChainManager::findToolChain(id)) {
if (tc->typeId() == Constants::CLANG_TOOLCHAIN_TYPEID) if (tc->typeId() == Constants::CLANG_TOOLCHAIN_TYPEID)
static_cast<GccToolChain *>(tc)->syncAutodetectedWithParentToolchains(); static_cast<GccToolChain *>(tc)->syncAutodetectedWithParentToolchains();
} }
@@ -1975,14 +1975,14 @@ void GccToolChain::syncAutodetectedWithParentToolchains()
// Subscribe only autodetected toolchains. // Subscribe only autodetected toolchains.
ToolChainManager *tcManager = ToolChainManager::instance(); ToolChainManager *tcManager = ToolChainManager::instance();
m_mingwToolchainAddedConnection m_mingwToolchainAddedConnection
= connect(tcManager, &ToolChainManager::toolChainAdded, this, [this](ToolChain *tc) { = connect(tcManager, &ToolChainManager::toolChainAdded, this, [this](Toolchain *tc) {
if (tc->typeId() == Constants::MINGW_TOOLCHAIN_TYPEID if (tc->typeId() == Constants::MINGW_TOOLCHAIN_TYPEID
&& !mingwToolChainFromId(m_parentToolChainId)) { && !mingwToolChainFromId(m_parentToolChainId)) {
m_parentToolChainId = tc->id(); m_parentToolChainId = tc->id();
} }
}); });
m_thisToolchainRemovedConnection m_thisToolchainRemovedConnection
= connect(tcManager, &ToolChainManager::toolChainRemoved, this, [this](ToolChain *tc) { = connect(tcManager, &ToolChainManager::toolChainRemoved, this, [this](Toolchain *tc) {
if (tc == this) { if (tc == this) {
QObject::disconnect(m_thisToolchainRemovedConnection); QObject::disconnect(m_thisToolchainRemovedConnection);
QObject::disconnect(m_mingwToolchainAddedConnection); QObject::disconnect(m_mingwToolchainAddedConnection);
@@ -2012,7 +2012,7 @@ bool GccToolChain::matchesCompilerCommand(const FilePath &command) const
&& m_resolvedCompilerCommand->isSameExecutable(command)) && m_resolvedCompilerCommand->isSameExecutable(command))
return true; return true;
} }
return ToolChain::matchesCompilerCommand(command); return Toolchain::matchesCompilerCommand(command);
} }
QString GccToolChain::sysRoot() const QString GccToolChain::sysRoot() const
@@ -2044,7 +2044,7 @@ void GccToolChainConfigWidget::updateParentToolChainComboBox()
if (tc->isAutoDetected()) if (tc->isAutoDetected())
return; return;
for (const ToolChain *mingwTC : mingwToolChains()) { for (const Toolchain *mingwTC : mingwToolChains()) {
if (mingwTC->id() == parentId) if (mingwTC->id() == parentId)
continue; continue;
if (mingwTC->language() != tc->language()) if (mingwTC->language() != tc->language())

View File

@@ -26,7 +26,7 @@ const QStringList gccPredefinedMacrosOptions(Utils::Id languageId);
// GccToolChain // GccToolChain
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
class PROJECTEXPLORER_EXPORT GccToolChain : public ToolChain class PROJECTEXPLORER_EXPORT GccToolChain : public Toolchain
{ {
public: public:
enum SubType { RealGcc, Clang, MinGW, LinuxIcc }; enum SubType { RealGcc, Clang, MinGW, LinuxIcc };
@@ -57,7 +57,7 @@ public:
std::unique_ptr<ToolchainConfigWidget> createConfigurationWidget() override; std::unique_ptr<ToolchainConfigWidget> createConfigurationWidget() override;
bool operator ==(const ToolChain &) const override; bool operator ==(const Toolchain &) const override;
void resetToolChain(const Utils::FilePath &); void resetToolChain(const Utils::FilePath &);
void setPlatformCodeGenFlags(const QStringList &); void setPlatformCodeGenFlags(const QStringList &);

View File

@@ -160,7 +160,7 @@ FilePath SysRootKitAspect::sysRoot(const Kit *k)
if (!k->value(SysRootKitAspect::id()).toString().isEmpty()) if (!k->value(SysRootKitAspect::id()).toString().isEmpty())
return FilePath::fromSettings(k->value(SysRootKitAspect::id())); return FilePath::fromSettings(k->value(SysRootKitAspect::id()));
for (ToolChain *tc : ToolChainKitAspect::toolChains(k)) { for (Toolchain *tc : ToolChainKitAspect::toolChains(k)) {
if (!tc->sysRoot().isEmpty()) if (!tc->sysRoot().isEmpty())
return FilePath::fromString(tc->sysRoot()); return FilePath::fromString(tc->sysRoot());
} }
@@ -172,7 +172,7 @@ void SysRootKitAspect::setSysRoot(Kit *k, const FilePath &v)
if (!k) if (!k)
return; return;
for (ToolChain *tc : ToolChainKitAspect::toolChains(k)) { for (Toolchain *tc : ToolChainKitAspect::toolChains(k)) {
if (!tc->sysRoot().isEmpty()) { if (!tc->sysRoot().isEmpty()) {
// It's the sysroot from toolchain, don't set it. // It's the sysroot from toolchain, don't set it.
if (tc->sysRoot() == v.toString()) if (tc->sysRoot() == v.toString())
@@ -249,26 +249,26 @@ private:
const GuardLocker locker(m_ignoreChanges); const GuardLocker locker(m_ignoreChanges);
const QList<Id> keys = m_languageComboboxMap.keys(); const QList<Id> keys = m_languageComboboxMap.keys();
for (const Id l : keys) { for (const Id l : keys) {
const Toolchains ltcList = ToolChainManager::toolchains(equal(&ToolChain::language, l)); const Toolchains ltcList = ToolChainManager::toolchains(equal(&Toolchain::language, l));
QComboBox *cb = m_languageComboboxMap.value(l); QComboBox *cb = m_languageComboboxMap.value(l);
cb->clear(); cb->clear();
cb->addItem(Tr::tr("<No compiler>"), QByteArray()); cb->addItem(Tr::tr("<No compiler>"), QByteArray());
const QList<ToolChain *> same = Utils::filtered(ltcList, [device](ToolChain *tc) { const QList<Toolchain *> same = Utils::filtered(ltcList, [device](Toolchain *tc) {
return tc->compilerCommand().isSameDevice(device->rootPath()); return tc->compilerCommand().isSameDevice(device->rootPath());
}); });
const QList<ToolChain *> other = Utils::filtered(ltcList, [device](ToolChain *tc) { const QList<Toolchain *> other = Utils::filtered(ltcList, [device](Toolchain *tc) {
return !tc->compilerCommand().isSameDevice(device->rootPath()); return !tc->compilerCommand().isSameDevice(device->rootPath());
}); });
for (ToolChain *item : same) for (Toolchain *item : same)
cb->addItem(item->displayName(), item->id()); cb->addItem(item->displayName(), item->id());
if (!same.isEmpty() && !other.isEmpty()) if (!same.isEmpty() && !other.isEmpty())
cb->insertSeparator(cb->count()); cb->insertSeparator(cb->count());
for (ToolChain *item : other) for (Toolchain *item : other)
cb->addItem(item->displayName(), item->id()); cb->addItem(item->displayName(), item->id());
cb->setEnabled(cb->count() > 1 && !m_isReadOnly); cb->setEnabled(cb->count() > 1 && !m_isReadOnly);
@@ -292,7 +292,7 @@ private:
return; return;
const QByteArray id = m_languageComboboxMap.value(language)->itemData(idx).toByteArray(); const QByteArray id = m_languageComboboxMap.value(language)->itemData(idx).toByteArray();
ToolChain *tc = ToolChainManager::findToolChain(id); Toolchain *tc = ToolChainManager::findToolChain(id);
QTC_ASSERT(!tc || tc->language() == language, return); QTC_ASSERT(!tc || tc->language() == language, return);
if (tc) if (tc)
ToolChainKitAspect::setToolChain(m_kit, tc); ToolChainKitAspect::setToolChain(m_kit, tc);
@@ -300,7 +300,7 @@ private:
ToolChainKitAspect::clearToolChain(m_kit, language); ToolChainKitAspect::clearToolChain(m_kit, language);
} }
int indexOf(QComboBox *cb, const ToolChain *tc) int indexOf(QComboBox *cb, const Toolchain *tc)
{ {
const QByteArray id = tc ? tc->id() : QByteArray(); const QByteArray id = tc ? tc->id() : QByteArray();
for (int i = 0; i < cb->count(); ++i) { for (int i = 0; i < cb->count(); ++i) {
@@ -342,8 +342,8 @@ private:
void onKitsLoaded() override; void onKitsLoaded() override;
void toolChainUpdated(ToolChain *tc); void toolChainUpdated(Toolchain *tc);
void toolChainRemoved(ToolChain *tc); void toolChainRemoved(Toolchain *tc);
}; };
ToolChainKitAspectFactory::ToolChainKitAspectFactory() ToolChainKitAspectFactory::ToolChainKitAspectFactory()
@@ -361,10 +361,10 @@ static QMap<Id, QByteArray> defaultToolChainIds()
{ {
QMap<Id, QByteArray> toolChains; QMap<Id, QByteArray> toolChains;
const Abi abi = Abi::hostAbi(); const Abi abi = Abi::hostAbi();
const Toolchains tcList = ToolChainManager::toolchains(equal(&ToolChain::targetAbi, abi)); const Toolchains tcList = ToolChainManager::toolchains(equal(&Toolchain::targetAbi, abi));
const QList<Id> languages = ToolChainManager::allLanguages(); const QList<Id> languages = ToolChainManager::allLanguages();
for (Id l : languages) { for (Id l : languages) {
ToolChain *tc = findOrDefault(tcList, equal(&ToolChain::language, l)); Toolchain *tc = findOrDefault(tcList, equal(&Toolchain::language, l));
toolChains.insert(l, tc ? tc->id() : QByteArray()); toolChains.insert(l, tc ? tc->id() : QByteArray());
} }
return toolChains; return toolChains;
@@ -384,12 +384,12 @@ Tasks ToolChainKitAspectFactory::validate(const Kit *k) const
{ {
Tasks result; Tasks result;
const QList<ToolChain*> tcList = ToolChainKitAspect::toolChains(k); const QList<Toolchain*> tcList = ToolChainKitAspect::toolChains(k);
if (tcList.isEmpty()) { if (tcList.isEmpty()) {
result << BuildSystemTask(Task::Warning, ToolChainKitAspect::msgNoToolChainInTarget()); result << BuildSystemTask(Task::Warning, ToolChainKitAspect::msgNoToolChainInTarget());
} else { } else {
QSet<Abi> targetAbis; QSet<Abi> targetAbis;
for (const ToolChain *tc : tcList) { for (const Toolchain *tc : tcList) {
targetAbis.insert(tc->targetAbi()); targetAbis.insert(tc->targetAbi());
result << tc->validateKit(k); result << tc->validateKit(k);
} }
@@ -443,18 +443,18 @@ void ToolChainKitAspectFactory::setup(Kit *k)
} }
const QByteArray id = i.value().toByteArray(); const QByteArray id = i.value().toByteArray();
ToolChain *tc = ToolChainManager::findToolChain(id); Toolchain *tc = ToolChainManager::findToolChain(id);
if (tc) if (tc)
continue; continue;
// ID is not found: Might be an ABI string... // ID is not found: Might be an ABI string...
lockToolchains = false; lockToolchains = false;
const QString abi = QString::fromUtf8(id); const QString abi = QString::fromUtf8(id);
const Toolchains possibleTcs = ToolChainManager::toolchains([abi, l](const ToolChain *t) { const Toolchains possibleTcs = ToolChainManager::toolchains([abi, l](const Toolchain *t) {
return t->targetAbi().toString() == abi && t->language() == l; return t->targetAbi().toString() == abi && t->language() == l;
}); });
ToolChain *bestTc = nullptr; Toolchain *bestTc = nullptr;
for (ToolChain *tc : possibleTcs) { for (Toolchain *tc : possibleTcs) {
if (!bestTc || tc->priority() > bestTc->priority()) if (!bestTc || tc->priority() > bestTc->priority())
bestTc = tc; bestTc = tc;
} }
@@ -475,19 +475,19 @@ KitAspect *ToolChainKitAspectFactory::createKitAspect(Kit *k) const
QString ToolChainKitAspectFactory::displayNamePostfix(const Kit *k) const QString ToolChainKitAspectFactory::displayNamePostfix(const Kit *k) const
{ {
ToolChain *tc = ToolChainKitAspect::cxxToolChain(k); Toolchain *tc = ToolChainKitAspect::cxxToolChain(k);
return tc ? tc->displayName() : QString(); return tc ? tc->displayName() : QString();
} }
KitAspectFactory::ItemList ToolChainKitAspectFactory::toUserOutput(const Kit *k) const KitAspectFactory::ItemList ToolChainKitAspectFactory::toUserOutput(const Kit *k) const
{ {
ToolChain *tc = ToolChainKitAspect::cxxToolChain(k); Toolchain *tc = ToolChainKitAspect::cxxToolChain(k);
return {{Tr::tr("Compiler"), tc ? tc->displayName() : Tr::tr("None")}}; return {{Tr::tr("Compiler"), tc ? tc->displayName() : Tr::tr("None")}};
} }
void ToolChainKitAspectFactory::addToBuildEnvironment(const Kit *k, Environment &env) const void ToolChainKitAspectFactory::addToBuildEnvironment(const Kit *k, Environment &env) const
{ {
ToolChain *tc = ToolChainKitAspect::cxxToolChain(k); Toolchain *tc = ToolChainKitAspect::cxxToolChain(k);
if (tc) if (tc)
tc->addToEnvironment(env); tc->addToEnvironment(env);
} }
@@ -499,25 +499,25 @@ void ToolChainKitAspectFactory::addToMacroExpander(Kit *kit, MacroExpander *expa
// Compatibility with Qt Creator < 4.2: // Compatibility with Qt Creator < 4.2:
expander->registerVariable("Compiler:Name", Tr::tr("Compiler"), expander->registerVariable("Compiler:Name", Tr::tr("Compiler"),
[kit] { [kit] {
const ToolChain *tc = ToolChainKitAspect::cxxToolChain(kit); const Toolchain *tc = ToolChainKitAspect::cxxToolChain(kit);
return tc ? tc->displayName() : Tr::tr("None"); return tc ? tc->displayName() : Tr::tr("None");
}); });
expander->registerVariable("Compiler:Executable", Tr::tr("Path to the compiler executable"), expander->registerVariable("Compiler:Executable", Tr::tr("Path to the compiler executable"),
[kit] { [kit] {
const ToolChain *tc = ToolChainKitAspect::cxxToolChain(kit); const Toolchain *tc = ToolChainKitAspect::cxxToolChain(kit);
return tc ? tc->compilerCommand().path() : QString(); return tc ? tc->compilerCommand().path() : QString();
}); });
// After 4.2 // After 4.2
expander->registerPrefix("Compiler:Name", Tr::tr("Compiler for different languages"), expander->registerPrefix("Compiler:Name", Tr::tr("Compiler for different languages"),
[kit](const QString &ls) { [kit](const QString &ls) {
const ToolChain *tc = ToolChainKitAspect::toolChain(kit, findLanguage(ls)); const Toolchain *tc = ToolChainKitAspect::toolChain(kit, findLanguage(ls));
return tc ? tc->displayName() : Tr::tr("None"); return tc ? tc->displayName() : Tr::tr("None");
}); });
expander->registerPrefix("Compiler:Executable", Tr::tr("Compiler executable for different languages"), expander->registerPrefix("Compiler:Executable", Tr::tr("Compiler executable for different languages"),
[kit](const QString &ls) { [kit](const QString &ls) {
const ToolChain *tc = ToolChainKitAspect::toolChain(kit, findLanguage(ls)); const Toolchain *tc = ToolChainKitAspect::toolChain(kit, findLanguage(ls));
return tc ? tc->compilerCommand().path() : QString(); return tc ? tc->compilerCommand().path() : QString();
}); });
} }
@@ -525,7 +525,7 @@ void ToolChainKitAspectFactory::addToMacroExpander(Kit *kit, MacroExpander *expa
QList<OutputLineParser *> ToolChainKitAspectFactory::createOutputParsers(const Kit *k) const QList<OutputLineParser *> ToolChainKitAspectFactory::createOutputParsers(const Kit *k) const
{ {
for (const Id langId : {Constants::CXX_LANGUAGE_ID, Constants::C_LANGUAGE_ID}) { for (const Id langId : {Constants::CXX_LANGUAGE_ID, Constants::C_LANGUAGE_ID}) {
if (const ToolChain * const tc = ToolChainKitAspect::toolChain(k, langId)) if (const Toolchain * const tc = ToolChainKitAspect::toolChain(k, langId))
return tc->createOutputParsers(); return tc->createOutputParsers();
} }
return {}; return {};
@@ -534,7 +534,7 @@ QList<OutputLineParser *> ToolChainKitAspectFactory::createOutputParsers(const K
QSet<Id> ToolChainKitAspectFactory::availableFeatures(const Kit *k) const QSet<Id> ToolChainKitAspectFactory::availableFeatures(const Kit *k) const
{ {
QSet<Id> result; QSet<Id> result;
for (ToolChain *tc : ToolChainKitAspect::toolChains(k)) for (Toolchain *tc : ToolChainKitAspect::toolChains(k))
result.insert(tc->typeId().withPrefix("ToolChain.")); result.insert(tc->typeId().withPrefix("ToolChain."));
return result; return result;
} }
@@ -555,35 +555,35 @@ QByteArray ToolChainKitAspect::toolChainId(const Kit *k, Id language)
return value.value(language.toKey(), QByteArray()).toByteArray(); return value.value(language.toKey(), QByteArray()).toByteArray();
} }
ToolChain *ToolChainKitAspect::toolChain(const Kit *k, Id language) Toolchain *ToolChainKitAspect::toolChain(const Kit *k, Id language)
{ {
return ToolChainManager::findToolChain(toolChainId(k, language)); return ToolChainManager::findToolChain(toolChainId(k, language));
} }
ToolChain *ToolChainKitAspect::cToolChain(const Kit *k) Toolchain *ToolChainKitAspect::cToolChain(const Kit *k)
{ {
return ToolChainManager::findToolChain(toolChainId(k, ProjectExplorer::Constants::C_LANGUAGE_ID)); return ToolChainManager::findToolChain(toolChainId(k, ProjectExplorer::Constants::C_LANGUAGE_ID));
} }
ToolChain *ToolChainKitAspect::cxxToolChain(const Kit *k) Toolchain *ToolChainKitAspect::cxxToolChain(const Kit *k)
{ {
return ToolChainManager::findToolChain(toolChainId(k, ProjectExplorer::Constants::CXX_LANGUAGE_ID)); return ToolChainManager::findToolChain(toolChainId(k, ProjectExplorer::Constants::CXX_LANGUAGE_ID));
} }
QList<ToolChain *> ToolChainKitAspect::toolChains(const Kit *k) QList<Toolchain *> ToolChainKitAspect::toolChains(const Kit *k)
{ {
QTC_ASSERT(k, return {}); QTC_ASSERT(k, return {});
const Store value = storeFromVariant(k->value(ToolChainKitAspect::id())); const Store value = storeFromVariant(k->value(ToolChainKitAspect::id()));
const QList<ToolChain *> tcList const QList<Toolchain *> tcList
= transform<QList>(ToolChainManager::allLanguages(), [&value](Id l) { = transform<QList>(ToolChainManager::allLanguages(), [&value](Id l) {
return ToolChainManager::findToolChain(value.value(l.toKey()).toByteArray()); return ToolChainManager::findToolChain(value.value(l.toKey()).toByteArray());
}); });
return filtered(tcList, [](ToolChain *tc) { return tc; }); return filtered(tcList, [](Toolchain *tc) { return tc; });
} }
void ToolChainKitAspect::setToolChain(Kit *k, ToolChain *tc) void ToolChainKitAspect::setToolChain(Kit *k, Toolchain *tc)
{ {
QTC_ASSERT(tc, return); QTC_ASSERT(tc, return);
QTC_ASSERT(k, return); QTC_ASSERT(k, return);
@@ -603,7 +603,7 @@ void ToolChainKitAspect::setToolChain(Kit *k, ToolChain *tc)
* @param k The kit to set up * @param k The kit to set up
* @param tc The toolchain to match other languages for. * @param tc The toolchain to match other languages for.
*/ */
void ToolChainKitAspect::setAllToolChainsToMatch(Kit *k, ToolChain *tc) void ToolChainKitAspect::setAllToolChainsToMatch(Kit *k, Toolchain *tc)
{ {
QTC_ASSERT(tc, return); QTC_ASSERT(tc, return);
QTC_ASSERT(k, return); QTC_ASSERT(k, return);
@@ -618,9 +618,9 @@ void ToolChainKitAspect::setAllToolChainsToMatch(Kit *k, ToolChain *tc)
if (l == tc->language()) if (l == tc->language())
continue; continue;
ToolChain *match = nullptr; Toolchain *match = nullptr;
ToolChain *bestMatch = nullptr; Toolchain *bestMatch = nullptr;
for (ToolChain *other : allTcList) { for (Toolchain *other : allTcList) {
if (!other->isValid() || other->language() != l) if (!other->isValid() || other->language() != l)
continue; continue;
if (other->targetAbi() == tc->targetAbi()) if (other->targetAbi() == tc->targetAbi())
@@ -654,11 +654,11 @@ void ToolChainKitAspect::clearToolChain(Kit *k, Id language)
Abi ToolChainKitAspect::targetAbi(const Kit *k) Abi ToolChainKitAspect::targetAbi(const Kit *k)
{ {
const QList<ToolChain *> tcList = toolChains(k); const QList<Toolchain *> tcList = toolChains(k);
// Find the best possible ABI for all the tool chains... // Find the best possible ABI for all the tool chains...
Abi cxxAbi; Abi cxxAbi;
QHash<Abi, int> abiCount; QHash<Abi, int> abiCount;
for (ToolChain *tc : tcList) { for (Toolchain *tc : tcList) {
Abi ta = tc->targetAbi(); Abi ta = tc->targetAbi();
if (tc->language() == Id(Constants::CXX_LANGUAGE_ID)) if (tc->language() == Id(Constants::CXX_LANGUAGE_ID))
cxxAbi = tc->targetAbi(); cxxAbi = tc->targetAbi();
@@ -701,7 +701,7 @@ void ToolChainKitAspectFactory::onKitsLoaded()
this, &ToolChainKitAspectFactory::toolChainUpdated); this, &ToolChainKitAspectFactory::toolChainUpdated);
} }
void ToolChainKitAspectFactory::toolChainUpdated(ToolChain *tc) void ToolChainKitAspectFactory::toolChainUpdated(Toolchain *tc)
{ {
for (Kit *k : KitManager::kits()) { for (Kit *k : KitManager::kits()) {
if (ToolChainKitAspect::toolChain(k, tc->language()) == tc) if (ToolChainKitAspect::toolChain(k, tc->language()) == tc)
@@ -709,7 +709,7 @@ void ToolChainKitAspectFactory::toolChainUpdated(ToolChain *tc)
} }
} }
void ToolChainKitAspectFactory::toolChainRemoved(ToolChain *tc) void ToolChainKitAspectFactory::toolChainRemoved(Toolchain *tc)
{ {
Q_UNUSED(tc) Q_UNUSED(tc)
for (Kit *k : KitManager::kits()) for (Kit *k : KitManager::kits())

View File

@@ -12,7 +12,7 @@
namespace ProjectExplorer { namespace ProjectExplorer {
class ToolChain; class Toolchain;
// SysRootKitAspect // SysRootKitAspect
@@ -31,12 +31,12 @@ class PROJECTEXPLORER_EXPORT ToolChainKitAspect
public: public:
static Utils::Id id(); static Utils::Id id();
static QByteArray toolChainId(const Kit *k, Utils::Id language); static QByteArray toolChainId(const Kit *k, Utils::Id language);
static ToolChain *toolChain(const Kit *k, Utils::Id language); static Toolchain *toolChain(const Kit *k, Utils::Id language);
static ToolChain *cToolChain(const Kit *k); static Toolchain *cToolChain(const Kit *k);
static ToolChain *cxxToolChain(const Kit *k); static Toolchain *cxxToolChain(const Kit *k);
static QList<ToolChain *> toolChains(const Kit *k); static QList<Toolchain *> toolChains(const Kit *k);
static void setToolChain(Kit *k, ToolChain *tc); static void setToolChain(Kit *k, Toolchain *tc);
static void setAllToolChainsToMatch(Kit *k, ToolChain *tc); static void setAllToolChainsToMatch(Kit *k, Toolchain *tc);
static void clearToolChain(Kit *k, Utils::Id language); static void clearToolChain(Kit *k, Utils::Id language);
static Abi targetAbi(const Kit *k); static Abi targetAbi(const Kit *k);

View File

@@ -151,8 +151,8 @@ void KitManager::destroy()
static bool kitMatchesAbiList(const Kit *kit, const Abis &abis) static bool kitMatchesAbiList(const Kit *kit, const Abis &abis)
{ {
const QList<ToolChain *> toolchains = ToolChainKitAspect::toolChains(kit); const QList<Toolchain *> toolchains = ToolChainKitAspect::toolChains(kit);
for (const ToolChain * const tc : toolchains) { for (const Toolchain * const tc : toolchains) {
const Abi tcAbi = tc->targetAbi(); const Abi tcAbi = tc->targetAbi();
for (const Abi &abi : abis) { for (const Abi &abi : abis) {
if (tcAbi.os() == abi.os() && tcAbi.architecture() == abi.architecture() if (tcAbi.os() == abi.os() && tcAbi.architecture() == abi.architecture()
@@ -183,8 +183,8 @@ static Id deviceTypeForKit(const Kit *kit)
{ {
if (isHostKit(kit)) if (isHostKit(kit))
return Constants::DESKTOP_DEVICE_TYPE; return Constants::DESKTOP_DEVICE_TYPE;
const QList<ToolChain *> toolchains = ToolChainKitAspect::toolChains(kit); const QList<Toolchain *> toolchains = ToolChainKitAspect::toolChains(kit);
for (const ToolChain * const tc : toolchains) { for (const Toolchain * const tc : toolchains) {
const Abi tcAbi = tc->targetAbi(); const Abi tcAbi = tc->targetAbi();
switch (tcAbi.os()) { switch (tcAbi.os()) {
case Abi::BareMetalOS: case Abi::BareMetalOS:
@@ -298,7 +298,7 @@ void KitManager::restoreKits()
if (resultList.empty() || !haveKitForBinary) { if (resultList.empty() || !haveKitForBinary) {
// No kits exist yet, so let's try to autoconfigure some from the toolchains we know. // No kits exist yet, so let's try to autoconfigure some from the toolchains we know.
QHash<Abi, QHash<Utils::Id, ToolChain *>> uniqueToolchains; QHash<Abi, QHash<Utils::Id, Toolchain *>> uniqueToolchains;
// On Linux systems, we usually detect a plethora of same-ish toolchains. The following // On Linux systems, we usually detect a plethora of same-ish toolchains. The following
// algorithm gives precedence to icecc and ccache and otherwise simply chooses the one with // algorithm gives precedence to icecc and ccache and otherwise simply chooses the one with
@@ -306,8 +306,8 @@ void KitManager::restoreKits()
// TODO: This should not need to be done here. Instead, it should be a convenience // TODO: This should not need to be done here. Instead, it should be a convenience
// operation on some lower level, e.g. in the toolchain class(es). // operation on some lower level, e.g. in the toolchain class(es).
// Also, we shouldn't detect so many doublets in the first place. // Also, we shouldn't detect so many doublets in the first place.
for (ToolChain * const tc : ToolChainManager::toolchains()) { for (Toolchain * const tc : ToolChainManager::toolchains()) {
ToolChain *&bestTc = uniqueToolchains[tc->targetAbi()][tc->language()]; Toolchain *&bestTc = uniqueToolchains[tc->targetAbi()][tc->language()];
if (!bestTc) { if (!bestTc) {
bestTc = tc; bestTc = tc;
continue; continue;
@@ -346,7 +346,7 @@ void KitManager::restoreKits()
auto kit = std::make_unique<Kit>(); auto kit = std::make_unique<Kit>();
kit->setSdkProvided(false); kit->setSdkProvided(false);
kit->setAutoDetected(false); // TODO: Why false? What does autodetected mean here? kit->setAutoDetected(false); // TODO: Why false? What does autodetected mean here?
for (ToolChain * const tc : it.value()) for (Toolchain * const tc : it.value())
ToolChainKitAspect::setToolChain(kit.get(), tc); ToolChainKitAspect::setToolChain(kit.get(), tc);
if (contains(resultList, [&kit](const std::unique_ptr<Kit> &existingKit) { if (contains(resultList, [&kit](const std::unique_ptr<Kit> &existingKit) {
return ToolChainKitAspect::toolChains(kit.get()) return ToolChainKitAspect::toolChains(kit.get())

View File

@@ -127,10 +127,10 @@ QString MakeStep::defaultDisplayName()
return Tr::tr("Make"); return Tr::tr("Make");
} }
static const QList<ToolChain *> preferredToolChains(const Kit *kit) static const QList<Toolchain *> preferredToolChains(const Kit *kit)
{ {
// prefer CXX, then C, then others // prefer CXX, then C, then others
return Utils::sorted(ToolChainKitAspect::toolChains(kit), [](ToolChain *tcA, ToolChain *tcB) { return Utils::sorted(ToolChainKitAspect::toolChains(kit), [](Toolchain *tcA, Toolchain *tcB) {
if (tcA->language() == tcB->language()) if (tcA->language() == tcB->language())
return false; return false;
if (tcA->language() == Constants::CXX_LANGUAGE_ID) if (tcA->language() == Constants::CXX_LANGUAGE_ID)
@@ -146,7 +146,7 @@ static const QList<ToolChain *> preferredToolChains(const Kit *kit)
FilePath MakeStep::defaultMakeCommand() const FilePath MakeStep::defaultMakeCommand() const
{ {
const Environment env = makeEnvironment(); const Environment env = makeEnvironment();
for (const ToolChain *tc : preferredToolChains(kit())) { for (const Toolchain *tc : preferredToolChains(kit())) {
FilePath make = tc->makeCommand(env); FilePath make = tc->makeCommand(env);
if (!make.isEmpty()) { if (!make.isEmpty()) {
IDevice::ConstPtr dev = BuildDeviceKitAspect::device(kit()); IDevice::ConstPtr dev = BuildDeviceKitAspect::device(kit());
@@ -169,8 +169,8 @@ Task MakeStep::makeCommandMissingTask()
bool MakeStep::isJobCountSupported() const bool MakeStep::isJobCountSupported() const
{ {
const QList<ToolChain *> tcs = preferredToolChains(kit()); const QList<Toolchain *> tcs = preferredToolChains(kit());
const ToolChain *tc = tcs.isEmpty() ? nullptr : tcs.constFirst(); const Toolchain *tc = tcs.isEmpty() ? nullptr : tcs.constFirst();
return tc && tc->isJobCountSupported(); return tc && tc->isJobCountSupported();
} }
@@ -236,8 +236,8 @@ Environment MakeStep::makeEnvironment() const
env.setupEnglishOutput(); env.setupEnglishOutput();
if (makeCommand().isEmpty()) { if (makeCommand().isEmpty()) {
// We also prepend "L" to the MAKEFLAGS, so that nmake / jom are less verbose // We also prepend "L" to the MAKEFLAGS, so that nmake / jom are less verbose
const QList<ToolChain *> tcs = preferredToolChains(target()->kit()); const QList<Toolchain *> tcs = preferredToolChains(target()->kit());
const ToolChain *tc = tcs.isEmpty() ? nullptr : tcs.constFirst(); const Toolchain *tc = tcs.isEmpty() ? nullptr : tcs.constFirst();
if (tc && tc->targetAbi().os() == Abi::WindowsOS if (tc && tc->targetAbi().os() == Abi::WindowsOS
&& tc->targetAbi().osFlavor() != Abi::WindowsMSysFlavor) { && tc->targetAbi().osFlavor() != Abi::WindowsMSysFlavor) {
env.set(MAKEFLAGS, 'L' + env.expandedValueForKey(MAKEFLAGS)); env.set(MAKEFLAGS, 'L' + env.expandedValueForKey(MAKEFLAGS));

View File

@@ -709,7 +709,7 @@ Utils::LanguageVersion MsvcToolChain::msvcLanguageVersion(const QStringList & /*
if (language == Constants::CXX_LANGUAGE_ID) { if (language == Constants::CXX_LANGUAGE_ID) {
if (!msvcLang.isEmpty()) // >= Visual Studio 2015 Update 3 if (!msvcLang.isEmpty()) // >= Visual Studio 2015 Update 3
return ToolChain::cxxLanguageVersion(msvcLang); return Toolchain::cxxLanguageVersion(msvcLang);
if (mscVer >= 1800) // >= Visual Studio 2013 (12.0) if (mscVer >= 1800) // >= Visual Studio 2013 (12.0)
return LanguageVersion::CXX14; return LanguageVersion::CXX14;
if (mscVer >= 1600) // >= Visual Studio 2010 (10.0) if (mscVer >= 1600) // >= Visual Studio 2010 (10.0)
@@ -854,7 +854,7 @@ static void addToAvailableMsvcToolchains(const MsvcToolChain *toolchain)
} }
MsvcToolChain::MsvcToolChain(Utils::Id typeId) MsvcToolChain::MsvcToolChain(Utils::Id typeId)
: ToolChain(typeId) : Toolchain(typeId)
{ {
setDisplayName("Microsoft Visual C++ Compiler"); setDisplayName("Microsoft Visual C++ Compiler");
setTypeDisplayName(Tr::tr("MSVC")); setTypeDisplayName(Tr::tr("MSVC"));
@@ -979,7 +979,7 @@ Abis MsvcToolChain::supportedAbis() const
void MsvcToolChain::toMap(Store &data) const void MsvcToolChain::toMap(Store &data) const
{ {
ToolChain::toMap(data); Toolchain::toMap(data);
data.insert(varsBatKeyC, m_vcvarsBat); data.insert(varsBatKeyC, m_vcvarsBat);
if (!m_varsBatArg.isEmpty()) if (!m_varsBatArg.isEmpty())
data.insert(varsBatArgKeyC, m_varsBatArg); data.insert(varsBatArgKeyC, m_varsBatArg);
@@ -989,7 +989,7 @@ void MsvcToolChain::toMap(Store &data) const
void MsvcToolChain::fromMap(const Store &data) void MsvcToolChain::fromMap(const Store &data)
{ {
ToolChain::fromMap(data); Toolchain::fromMap(data);
if (hasError()) { if (hasError()) {
g_availableMsvcToolchains.removeOne(this); g_availableMsvcToolchains.removeOne(this);
return; return;
@@ -1029,7 +1029,7 @@ bool static hasFlagEffectOnMacros(const QString &flag)
return true; return true;
} }
ToolChain::MacroInspectionRunner MsvcToolChain::createMacroInspectionRunner() const Toolchain::MacroInspectionRunner MsvcToolChain::createMacroInspectionRunner() const
{ {
Utils::Environment env(m_lastEnvironment); Utils::Environment env(m_lastEnvironment);
addToEnvironment(env); addToEnvironment(env);
@@ -1120,10 +1120,10 @@ WarningFlags MsvcToolChain::warningFlags(const QStringList &cflags) const
FilePaths MsvcToolChain::includedFiles(const QStringList &flags, FilePaths MsvcToolChain::includedFiles(const QStringList &flags,
const FilePath &directoryPath) const const FilePath &directoryPath) const
{ {
return ToolChain::includedFiles("/FI", flags, directoryPath, PossiblyConcatenatedFlag::Yes); return Toolchain::includedFiles("/FI", flags, directoryPath, PossiblyConcatenatedFlag::Yes);
} }
ToolChain::BuiltInHeaderPathsRunner MsvcToolChain::createBuiltInHeaderPathsRunner( Toolchain::BuiltInHeaderPathsRunner MsvcToolChain::createBuiltInHeaderPathsRunner(
const Environment &env) const const Environment &env) const
{ {
Utils::Environment fullEnv = env; Utils::Environment fullEnv = env;
@@ -1266,7 +1266,7 @@ static QString msvcVarsToDisplay(const MsvcToolChain &tc)
class MsvcBasedToolChainConfigWidget : public ToolchainConfigWidget class MsvcBasedToolChainConfigWidget : public ToolchainConfigWidget
{ {
public: public:
explicit MsvcBasedToolChainConfigWidget(ToolChain *tc) explicit MsvcBasedToolChainConfigWidget(Toolchain *tc)
: ToolchainConfigWidget(tc) : ToolchainConfigWidget(tc)
, m_nameDisplayLabel(new QLabel(this)) , m_nameDisplayLabel(new QLabel(this))
, m_varsBatDisplayLabel(new QLabel(this)) , m_varsBatDisplayLabel(new QLabel(this))
@@ -1303,7 +1303,7 @@ protected:
class MsvcToolChainConfigWidget final : public MsvcBasedToolChainConfigWidget class MsvcToolChainConfigWidget final : public MsvcBasedToolChainConfigWidget
{ {
public: public:
explicit MsvcToolChainConfigWidget(ToolChain *tc) explicit MsvcToolChainConfigWidget(Toolchain *tc)
: MsvcBasedToolChainConfigWidget(tc) : MsvcBasedToolChainConfigWidget(tc)
, m_varsBatPathCombo(new QComboBox(this)) , m_varsBatPathCombo(new QComboBox(this))
, m_varsBatArchCombo(new QComboBox(this)) , m_varsBatArchCombo(new QComboBox(this))
@@ -1515,7 +1515,7 @@ std::unique_ptr<ToolchainConfigWidget> MsvcToolChain::createConfigurationWidget(
class ClangClToolChainConfigWidget final : public MsvcBasedToolChainConfigWidget class ClangClToolChainConfigWidget final : public MsvcBasedToolChainConfigWidget
{ {
public: public:
explicit ClangClToolChainConfigWidget(ToolChain *tc) explicit ClangClToolChainConfigWidget(Toolchain *tc)
: MsvcBasedToolChainConfigWidget(tc) : MsvcBasedToolChainConfigWidget(tc)
, m_varsBatDisplayCombo(new QComboBox(this)) , m_varsBatDisplayCombo(new QComboBox(this))
{ {
@@ -1669,7 +1669,7 @@ static Toolchains detectClangClToolChainInPath(const FilePath &clangClPath,
.arg(Abi::toString(targetAbi.osFlavor()).toUpper()); .arg(Abi::toString(targetAbi.osFlavor()).toUpper());
for (auto language : {Constants::C_LANGUAGE_ID, Constants::CXX_LANGUAGE_ID}) { for (auto language : {Constants::C_LANGUAGE_ID, Constants::CXX_LANGUAGE_ID}) {
ClangClToolChain *tc = static_cast<ClangClToolChain *>( ClangClToolChain *tc = static_cast<ClangClToolChain *>(
Utils::findOrDefault(alreadyKnown, [&](ToolChain *tc) -> bool { Utils::findOrDefault(alreadyKnown, [&](Toolchain *tc) -> bool {
if (tc->typeId() != Constants::CLANG_CL_TOOLCHAIN_TYPEID) if (tc->typeId() != Constants::CLANG_CL_TOOLCHAIN_TYPEID)
return false; return false;
if (tc->targetAbi() != targetAbi) if (tc->targetAbi() != targetAbi)
@@ -1684,7 +1684,7 @@ static Toolchains detectClangClToolChainInPath(const FilePath &clangClPath,
auto cltc = new ClangClToolChain; auto cltc = new ClangClToolChain;
cltc->setClangPath(clangClPath); cltc->setClangPath(clangClPath);
cltc->setDisplayName(name); cltc->setDisplayName(name);
cltc->setDetection(ToolChain::AutoDetection); cltc->setDetection(Toolchain::AutoDetection);
cltc->setLanguage(language); cltc->setLanguage(language);
cltc->setupVarsBat(toolChain->targetAbi(), toolChain->varsBat(), toolChain->varsBatArg()); cltc->setupVarsBat(toolChain->targetAbi(), toolChain->varsBat(), toolChain->varsBatArg());
res << cltc; res << cltc;
@@ -1711,7 +1711,7 @@ void ClangClToolChainConfigWidget::applyImpl()
if (results.isEmpty()) { if (results.isEmpty()) {
clangClToolChain->resetVarsBat(); clangClToolChain->resetVarsBat();
} else { } else {
for (const ToolChain *toolchain : results) { for (const Toolchain *toolchain : results) {
if (toolchain->language() == clangClToolChain->language()) { if (toolchain->language() == clangClToolChain->language()) {
auto mstc = static_cast<const MsvcToolChain *>(toolchain); auto mstc = static_cast<const MsvcToolChain *>(toolchain);
clangClToolChain->setupVarsBat(mstc->targetAbi(), mstc->varsBat(), mstc->varsBatArg()); clangClToolChain->setupVarsBat(mstc->targetAbi(), mstc->varsBat(), mstc->varsBatArg());
@@ -1805,7 +1805,7 @@ std::unique_ptr<ToolchainConfigWidget> ClangClToolChain::createConfigurationWidg
return std::make_unique<ClangClToolChainConfigWidget>(this); return std::make_unique<ClangClToolChainConfigWidget>(this);
} }
bool ClangClToolChain::operator==(const ToolChain &other) const bool ClangClToolChain::operator==(const Toolchain &other) const
{ {
if (!MsvcToolChain::operator==(other)) if (!MsvcToolChain::operator==(other))
return false; return false;
@@ -1847,7 +1847,7 @@ LanguageVersion ClangClToolChain::msvcLanguageVersion(const QStringList &cxxflag
const Macros &macros) const const Macros &macros) const
{ {
if (cxxflags.contains("--driver-mode=g++")) if (cxxflags.contains("--driver-mode=g++"))
return ToolChain::languageVersion(language, macros); return Toolchain::languageVersion(language, macros);
return MsvcToolChain::msvcLanguageVersion(cxxflags, language, macros); return MsvcToolChain::msvcLanguageVersion(cxxflags, language, macros);
} }
@@ -1910,7 +1910,7 @@ static Toolchains findOrCreateToolchains(const ToolchainDetector &detector,
{ {
Toolchains res; Toolchains res;
for (auto language : {Constants::C_LANGUAGE_ID, Constants::CXX_LANGUAGE_ID}) { for (auto language : {Constants::C_LANGUAGE_ID, Constants::CXX_LANGUAGE_ID}) {
ToolChain *tc = Utils::findOrDefault(detector.alreadyKnown, [&](ToolChain *tc) -> bool { Toolchain *tc = Utils::findOrDefault(detector.alreadyKnown, [&](Toolchain *tc) -> bool {
if (tc->typeId() != Constants::MSVC_TOOLCHAIN_TYPEID) if (tc->typeId() != Constants::MSVC_TOOLCHAIN_TYPEID)
return false; return false;
if (tc->targetAbi() != abi) if (tc->targetAbi() != abi)
@@ -1966,7 +1966,7 @@ static void detectCppBuildTools2015(Toolchains *list)
auto tc = new MsvcToolChain(Constants::MSVC_TOOLCHAIN_TYPEID); auto tc = new MsvcToolChain(Constants::MSVC_TOOLCHAIN_TYPEID);
tc->setupVarsBat(abi, vcVarsBat, QLatin1String(e.varsBatArg)); tc->setupVarsBat(abi, vcVarsBat, QLatin1String(e.varsBatArg));
tc->setDisplayName(name + QLatin1String(e.postFix)); tc->setDisplayName(name + QLatin1String(e.postFix));
tc->setDetection(ToolChain::AutoDetection); tc->setDetection(Toolchain::AutoDetection);
tc->setLanguage(language); tc->setLanguage(language);
list->append(tc); list->append(tc);
} }
@@ -2005,7 +2005,7 @@ Toolchains MsvcToolchainFactory::autoDetect(const ToolchainDetector &detector) c
if (!fi.exists()) if (!fi.exists())
continue; continue;
QList<ToolChain *> tmp; QList<Toolchain *> tmp;
const QVector<QPair<MsvcToolChain::Platform, QString>> platforms = { const QVector<QPair<MsvcToolChain::Platform, QString>> platforms = {
{MsvcToolChain::x86, "x86"}, {MsvcToolChain::x86, "x86"},
{MsvcToolChain::amd64, "x64"}, {MsvcToolChain::amd64, "x64"},
@@ -2069,15 +2069,15 @@ Toolchains MsvcToolchainFactory::autoDetect(const ToolchainDetector &detector) c
detectCppBuildTools2015(&results); detectCppBuildTools2015(&results);
for (ToolChain *tc : std::as_const(results)) for (Toolchain *tc : std::as_const(results))
tc->setDetection(ToolChain::AutoDetection); tc->setDetection(Toolchain::AutoDetection);
return results; return results;
} }
bool MsvcToolChain::operator==(const ToolChain &other) const bool MsvcToolChain::operator==(const Toolchain &other) const
{ {
if (!ToolChain::operator==(other)) if (!Toolchain::operator==(other))
return false; return false;
const auto *msvcTc = dynamic_cast<const MsvcToolChain *>(&other); const auto *msvcTc = dynamic_cast<const MsvcToolChain *>(&other);

View File

@@ -20,7 +20,7 @@ namespace ProjectExplorer::Internal {
// MsvcToolChain // MsvcToolChain
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
class MsvcToolChain : public ToolChain class MsvcToolChain : public Toolchain
{ {
public: public:
enum Type { WindowsSDK, VS }; enum Type { WindowsSDK, VS };
@@ -61,7 +61,7 @@ public:
void resetVarsBat(); void resetVarsBat();
Platform platform() const; Platform platform() const;
bool operator==(const ToolChain &) const override; bool operator==(const Toolchain &) const override;
bool isJobCountSupported() const override { return false; } bool isJobCountSupported() const override { return false; }
@@ -153,7 +153,7 @@ public:
const Utils::Id &language, const Utils::Id &language,
const Macros &macros) const override; const Macros &macros) const override;
bool operator==(const ToolChain &) const override; bool operator==(const Toolchain &) const override;
int priority() const override; int priority() const override;

View File

@@ -310,7 +310,7 @@ bool ProjectImporter::findTemporaryHandler(Utils::Id id) const
return Utils::contains(m_temporaryHandlers, [id](const TemporaryInformationHandler &ch) { return ch.id == id; }); return Utils::contains(m_temporaryHandlers, [id](const TemporaryInformationHandler &ch) { return ch.id == id; });
} }
static ToolChain *toolChainFromVariant(const QVariant &v) static Toolchain *toolChainFromVariant(const QVariant &v)
{ {
const QByteArray tcId = v.toByteArray(); const QByteArray tcId = v.toByteArray();
return ToolChainManager::findToolChain(tcId); return ToolChainManager::findToolChain(tcId);
@@ -319,7 +319,7 @@ static ToolChain *toolChainFromVariant(const QVariant &v)
void ProjectImporter::cleanupTemporaryToolChains(Kit *k, const QVariantList &vl) void ProjectImporter::cleanupTemporaryToolChains(Kit *k, const QVariantList &vl)
{ {
for (const QVariant &v : vl) { for (const QVariant &v : vl) {
ToolChain *tc = toolChainFromVariant(v); Toolchain *tc = toolChainFromVariant(v);
QTC_ASSERT(tc, continue); QTC_ASSERT(tc, continue);
ToolChainManager::deregisterToolChain(tc); ToolChainManager::deregisterToolChain(tc);
ToolChainKitAspect::setToolChain(k, nullptr); ToolChainKitAspect::setToolChain(k, nullptr);
@@ -329,9 +329,9 @@ void ProjectImporter::cleanupTemporaryToolChains(Kit *k, const QVariantList &vl)
void ProjectImporter::persistTemporaryToolChains(Kit *k, const QVariantList &vl) void ProjectImporter::persistTemporaryToolChains(Kit *k, const QVariantList &vl)
{ {
for (const QVariant &v : vl) { for (const QVariant &v : vl) {
ToolChain *tmpTc = toolChainFromVariant(v); Toolchain *tmpTc = toolChainFromVariant(v);
QTC_ASSERT(tmpTc, continue); QTC_ASSERT(tmpTc, continue);
ToolChain *actualTc = ToolChainKitAspect::toolChain(k, tmpTc->language()); Toolchain *actualTc = ToolChainKitAspect::toolChain(k, tmpTc->language());
if (tmpTc && actualTc != tmpTc) if (tmpTc && actualTc != tmpTc)
ToolChainManager::deregisterToolChain(tmpTc); ToolChainManager::deregisterToolChain(tmpTc);
} }
@@ -375,7 +375,7 @@ static ProjectImporter::ToolChainData createToolChains(const ToolChainDescriptio
if (data.tcs.isEmpty()) if (data.tcs.isEmpty())
continue; continue;
for (ToolChain *tc : std::as_const(data.tcs)) for (Toolchain *tc : std::as_const(data.tcs))
ToolChainManager::registerToolChain(tc); ToolChainManager::registerToolChain(tc);
data.areTemporary = true; data.areTemporary = true;
@@ -389,10 +389,10 @@ ProjectImporter::ToolChainData
ProjectImporter::findOrCreateToolChains(const ToolChainDescription &tcd) const ProjectImporter::findOrCreateToolChains(const ToolChainDescription &tcd) const
{ {
ToolChainData result; ToolChainData result;
result.tcs = ToolChainManager::toolchains([&tcd](const ToolChain *tc) { result.tcs = ToolChainManager::toolchains([&tcd](const Toolchain *tc) {
return tc->language() == tcd.language && tc->matchesCompilerCommand(tcd.compilerPath); return tc->language() == tcd.language && tc->matchesCompilerCommand(tcd.compilerPath);
}); });
for (const ToolChain *tc : std::as_const(result.tcs)) { for (const Toolchain *tc : std::as_const(result.tcs)) {
const QByteArray tcId = tc->id(); const QByteArray tcId = tc->id();
result.areTemporary = result.areTemporary ? true : hasKitWithTemporaryData(ToolChainKitAspect::id(), tcId); result.areTemporary = result.areTemporary ? true : hasKitWithTemporaryData(ToolChainKitAspect::id(), tcId);
} }

View File

@@ -15,7 +15,7 @@ class BuildInfo;
class Kit; class Kit;
class Project; class Project;
class Target; class Target;
class ToolChain; class Toolchain;
// Documentation inside. // Documentation inside.
class PROJECTEXPLORER_EXPORT ProjectImporter : public QObject class PROJECTEXPLORER_EXPORT ProjectImporter : public QObject
@@ -23,7 +23,7 @@ class PROJECTEXPLORER_EXPORT ProjectImporter : public QObject
Q_OBJECT Q_OBJECT
public: public:
struct ToolChainData { struct ToolChainData {
QList<ToolChain *> tcs; QList<Toolchain *> tcs;
bool areTemporary = false; bool areTemporary = false;
}; };

View File

@@ -16,7 +16,7 @@
namespace ProjectExplorer { namespace ProjectExplorer {
RawProjectPartFlags::RawProjectPartFlags(const ToolChain *toolChain, RawProjectPartFlags::RawProjectPartFlags(const Toolchain *toolChain,
const QStringList &commandLineFlags, const QStringList &commandLineFlags,
const Utils::FilePath &includeFileBaseDir) const Utils::FilePath &includeFileBaseDir)
{ {
@@ -155,7 +155,7 @@ bool KitInfo::isValid() const
return kit; return kit;
} }
ToolChainInfo::ToolChainInfo(const ToolChain *toolChain, ToolChainInfo::ToolChainInfo(const Toolchain *toolChain,
const Utils::FilePath &sysRootPath, const Utils::FilePath &sysRootPath,
const Utils::Environment &env) const Utils::Environment &env)
{ {

View File

@@ -36,7 +36,7 @@ class PROJECTEXPLORER_EXPORT RawProjectPartFlags
{ {
public: public:
RawProjectPartFlags() = default; RawProjectPartFlags() = default;
RawProjectPartFlags(const ToolChain *toolChain, const QStringList &commandLineFlags, RawProjectPartFlags(const Toolchain *toolChain, const QStringList &commandLineFlags,
const Utils::FilePath &includeFileBaseDir); const Utils::FilePath &includeFileBaseDir);
public: public:
@@ -119,8 +119,8 @@ public:
bool isValid() const; bool isValid() const;
Kit *kit = nullptr; Kit *kit = nullptr;
ToolChain *cToolChain = nullptr; Toolchain *cToolChain = nullptr;
ToolChain *cxxToolChain = nullptr; Toolchain *cxxToolChain = nullptr;
Utils::QtMajorVersion projectPartQtVersion = Utils::QtMajorVersion::None; Utils::QtMajorVersion projectPartQtVersion = Utils::QtMajorVersion::None;
@@ -131,7 +131,7 @@ class PROJECTEXPLORER_EXPORT ToolChainInfo
{ {
public: public:
ToolChainInfo() = default; ToolChainInfo() = default;
ToolChainInfo(const ProjectExplorer::ToolChain *toolChain, ToolChainInfo(const ProjectExplorer::Toolchain *toolChain,
const Utils::FilePath &sysRootPath, const Utils::FilePath &sysRootPath,
const Utils::Environment &env); const Utils::Environment &env);
@@ -148,8 +148,8 @@ public:
QStringList extraCodeModelFlags; QStringList extraCodeModelFlags;
Utils::FilePath sysRootPath; // For headerPathsRunner. Utils::FilePath sysRootPath; // For headerPathsRunner.
ProjectExplorer::ToolChain::BuiltInHeaderPathsRunner headerPathsRunner; ProjectExplorer::Toolchain::BuiltInHeaderPathsRunner headerPathsRunner;
ProjectExplorer::ToolChain::MacroInspectionRunner macroInspectionRunner; ProjectExplorer::Toolchain::MacroInspectionRunner macroInspectionRunner;
}; };
class PROJECTEXPLORER_EXPORT ProjectUpdateInfo class PROJECTEXPLORER_EXPORT ProjectUpdateInfo

View File

@@ -41,13 +41,13 @@ QList<ToolchainFactory *> &toolchainFactories()
class ToolChainPrivate class ToolChainPrivate
{ {
public: public:
using Detection = ToolChain::Detection; using Detection = Toolchain::Detection;
explicit ToolChainPrivate(Id typeId) : explicit ToolChainPrivate(Id typeId) :
m_id(QUuid::createUuid().toByteArray()), m_id(QUuid::createUuid().toByteArray()),
m_typeId(typeId), m_typeId(typeId),
m_predefinedMacrosCache(new ToolChain::MacrosCache::element_type()), m_predefinedMacrosCache(new Toolchain::MacrosCache::element_type()),
m_headerPathsCache(new ToolChain::HeaderPathsCache::element_type()) m_headerPathsCache(new Toolchain::HeaderPathsCache::element_type())
{ {
QTC_ASSERT(m_typeId.isValid(), return); QTC_ASSERT(m_typeId.isValid(), return);
QTC_ASSERT(!m_typeId.name().contains(':'), return); QTC_ASSERT(!m_typeId.name().contains(':'), return);
@@ -63,12 +63,12 @@ public:
QString m_typeDisplayName; QString m_typeDisplayName;
Id m_typeId; Id m_typeId;
Id m_language; Id m_language;
Detection m_detection = ToolChain::UninitializedDetection; Detection m_detection = Toolchain::UninitializedDetection;
QString m_detectionSource; QString m_detectionSource;
QString m_explicitCodeModelTargetTriple; QString m_explicitCodeModelTargetTriple;
ToolChain::MacrosCache m_predefinedMacrosCache; Toolchain::MacrosCache m_predefinedMacrosCache;
ToolChain::HeaderPathsCache m_headerPathsCache; Toolchain::HeaderPathsCache m_headerPathsCache;
std::optional<bool> m_isValid; std::optional<bool> m_isValid;
bool m_hasError = false; bool m_hasError = false;
}; };
@@ -119,12 +119,12 @@ using namespace Internal;
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
ToolChain::ToolChain(Id typeId) : Toolchain::Toolchain(Id typeId) :
d(std::make_unique<ToolChainPrivate>(typeId)) d(std::make_unique<ToolChainPrivate>(typeId))
{ {
} }
void ToolChain::setLanguage(Id language) void Toolchain::setLanguage(Id language)
{ {
QTC_ASSERT(!d->m_language.isValid() || isAutoDetected(), return); QTC_ASSERT(!d->m_language.isValid() || isAutoDetected(), return);
QTC_ASSERT(language.isValid(), return); QTC_ASSERT(language.isValid(), return);
@@ -133,16 +133,16 @@ void ToolChain::setLanguage(Id language)
d->m_language = language; d->m_language = language;
} }
ToolChain::~ToolChain() = default; Toolchain::~Toolchain() = default;
QString ToolChain::displayName() const QString Toolchain::displayName() const
{ {
if (d->m_displayName.isEmpty()) if (d->m_displayName.isEmpty())
return typeDisplayName(); return typeDisplayName();
return d->m_displayName; return d->m_displayName;
} }
void ToolChain::setDisplayName(const QString &name) void Toolchain::setDisplayName(const QString &name)
{ {
if (d->m_displayName == name) if (d->m_displayName == name)
return; return;
@@ -151,42 +151,42 @@ void ToolChain::setDisplayName(const QString &name)
toolChainUpdated(); toolChainUpdated();
} }
bool ToolChain::isAutoDetected() const bool Toolchain::isAutoDetected() const
{ {
return detection() == AutoDetection || detection() == AutoDetectionFromSdk; return detection() == AutoDetection || detection() == AutoDetectionFromSdk;
} }
ToolChain::Detection ToolChain::detection() const Toolchain::Detection Toolchain::detection() const
{ {
return d->m_detection; return d->m_detection;
} }
QString ToolChain::detectionSource() const QString Toolchain::detectionSource() const
{ {
return d->m_detectionSource; return d->m_detectionSource;
} }
QByteArray ToolChain::id() const QByteArray Toolchain::id() const
{ {
return d->m_id; return d->m_id;
} }
QStringList ToolChain::suggestedMkspecList() const QStringList Toolchain::suggestedMkspecList() const
{ {
return {}; return {};
} }
Id ToolChain::typeId() const Id Toolchain::typeId() const
{ {
return d->m_typeId; return d->m_typeId;
} }
Abis ToolChain::supportedAbis() const Abis Toolchain::supportedAbis() const
{ {
return {targetAbi()}; return {targetAbi()};
} }
bool ToolChain::isValid() const bool Toolchain::isValid() const
{ {
if (!d->m_isValid.has_value()) if (!d->m_isValid.has_value())
d->m_isValid = !compilerCommand().isEmpty() && compilerCommand().isExecutableFile(); d->m_isValid = !compilerCommand().isEmpty() && compilerCommand().isExecutableFile();
@@ -194,19 +194,19 @@ bool ToolChain::isValid() const
return d->m_isValid.value_or(false); return d->m_isValid.value_or(false);
} }
FilePaths ToolChain::includedFiles(const QStringList &flags, const FilePath &directory) const FilePaths Toolchain::includedFiles(const QStringList &flags, const FilePath &directory) const
{ {
Q_UNUSED(flags) Q_UNUSED(flags)
Q_UNUSED(directory) Q_UNUSED(directory)
return {}; return {};
} }
Id ToolChain::language() const Id Toolchain::language() const
{ {
return d->m_language; return d->m_language;
} }
bool ToolChain::operator == (const ToolChain &tc) const bool Toolchain::operator == (const Toolchain &tc) const
{ {
if (this == &tc) if (this == &tc)
return true; return true;
@@ -217,11 +217,11 @@ bool ToolChain::operator == (const ToolChain &tc) const
&& language() == tc.language(); && language() == tc.language();
} }
ToolChain *ToolChain::clone() const Toolchain *Toolchain::clone() const
{ {
for (ToolchainFactory *f : std::as_const(toolchainFactories())) { for (ToolchainFactory *f : std::as_const(toolchainFactories())) {
if (f->supportedToolChainType() == d->m_typeId) { if (f->supportedToolChainType() == d->m_typeId) {
ToolChain *tc = f->create(); Toolchain *tc = f->create();
QTC_ASSERT(tc, return nullptr); QTC_ASSERT(tc, return nullptr);
Store data; Store data;
toMap(data); toMap(data);
@@ -241,7 +241,7 @@ ToolChain *ToolChain::clone() const
Make sure to call this function when deriving. Make sure to call this function when deriving.
*/ */
void ToolChain::toMap(Store &result) const void Toolchain::toMap(Store &result) const
{ {
AspectContainer::toMap(result); AspectContainer::toMap(result);
@@ -267,7 +267,7 @@ void ToolChain::toMap(Store &result) const
result.insert(d->m_compilerCommandKey, d->m_compilerCommand.toSettings()); result.insert(d->m_compilerCommandKey, d->m_compilerCommand.toSettings());
} }
void ToolChain::toolChainUpdated() void Toolchain::toolChainUpdated()
{ {
d->m_predefinedMacrosCache->invalidate(); d->m_predefinedMacrosCache->invalidate();
d->m_headerPathsCache->invalidate(); d->m_headerPathsCache->invalidate();
@@ -275,27 +275,27 @@ void ToolChain::toolChainUpdated()
ToolChainManager::notifyAboutUpdate(this); ToolChainManager::notifyAboutUpdate(this);
} }
void ToolChain::setDetection(ToolChain::Detection de) void Toolchain::setDetection(Toolchain::Detection de)
{ {
d->m_detection = de; d->m_detection = de;
} }
void ToolChain::setDetectionSource(const QString &source) void Toolchain::setDetectionSource(const QString &source)
{ {
d->m_detectionSource = source; d->m_detectionSource = source;
} }
QString ToolChain::typeDisplayName() const QString Toolchain::typeDisplayName() const
{ {
return d->m_typeDisplayName; return d->m_typeDisplayName;
} }
Abi ToolChain::targetAbi() const Abi Toolchain::targetAbi() const
{ {
return d->m_targetAbi; return d->m_targetAbi;
} }
void ToolChain::setTargetAbi(const Abi &abi) void Toolchain::setTargetAbi(const Abi &abi)
{ {
if (abi == d->m_targetAbi) if (abi == d->m_targetAbi)
return; return;
@@ -304,22 +304,22 @@ void ToolChain::setTargetAbi(const Abi &abi)
toolChainUpdated(); toolChainUpdated();
} }
void ToolChain::setTargetAbiNoSignal(const Abi &abi) void Toolchain::setTargetAbiNoSignal(const Abi &abi)
{ {
d->m_targetAbi = abi; d->m_targetAbi = abi;
} }
void ToolChain::setTargetAbiKey(const Key &abiKey) void Toolchain::setTargetAbiKey(const Key &abiKey)
{ {
d->m_targetAbiKey = abiKey; d->m_targetAbiKey = abiKey;
} }
FilePath ToolChain::compilerCommand() const FilePath Toolchain::compilerCommand() const
{ {
return d->m_compilerCommand; return d->m_compilerCommand;
} }
void ToolChain::setCompilerCommand(const FilePath &command) void Toolchain::setCompilerCommand(const FilePath &command)
{ {
d->m_isValid.reset(); d->m_isValid.reset();
@@ -329,17 +329,17 @@ void ToolChain::setCompilerCommand(const FilePath &command)
toolChainUpdated(); toolChainUpdated();
} }
bool ToolChain::matchesCompilerCommand(const FilePath &command) const bool Toolchain::matchesCompilerCommand(const FilePath &command) const
{ {
return compilerCommand().isSameExecutable(command); return compilerCommand().isSameExecutable(command);
} }
void ToolChain::setCompilerCommandKey(const Key &commandKey) void Toolchain::setCompilerCommandKey(const Key &commandKey)
{ {
d->m_compilerCommandKey = commandKey; d->m_compilerCommandKey = commandKey;
} }
void ToolChain::setTypeDisplayName(const QString &typeName) void Toolchain::setTypeDisplayName(const QString &typeName)
{ {
d->m_typeDisplayName = typeName; d->m_typeDisplayName = typeName;
} }
@@ -350,7 +350,7 @@ void ToolChain::setTypeDisplayName(const QString &typeName)
Make sure to call this function when deriving. Make sure to call this function when deriving.
*/ */
void ToolChain::fromMap(const Store &data) void Toolchain::fromMap(const Store &data)
{ {
AspectContainer::fromMap(data); AspectContainer::fromMap(data);
@@ -392,22 +392,22 @@ void ToolChain::fromMap(const Store &data)
d->m_isValid.reset(); d->m_isValid.reset();
} }
void ToolChain::reportError() void Toolchain::reportError()
{ {
d->m_hasError = true; d->m_hasError = true;
} }
bool ToolChain::hasError() const bool Toolchain::hasError() const
{ {
return d->m_hasError; return d->m_hasError;
} }
const ToolChain::HeaderPathsCache &ToolChain::headerPathsCache() const const Toolchain::HeaderPathsCache &Toolchain::headerPathsCache() const
{ {
return d->m_headerPathsCache; return d->m_headerPathsCache;
} }
const ToolChain::MacrosCache &ToolChain::predefinedMacrosCache() const const Toolchain::MacrosCache &Toolchain::predefinedMacrosCache() const
{ {
return d->m_predefinedMacrosCache; return d->m_predefinedMacrosCache;
} }
@@ -424,7 +424,7 @@ static long toLanguageVersionAsLong(QByteArray dateAsByteArray)
return result; return result;
} }
LanguageVersion ToolChain::cxxLanguageVersion(const QByteArray &cplusplusMacroValue) LanguageVersion Toolchain::cxxLanguageVersion(const QByteArray &cplusplusMacroValue)
{ {
const long version = toLanguageVersionAsLong(cplusplusMacroValue); const long version = toLanguageVersionAsLong(cplusplusMacroValue);
@@ -440,7 +440,7 @@ LanguageVersion ToolChain::cxxLanguageVersion(const QByteArray &cplusplusMacroVa
return LanguageVersion::CXX03; return LanguageVersion::CXX03;
} }
LanguageVersion ToolChain::languageVersion(const Id &language, const Macros &macros) LanguageVersion Toolchain::languageVersion(const Id &language, const Macros &macros)
{ {
if (language == Constants::CXX_LANGUAGE_ID) { if (language == Constants::CXX_LANGUAGE_ID) {
for (const ProjectExplorer::Macro &macro : macros) { for (const ProjectExplorer::Macro &macro : macros) {
@@ -477,7 +477,7 @@ LanguageVersion ToolChain::languageVersion(const Id &language, const Macros &mac
} }
} }
FilePaths ToolChain::includedFiles(const QString &option, FilePaths Toolchain::includedFiles(const QString &option,
const QStringList &flags, const QStringList &flags,
const FilePath &directoryPath, const FilePath &directoryPath,
PossiblyConcatenatedFlag possiblyConcatenated) PossiblyConcatenatedFlag possiblyConcatenated)
@@ -506,22 +506,22 @@ FilePaths ToolChain::includedFiles(const QString &option,
Used by the tool chain kit information to validate the kit. Used by the tool chain kit information to validate the kit.
*/ */
Tasks ToolChain::validateKit(const Kit *) const Tasks Toolchain::validateKit(const Kit *) const
{ {
return {}; return {};
} }
QString ToolChain::sysRoot() const QString Toolchain::sysRoot() const
{ {
return {}; return {};
} }
QString ToolChain::explicitCodeModelTargetTriple() const QString Toolchain::explicitCodeModelTargetTriple() const
{ {
return d->m_explicitCodeModelTargetTriple; return d->m_explicitCodeModelTargetTriple;
} }
QString ToolChain::effectiveCodeModelTargetTriple() const QString Toolchain::effectiveCodeModelTargetTriple() const
{ {
const QString overridden = explicitCodeModelTargetTriple(); const QString overridden = explicitCodeModelTargetTriple();
if (!overridden.isEmpty()) if (!overridden.isEmpty())
@@ -529,7 +529,7 @@ QString ToolChain::effectiveCodeModelTargetTriple() const
return originalTargetTriple(); return originalTargetTriple();
} }
void ToolChain::setExplicitCodeModelTargetTriple(const QString &triple) void Toolchain::setExplicitCodeModelTargetTriple(const QString &triple)
{ {
d->m_explicitCodeModelTargetTriple = triple; d->m_explicitCodeModelTargetTriple = triple;
} }
@@ -589,17 +589,17 @@ bool ToolchainFactory::canCreate() const
return m_userCreatable; return m_userCreatable;
} }
ToolChain *ToolchainFactory::create() const Toolchain *ToolchainFactory::create() const
{ {
return m_toolchainConstructor ? m_toolchainConstructor() : nullptr; return m_toolchainConstructor ? m_toolchainConstructor() : nullptr;
} }
ToolChain *ToolchainFactory::restore(const Store &data) Toolchain *ToolchainFactory::restore(const Store &data)
{ {
if (!m_toolchainConstructor) if (!m_toolchainConstructor)
return nullptr; return nullptr;
ToolChain *tc = m_toolchainConstructor(); Toolchain *tc = m_toolchainConstructor();
QTC_ASSERT(tc, return nullptr); QTC_ASSERT(tc, return nullptr);
tc->fromMap(data); tc->fromMap(data);
@@ -633,11 +633,11 @@ void ToolchainFactory::autoDetectionToMap(Store &data, bool detected)
data.insert(AUTODETECT_KEY, detected); data.insert(AUTODETECT_KEY, detected);
} }
ToolChain *ToolchainFactory::createToolChain(Id toolChainType) Toolchain *ToolchainFactory::createToolChain(Id toolChainType)
{ {
for (ToolchainFactory *factory : std::as_const(toolchainFactories())) { for (ToolchainFactory *factory : std::as_const(toolchainFactories())) {
if (factory->m_supportedToolChainType == toolChainType) { if (factory->m_supportedToolChainType == toolChainType) {
if (ToolChain *tc = factory->create()) { if (Toolchain *tc = factory->create()) {
tc->d->m_typeId = toolChainType; tc->d->m_typeId = toolChainType;
return tc; return tc;
} }

View File

@@ -57,7 +57,7 @@ public:
// ToolChain (documentation inside) // ToolChain (documentation inside)
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
class PROJECTEXPLORER_EXPORT ToolChain : public Utils::AspectContainer class PROJECTEXPLORER_EXPORT Toolchain : public Utils::AspectContainer
{ {
public: public:
enum Detection { enum Detection {
@@ -67,9 +67,9 @@ public:
UninitializedDetection, UninitializedDetection,
}; };
using Predicate = std::function<bool(const ToolChain *)>; using Predicate = std::function<bool(const Toolchain *)>;
virtual ~ToolChain(); virtual ~Toolchain();
QString displayName() const; QString displayName() const;
void setDisplayName(const QString &name); void setDisplayName(const QString &name);
@@ -113,7 +113,7 @@ public:
Utils::LanguageVersion languageVersion; Utils::LanguageVersion languageVersion;
}; };
using MacrosCache = std::shared_ptr<Cache<QStringList, ToolChain::MacroInspectionReport, 64>>; using MacrosCache = std::shared_ptr<Cache<QStringList, Toolchain::MacroInspectionReport, 64>>;
using HeaderPathsCache = std::shared_ptr<Cache<QPair<Utils::Environment, QStringList>, HeaderPaths>>; using HeaderPathsCache = std::shared_ptr<Cache<QPair<Utils::Environment, QStringList>, HeaderPaths>>;
// A MacroInspectionRunner is created in the ui thread and runs in another thread. // A MacroInspectionRunner is created in the ui thread and runs in another thread.
@@ -135,10 +135,10 @@ public:
virtual QList<Utils::OutputLineParser *> createOutputParsers() const = 0; virtual QList<Utils::OutputLineParser *> createOutputParsers() const = 0;
virtual bool operator ==(const ToolChain &) const; virtual bool operator ==(const Toolchain &) const;
virtual std::unique_ptr<ToolchainConfigWidget> createConfigurationWidget() = 0; virtual std::unique_ptr<ToolchainConfigWidget> createConfigurationWidget() = 0;
ToolChain *clone() const; Toolchain *clone() const;
// Used by the toolchainmanager to save user-generated tool chains. // Used by the toolchainmanager to save user-generated tool chains.
// Make sure to call this function when deriving! // Make sure to call this function when deriving!
@@ -164,7 +164,7 @@ public:
virtual GccToolChain *asGccToolChain() { return nullptr; } virtual GccToolChain *asGccToolChain() { return nullptr; }
protected: protected:
explicit ToolChain(Utils::Id typeId); explicit Toolchain(Utils::Id typeId);
void setTypeDisplayName(const QString &typeName); void setTypeDisplayName(const QString &typeName);
@@ -191,8 +191,8 @@ protected:
PossiblyConcatenatedFlag possiblyConcatenated); PossiblyConcatenatedFlag possiblyConcatenated);
private: private:
ToolChain(const ToolChain &) = delete; Toolchain(const Toolchain &) = delete;
ToolChain &operator=(const ToolChain &) = delete; Toolchain &operator=(const Toolchain &) = delete;
const std::unique_ptr<Internal::ToolChainPrivate> d; const std::unique_ptr<Internal::ToolChainPrivate> d;
@@ -200,7 +200,7 @@ private:
friend class ToolchainFactory; friend class ToolchainFactory;
}; };
using Toolchains = QList<ToolChain *>; using Toolchains = QList<Toolchain *>;
class PROJECTEXPLORER_EXPORT BadToolchain class PROJECTEXPLORER_EXPORT BadToolchain
{ {
@@ -259,15 +259,15 @@ public:
virtual Toolchains detectForImport(const ToolChainDescription &tcd) const; virtual Toolchains detectForImport(const ToolChainDescription &tcd) const;
virtual bool canCreate() const; virtual bool canCreate() const;
ToolChain *create() const; Toolchain *create() const;
ToolChain *restore(const Utils::Store &data); Toolchain *restore(const Utils::Store &data);
static QByteArray idFromMap(const Utils::Store &data); static QByteArray idFromMap(const Utils::Store &data);
static Utils::Id typeIdFromMap(const Utils::Store &data); static Utils::Id typeIdFromMap(const Utils::Store &data);
static void autoDetectionToMap(Utils::Store &data, bool detected); static void autoDetectionToMap(Utils::Store &data, bool detected);
static ToolChain *createToolChain(Utils::Id toolChainType); static Toolchain *createToolChain(Utils::Id toolChainType);
QList<Utils::Id> supportedLanguages() const; QList<Utils::Id> supportedLanguages() const;
@@ -278,7 +278,7 @@ protected:
void setSupportedToolChainType(const Utils::Id &supportedToolChainType); void setSupportedToolChainType(const Utils::Id &supportedToolChainType);
void setSupportedLanguages(const QList<Utils::Id> &supportedLanguages); void setSupportedLanguages(const QList<Utils::Id> &supportedLanguages);
void setSupportsAllLanguages(bool supportsAllLanguages); void setSupportsAllLanguages(bool supportsAllLanguages);
using ToolChainConstructor = std::function<ToolChain *()>; using ToolChainConstructor = std::function<Toolchain *()>;
void setToolchainConstructor(const ToolChainConstructor &constructor); void setToolchainConstructor(const ToolChainConstructor &constructor);
ToolChainConstructor toolchainConstructor() const; ToolChainConstructor toolchainConstructor() const;

View File

@@ -20,7 +20,7 @@ using namespace Utils;
namespace ProjectExplorer { namespace ProjectExplorer {
ToolchainConfigWidget::ToolchainConfigWidget(ToolChain *tc) : ToolchainConfigWidget::ToolchainConfigWidget(Toolchain *tc) :
m_toolChain(tc) m_toolChain(tc)
{ {
Q_ASSERT(tc); Q_ASSERT(tc);
@@ -66,7 +66,7 @@ bool ToolchainConfigWidget::isDirty() const
return m_nameLineEdit->text() != m_toolChain->displayName() || isDirtyImpl(); return m_nameLineEdit->text() != m_toolChain->displayName() || isDirtyImpl();
} }
ToolChain *ToolchainConfigWidget::toolChain() const Toolchain *ToolchainConfigWidget::toolChain() const
{ {
return m_toolChain; return m_toolChain;
} }

View File

@@ -15,7 +15,7 @@ QT_END_NAMESPACE
namespace ProjectExplorer { namespace ProjectExplorer {
class ToolChain; class Toolchain;
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
// ToolChainConfigWidget // ToolChainConfigWidget
@@ -26,9 +26,9 @@ class PROJECTEXPLORER_EXPORT ToolchainConfigWidget : public QScrollArea
Q_OBJECT Q_OBJECT
public: public:
explicit ToolchainConfigWidget(ToolChain *tc); explicit ToolchainConfigWidget(Toolchain *tc);
ToolChain *toolChain() const; Toolchain *toolChain() const;
void apply(); void apply();
void discard(); void discard();
@@ -53,7 +53,7 @@ protected:
QLineEdit *m_nameLineEdit; QLineEdit *m_nameLineEdit;
private: private:
ToolChain *m_toolChain; Toolchain *m_toolChain;
QLabel *m_errorLabel = nullptr; QLabel *m_errorLabel = nullptr;
}; };

View File

@@ -106,7 +106,7 @@ void ToolChainManager::restoreToolChains()
QTC_ASSERT(!d->m_accessor, return); QTC_ASSERT(!d->m_accessor, return);
d->m_accessor = std::make_unique<Internal::ToolChainSettingsAccessor>(); d->m_accessor = std::make_unique<Internal::ToolChainSettingsAccessor>();
for (ToolChain *tc : d->m_accessor->restoreToolChains(Core::ICore::dialogParent())) for (Toolchain *tc : d->m_accessor->restoreToolChains(Core::ICore::dialogParent()))
registerToolChain(tc); registerToolChain(tc);
d->m_loaded = true; d->m_loaded = true;
@@ -131,13 +131,13 @@ const Toolchains &ToolChainManager::toolchains()
return d->m_toolChains; return d->m_toolChains;
} }
Toolchains ToolChainManager::toolchains(const ToolChain::Predicate &predicate) Toolchains ToolChainManager::toolchains(const Toolchain::Predicate &predicate)
{ {
QTC_ASSERT(predicate, return {}); QTC_ASSERT(predicate, return {});
return Utils::filtered(d->m_toolChains, predicate); return Utils::filtered(d->m_toolChains, predicate);
} }
ToolChain *ToolChainManager::toolChain(const ToolChain::Predicate &predicate) Toolchain *ToolChainManager::toolChain(const Toolchain::Predicate &predicate)
{ {
QTC_CHECK(d->m_loaded); QTC_CHECK(d->m_loaded);
return Utils::findOrDefault(d->m_toolChains, predicate); return Utils::findOrDefault(d->m_toolChains, predicate);
@@ -147,7 +147,7 @@ Toolchains ToolChainManager::findToolChains(const Abi &abi)
{ {
QTC_CHECK(d->m_loaded); QTC_CHECK(d->m_loaded);
Toolchains result; Toolchains result;
for (ToolChain *tc : std::as_const(d->m_toolChains)) { for (Toolchain *tc : std::as_const(d->m_toolChains)) {
bool isCompatible = Utils::anyOf(tc->supportedAbis(), [abi](const Abi &supportedAbi) { bool isCompatible = Utils::anyOf(tc->supportedAbis(), [abi](const Abi &supportedAbi) {
return supportedAbi.isCompatibleWith(abi); return supportedAbi.isCompatibleWith(abi);
}); });
@@ -158,13 +158,13 @@ Toolchains ToolChainManager::findToolChains(const Abi &abi)
return result; return result;
} }
ToolChain *ToolChainManager::findToolChain(const QByteArray &id) Toolchain *ToolChainManager::findToolChain(const QByteArray &id)
{ {
QTC_CHECK(d->m_loaded); QTC_CHECK(d->m_loaded);
if (id.isEmpty()) if (id.isEmpty())
return nullptr; return nullptr;
ToolChain *tc = Utils::findOrDefault(d->m_toolChains, Utils::equal(&ToolChain::id, id)); Toolchain *tc = Utils::findOrDefault(d->m_toolChains, Utils::equal(&Toolchain::id, id));
// Compatibility with versions 3.5 and earlier: // Compatibility with versions 3.5 and earlier:
if (!tc) { if (!tc) {
@@ -174,7 +174,7 @@ ToolChain *ToolChainManager::findToolChain(const QByteArray &id)
const QByteArray shortId = id.mid(pos + 1); const QByteArray shortId = id.mid(pos + 1);
tc = Utils::findOrDefault(d->m_toolChains, Utils::equal(&ToolChain::id, shortId)); tc = Utils::findOrDefault(d->m_toolChains, Utils::equal(&Toolchain::id, shortId));
} }
return tc; return tc;
} }
@@ -184,14 +184,14 @@ bool ToolChainManager::isLoaded()
return d->m_loaded; return d->m_loaded;
} }
void ToolChainManager::notifyAboutUpdate(ToolChain *tc) void ToolChainManager::notifyAboutUpdate(Toolchain *tc)
{ {
if (!tc || !d->m_toolChains.contains(tc)) if (!tc || !d->m_toolChains.contains(tc))
return; return;
emit m_instance->toolChainUpdated(tc); emit m_instance->toolChainUpdated(tc);
} }
bool ToolChainManager::registerToolChain(ToolChain *tc) bool ToolChainManager::registerToolChain(Toolchain *tc)
{ {
QTC_ASSERT(tc, return false); QTC_ASSERT(tc, return false);
QTC_ASSERT(isLanguageSupported(tc->language()), QTC_ASSERT(isLanguageSupported(tc->language()),
@@ -203,7 +203,7 @@ bool ToolChainManager::registerToolChain(ToolChain *tc)
if (d->m_toolChains.contains(tc)) if (d->m_toolChains.contains(tc))
return true; return true;
for (const ToolChain *current : std::as_const(d->m_toolChains)) { for (const Toolchain *current : std::as_const(d->m_toolChains)) {
if (*tc == *current && !tc->isAutoDetected()) if (*tc == *current && !tc->isAutoDetected())
return false; return false;
QTC_ASSERT(current->id() != tc->id(), return false); QTC_ASSERT(current->id() != tc->id(), return false);
@@ -214,7 +214,7 @@ bool ToolChainManager::registerToolChain(ToolChain *tc)
return true; return true;
} }
void ToolChainManager::deregisterToolChain(ToolChain *tc) void ToolChainManager::deregisterToolChain(Toolchain *tc)
{ {
QTC_CHECK(d->m_loaded); QTC_CHECK(d->m_loaded);
if (!tc || !d->m_toolChains.contains(tc)) if (!tc || !d->m_toolChains.contains(tc))

View File

@@ -40,16 +40,16 @@ public:
~ToolChainManager() override; ~ToolChainManager() override;
static const Toolchains &toolchains(); static const Toolchains &toolchains();
static Toolchains toolchains(const ToolChain::Predicate &predicate); static Toolchains toolchains(const Toolchain::Predicate &predicate);
static ToolChain *toolChain(const ToolChain::Predicate &predicate); static Toolchain *toolChain(const Toolchain::Predicate &predicate);
static QList<ToolChain *> findToolChains(const Abi &abi); static QList<Toolchain *> findToolChains(const Abi &abi);
static ToolChain *findToolChain(const QByteArray &id); static Toolchain *findToolChain(const QByteArray &id);
static bool isLoaded(); static bool isLoaded();
static bool registerToolChain(ToolChain *tc); static bool registerToolChain(Toolchain *tc);
static void deregisterToolChain(ToolChain *tc); static void deregisterToolChain(Toolchain *tc);
static QList<Utils::Id> allLanguages(); static QList<Utils::Id> allLanguages();
static bool registerLanguage(const Utils::Id &language, const QString &displayName); static bool registerLanguage(const Utils::Id &language, const QString &displayName);
@@ -68,11 +68,11 @@ public:
void saveToolChains(); void saveToolChains();
signals: signals:
void toolChainAdded(ProjectExplorer::ToolChain *); void toolChainAdded(ProjectExplorer::Toolchain *);
// Tool chain is still valid when this call happens! // Tool chain is still valid when this call happens!
void toolChainRemoved(ProjectExplorer::ToolChain *); void toolChainRemoved(ProjectExplorer::Toolchain *);
// Tool chain was updated. // Tool chain was updated.
void toolChainUpdated(ProjectExplorer::ToolChain *); void toolChainUpdated(ProjectExplorer::Toolchain *);
// Something changed. // Something changed.
void toolChainsChanged(); void toolChainsChanged();
// //
@@ -84,10 +84,10 @@ private:
// Make sure the this is only called after all toolchain factories are registered! // Make sure the this is only called after all toolchain factories are registered!
static void restoreToolChains(); static void restoreToolChains();
static void notifyAboutUpdate(ToolChain *); static void notifyAboutUpdate(Toolchain *);
friend class ProjectExplorerPlugin; // for constructor friend class ProjectExplorerPlugin; // for constructor
friend class ToolChain; friend class Toolchain;
}; };
} // namespace ProjectExplorer } // namespace ProjectExplorer

View File

@@ -48,7 +48,7 @@ namespace Internal {
class ToolChainTreeItem : public TreeItem class ToolChainTreeItem : public TreeItem
{ {
public: public:
ToolChainTreeItem(QStackedWidget *parentWidget, ToolChain *tc, bool c) : ToolChainTreeItem(QStackedWidget *parentWidget, Toolchain *tc, bool c) :
toolChain(tc), changed(c), m_parentWidget(parentWidget) toolChain(tc), changed(c), m_parentWidget(parentWidget)
{} {}
@@ -100,7 +100,7 @@ public:
return m_widget; return m_widget;
} }
ToolChain *toolChain; Toolchain *toolChain;
bool changed; bool changed;
private: private:
@@ -253,7 +253,7 @@ public:
m_widgetStack = new QStackedWidget; m_widgetStack = new QStackedWidget;
m_container->setWidget(m_widgetStack); m_container->setWidget(m_widgetStack);
for (ToolChain *tc : ToolChainManager::toolchains()) for (Toolchain *tc : ToolChainManager::toolchains())
insertToolChain(tc); insertToolChain(tc);
auto buttonLayout = new QVBoxLayout; auto buttonLayout = new QVBoxLayout;
@@ -300,11 +300,11 @@ public:
ToolChainTreeItem *currentTreeItem(); ToolChainTreeItem *currentTreeItem();
void markForRemoval(ToolChainTreeItem *item); void markForRemoval(ToolChainTreeItem *item);
ToolChainTreeItem *insertToolChain(ProjectExplorer::ToolChain *tc, bool changed = false); // Insert directly into model ToolChainTreeItem *insertToolChain(ProjectExplorer::Toolchain *tc, bool changed = false); // Insert directly into model
void addToolChain(ProjectExplorer::ToolChain *); void addToolChain(ProjectExplorer::Toolchain *);
void removeToolChain(ProjectExplorer::ToolChain *); void removeToolChain(ProjectExplorer::Toolchain *);
StaticTreeItem *parentForToolChain(ToolChain *tc); StaticTreeItem *parentForToolChain(Toolchain *tc);
QAction *createAction(const QString &name, ToolchainFactory *factory, Utils::Id language) QAction *createAction(const QString &name, ToolchainFactory *factory, Utils::Id language)
{ {
auto action = new QAction(name, nullptr); auto action = new QAction(name, nullptr);
@@ -352,7 +352,7 @@ void ToolChainOptionsWidget::markForRemoval(ToolChainTreeItem *item)
} }
} }
ToolChainTreeItem *ToolChainOptionsWidget::insertToolChain(ToolChain *tc, bool changed) ToolChainTreeItem *ToolChainOptionsWidget::insertToolChain(Toolchain *tc, bool changed)
{ {
StaticTreeItem *parent = parentForToolChain(tc); StaticTreeItem *parent = parentForToolChain(tc);
auto item = new ToolChainTreeItem(m_widgetStack, tc, changed); auto item = new ToolChainTreeItem(m_widgetStack, tc, changed);
@@ -361,7 +361,7 @@ ToolChainTreeItem *ToolChainOptionsWidget::insertToolChain(ToolChain *tc, bool c
return item; return item;
} }
void ToolChainOptionsWidget::addToolChain(ToolChain *tc) void ToolChainOptionsWidget::addToolChain(Toolchain *tc)
{ {
if (Utils::eraseOne(m_toAddList, [tc](const ToolChainTreeItem *item) { if (Utils::eraseOne(m_toAddList, [tc](const ToolChainTreeItem *item) {
return item->toolChain == tc; })) { return item->toolChain == tc; })) {
@@ -373,7 +373,7 @@ void ToolChainOptionsWidget::addToolChain(ToolChain *tc)
updateState(); updateState();
} }
void ToolChainOptionsWidget::removeToolChain(ToolChain *tc) void ToolChainOptionsWidget::removeToolChain(Toolchain *tc)
{ {
if (auto it = std::find_if(m_toRemoveList.begin(), m_toRemoveList.end(), if (auto it = std::find_if(m_toRemoveList.begin(), m_toRemoveList.end(),
[tc](const ToolChainTreeItem *item) { return item->toolChain == tc; }); [tc](const ToolChainTreeItem *item) { return item->toolChain == tc; });
@@ -392,7 +392,7 @@ void ToolChainOptionsWidget::removeToolChain(ToolChain *tc)
updateState(); updateState();
} }
StaticTreeItem *ToolChainOptionsWidget::parentForToolChain(ToolChain *tc) StaticTreeItem *ToolChainOptionsWidget::parentForToolChain(Toolchain *tc)
{ {
QPair<StaticTreeItem *, StaticTreeItem *> nodes = m_languageMap.value(tc->language()); QPair<StaticTreeItem *, StaticTreeItem *> nodes = m_languageMap.value(tc->language());
return tc->isAutoDetected() ? nodes.first : nodes.second; return tc->isAutoDetected() ? nodes.first : nodes.second;
@@ -412,11 +412,11 @@ void ToolChainOptionsWidget::redetectToolchains()
knownTcs << tcItem->toolChain; knownTcs << tcItem->toolChain;
}); });
Toolchains toAdd; Toolchains toAdd;
QSet<ToolChain *> toDelete; QSet<Toolchain *> toDelete;
ToolChainManager::resetBadToolchains(); ToolChainManager::resetBadToolchains();
for (ToolchainFactory *f : ToolchainFactory::allToolchainFactories()) { for (ToolchainFactory *f : ToolchainFactory::allToolchainFactories()) {
const ToolchainDetector detector(knownTcs, DeviceManager::defaultDesktopDevice(), {}); // FIXME: Pass search paths const ToolchainDetector detector(knownTcs, DeviceManager::defaultDesktopDevice(), {}); // FIXME: Pass search paths
for (ToolChain * const tc : f->autoDetect(detector)) { for (Toolchain * const tc : f->autoDetect(detector)) {
if (knownTcs.contains(tc) || toDelete.contains(tc)) if (knownTcs.contains(tc) || toDelete.contains(tc))
continue; continue;
const auto matchItem = [tc](const ToolChainTreeItem *item) { const auto matchItem = [tc](const ToolChainTreeItem *item) {
@@ -434,7 +434,7 @@ void ToolChainOptionsWidget::redetectToolchains()
} }
for (ToolChainTreeItem * const tcItem : std::as_const(itemsToRemove)) for (ToolChainTreeItem * const tcItem : std::as_const(itemsToRemove))
markForRemoval(tcItem); markForRemoval(tcItem);
for (ToolChain * const newTc : std::as_const(toAdd)) for (Toolchain * const newTc : std::as_const(toAdd))
m_toAddList.append(insertToolChain(newTc, true)); m_toAddList.append(insertToolChain(newTc, true));
qDeleteAll(toDelete); qDeleteAll(toDelete);
} }
@@ -514,11 +514,11 @@ void ToolChainOptionsWidget::createToolChain(ToolchainFactory *factory, const Ut
QTC_ASSERT(factory->canCreate(), return); QTC_ASSERT(factory->canCreate(), return);
QTC_ASSERT(language.isValid(), return); QTC_ASSERT(language.isValid(), return);
ToolChain *tc = factory->create(); Toolchain *tc = factory->create();
if (!tc) if (!tc)
return; return;
tc->setDetection(ToolChain::ManualDetection); tc->setDetection(Toolchain::ManualDetection);
tc->setLanguage(language); tc->setLanguage(language);
auto item = insertToolChain(tc, true); auto item = insertToolChain(tc, true);
@@ -533,11 +533,11 @@ void ToolChainOptionsWidget::cloneToolChain()
if (!current) if (!current)
return; return;
ToolChain *tc = current->toolChain->clone(); Toolchain *tc = current->toolChain->clone();
if (!tc) if (!tc)
return; return;
tc->setDetection(ToolChain::ManualDetection); tc->setDetection(Toolchain::ManualDetection);
tc->setDisplayName(Tr::tr("Clone of %1").arg(current->toolChain->displayName())); tc->setDisplayName(Tr::tr("Clone of %1").arg(current->toolChain->displayName()));
auto item = insertToolChain(tc, true); auto item = insertToolChain(tc, true);
@@ -551,7 +551,7 @@ void ToolChainOptionsWidget::updateState()
bool canCopy = false; bool canCopy = false;
bool canDelete = false; bool canDelete = false;
if (ToolChainTreeItem *item = currentTreeItem()) { if (ToolChainTreeItem *item = currentTreeItem()) {
ToolChain *tc = item->toolChain; Toolchain *tc = item->toolChain;
canCopy = tc->isValid(); canCopy = tc->isValid();
canDelete = !tc->isSdkProvided(); canDelete = !tc->isSdkProvided();
} }

View File

@@ -68,14 +68,14 @@ static Toolchains autoDetectToolChains(const ToolchainDetector &detector)
} }
// Remove invalid toolchains that might have sneaked in. // Remove invalid toolchains that might have sneaked in.
return Utils::filtered(result, [](const ToolChain *tc) { return tc->isValid(); }); return Utils::filtered(result, [](const Toolchain *tc) { return tc->isValid(); });
} }
static Toolchains makeUniqueByEqual(const Toolchains &a) static Toolchains makeUniqueByEqual(const Toolchains &a)
{ {
Toolchains result; Toolchains result;
for (ToolChain *tc : a) { for (Toolchain *tc : a) {
if (!Utils::contains(result, [tc](ToolChain *rtc) { return *tc == *rtc; })) if (!Utils::contains(result, [tc](Toolchain *rtc) { return *tc == *rtc; }))
result.append(tc); result.append(tc);
} }
return result; return result;
@@ -88,26 +88,26 @@ static Toolchains makeUniqueByPointerEqual(const Toolchains &a)
static Toolchains subtractById(const Toolchains &a, const Toolchains &b) static Toolchains subtractById(const Toolchains &a, const Toolchains &b)
{ {
return Utils::filtered(a, [&b](ToolChain *atc) { return Utils::filtered(a, [&b](Toolchain *atc) {
return !Utils::anyOf(b, Utils::equal(&ToolChain::id, atc->id())); return !Utils::anyOf(b, Utils::equal(&Toolchain::id, atc->id()));
}); });
} }
static bool containsByEqual(const Toolchains &a, const ToolChain *atc) static bool containsByEqual(const Toolchains &a, const Toolchain *atc)
{ {
return Utils::anyOf(a, [atc](ToolChain *btc) { return *atc == *btc; }); return Utils::anyOf(a, [atc](Toolchain *btc) { return *atc == *btc; });
} }
static Toolchains subtractByEqual(const Toolchains &a, const Toolchains &b) static Toolchains subtractByEqual(const Toolchains &a, const Toolchains &b)
{ {
return Utils::filtered(a, [&b](ToolChain *atc) { return Utils::filtered(a, [&b](Toolchain *atc) {
return !Utils::anyOf(b, [atc](ToolChain *btc) { return *atc == *btc; }); return !Utils::anyOf(b, [atc](Toolchain *btc) { return *atc == *btc; });
}); });
} }
static Toolchains subtractByPointerEqual(const Toolchains &a, const Toolchains &b) static Toolchains subtractByPointerEqual(const Toolchains &a, const Toolchains &b)
{ {
return Utils::filtered(a, [&b](ToolChain *atc) { return !b.contains(atc); }); return Utils::filtered(a, [&b](Toolchain *atc) { return !b.contains(atc); });
} }
static Toolchains stabilizeOrder(const Toolchains &toRegister, static Toolchains stabilizeOrder(const Toolchains &toRegister,
@@ -121,7 +121,7 @@ static Toolchains stabilizeOrder(const Toolchains &toRegister,
for (int i = 0; i < userFileTcs.count(); ++i) { for (int i = 0; i < userFileTcs.count(); ++i) {
const QByteArray userId = userFileTcs.at(i)->id(); const QByteArray userId = userFileTcs.at(i)->id();
const int handlePos = Utils::indexOf(toHandle, const int handlePos = Utils::indexOf(toHandle,
[&userId](const ToolChain *htc) { return htc->id() == userId; }); [&userId](const Toolchain *htc) { return htc->id() == userId; });
if (handlePos < 0) if (handlePos < 0)
continue; continue;
@@ -140,7 +140,7 @@ static ToolChainOperations mergeToolChainLists(const Toolchains &systemFileTcs,
Toolchains manualUserFileTcs; Toolchains manualUserFileTcs;
Toolchains autodetectedUserFileTcs; Toolchains autodetectedUserFileTcs;
std::tie(autodetectedUserFileTcs, manualUserFileTcs) std::tie(autodetectedUserFileTcs, manualUserFileTcs)
= Utils::partition(uniqueUserFileTcs, &ToolChain::isAutoDetected); = Utils::partition(uniqueUserFileTcs, &Toolchain::isAutoDetected);
const Toolchains autodetectedUserTcs = subtractById(autodetectedUserFileTcs, systemFileTcs); const Toolchains autodetectedUserTcs = subtractById(autodetectedUserFileTcs, systemFileTcs);
// Calculate a set of Tcs that were detected before (and saved to userFile) and that // Calculate a set of Tcs that were detected before (and saved to userFile) and that
@@ -149,14 +149,14 @@ static ToolChainOperations mergeToolChainLists(const Toolchains &systemFileTcs,
Toolchains notRedetectedUserTcs; Toolchains notRedetectedUserTcs;
std::tie(redetectedUserTcs, notRedetectedUserTcs) std::tie(redetectedUserTcs, notRedetectedUserTcs)
= Utils::partition(autodetectedUserTcs, = Utils::partition(autodetectedUserTcs,
[&autodetectedTcs](ToolChain *tc) { return containsByEqual(autodetectedTcs, tc); }); [&autodetectedTcs](Toolchain *tc) { return containsByEqual(autodetectedTcs, tc); });
// Remove redetected tcs from autodetectedTcs: // Remove redetected tcs from autodetectedTcs:
const Toolchains newlyAutodetectedTcs const Toolchains newlyAutodetectedTcs
= subtractByEqual(autodetectedTcs, redetectedUserTcs); = subtractByEqual(autodetectedTcs, redetectedUserTcs);
const Toolchains notRedetectedButValidUserTcs const Toolchains notRedetectedButValidUserTcs
= Utils::filtered(notRedetectedUserTcs, &ToolChain::isValid); = Utils::filtered(notRedetectedUserTcs, &Toolchain::isValid);
ToolChainOperations result; ToolChainOperations result;
result.toDemote = notRedetectedButValidUserTcs; result.toDemote = notRedetectedButValidUserTcs;
@@ -188,15 +188,15 @@ Toolchains ToolChainSettingsAccessor::restoreToolChains(QWidget *parent) const
// read all tool chains from SDK // read all tool chains from SDK
const Toolchains systemFileTcs = toolChains( const Toolchains systemFileTcs = toolChains(
restoreSettings(Core::ICore::installerResourcePath(TOOLCHAIN_FILENAME), parent)); restoreSettings(Core::ICore::installerResourcePath(TOOLCHAIN_FILENAME), parent));
for (ToolChain * const systemTc : systemFileTcs) for (Toolchain * const systemTc : systemFileTcs)
systemTc->setDetection(ToolChain::AutoDetectionFromSdk); systemTc->setDetection(Toolchain::AutoDetectionFromSdk);
// read all tool chains from user file. // read all tool chains from user file.
const Toolchains userFileTcs = toolChains(restoreSettings(parent)); const Toolchains userFileTcs = toolChains(restoreSettings(parent));
// Autodetect: Pass autodetected toolchains from user file so the information can be reused: // Autodetect: Pass autodetected toolchains from user file so the information can be reused:
const Toolchains autodetectedUserFileTcs const Toolchains autodetectedUserFileTcs
= Utils::filtered(userFileTcs, &ToolChain::isAutoDetected); = Utils::filtered(userFileTcs, &Toolchain::isAutoDetected);
// Autodect from system paths on the desktop device. // Autodect from system paths on the desktop device.
// The restriction is intentional to keep startup and automatic validation a limited effort // The restriction is intentional to keep startup and automatic validation a limited effort
@@ -207,10 +207,10 @@ Toolchains ToolChainSettingsAccessor::restoreToolChains(QWidget *parent) const
const ToolChainOperations ops = mergeToolChainLists(systemFileTcs, userFileTcs, autodetectedTcs); const ToolChainOperations ops = mergeToolChainLists(systemFileTcs, userFileTcs, autodetectedTcs);
// Process ops: // Process ops:
for (ToolChain *tc : ops.toDemote) { for (Toolchain *tc : ops.toDemote) {
// FIXME: We currently only demote local toolchains, as they are not redetected. // FIXME: We currently only demote local toolchains, as they are not redetected.
if (tc->detectionSource().isEmpty()) if (tc->detectionSource().isEmpty())
tc->setDetection(ToolChain::ManualDetection); tc->setDetection(Toolchain::ManualDetection);
} }
qDeleteAll(ops.toDelete); qDeleteAll(ops.toDelete);
@@ -223,7 +223,7 @@ void ToolChainSettingsAccessor::saveToolChains(const Toolchains &toolchains, QWi
Store data; Store data;
int count = 0; int count = 0;
for (const ToolChain *tc : toolchains) { for (const Toolchain *tc : toolchains) {
if (!tc || (!tc->isValid() && tc->isAutoDetected())) if (!tc || (!tc->isValid() && tc->isAutoDetected()))
continue; continue;
Store tmp; Store tmp;
@@ -258,7 +258,7 @@ Toolchains ToolChainSettingsAccessor::toolChains(const Store &data) const
if (tcType.isValid()) { if (tcType.isValid()) {
for (ToolchainFactory *f : factories) { for (ToolchainFactory *f : factories) {
if (f->supportedToolChainType() == tcType) { if (f->supportedToolChainType() == tcType) {
if (ToolChain *tc = f->restore(tcMap)) { if (Toolchain *tc = f->restore(tcMap)) {
result.append(tc); result.append(tc);
restored = true; restored = true;
break; break;
@@ -293,11 +293,11 @@ const char TestTokenKey[] = "TestTokenKey";
const char TestToolChainType[] = "TestToolChainType"; const char TestToolChainType[] = "TestToolChainType";
class TTC : public ToolChain class TTC : public Toolchain
{ {
public: public:
TTC(const QByteArray &t = {}, bool v = true) : TTC(const QByteArray &t = {}, bool v = true) :
ToolChain(TestToolChainType), Toolchain(TestToolChainType),
token(t), token(t),
m_valid(v) m_valid(v)
{ {
@@ -320,21 +320,21 @@ public:
FilePath makeCommand(const Environment &) const override { return "make"; } FilePath makeCommand(const Environment &) const override { return "make"; }
QList<OutputLineParser *> createOutputParsers() const override { return {}; } QList<OutputLineParser *> createOutputParsers() const override { return {}; }
std::unique_ptr<ToolchainConfigWidget> createConfigurationWidget() override { return nullptr; } std::unique_ptr<ToolchainConfigWidget> createConfigurationWidget() override { return nullptr; }
bool operator ==(const ToolChain &other) const override { bool operator ==(const Toolchain &other) const override {
if (!ToolChain::operator==(other)) if (!Toolchain::operator==(other))
return false; return false;
return static_cast<const TTC *>(&other)->token == token; return static_cast<const TTC *>(&other)->token == token;
} }
void fromMap(const Store &data) final void fromMap(const Store &data) final
{ {
ToolChain::fromMap(data); Toolchain::fromMap(data);
token = data.value(TestTokenKey).toByteArray(); token = data.value(TestTokenKey).toByteArray();
} }
void toMap(Store &data) const final void toMap(Store &data) const final
{ {
ToolChain::toMap(data); Toolchain::toMap(data);
data[TestTokenKey] = token; data[TestTokenKey] = token;
} }
@@ -350,7 +350,7 @@ QList<TTC *> TTC::m_toolChains;
} // namespace ProjectExplorer } // namespace ProjectExplorer
Q_DECLARE_METATYPE(ProjectExplorer::ToolChain *) Q_DECLARE_METATYPE(ProjectExplorer::Toolchain *)
namespace ProjectExplorer { namespace ProjectExplorer {
@@ -374,43 +374,43 @@ void ProjectExplorerPlugin::testToolChainMerging_data()
QTest::addColumn<Toolchains>("toRegister"); QTest::addColumn<Toolchains>("toRegister");
TTC *system1 = nullptr; TTC *system1 = nullptr;
ToolChain *system1c = nullptr; Toolchain *system1c = nullptr;
TTC *system2 = nullptr; TTC *system2 = nullptr;
TTC *system3i = nullptr; TTC *system3i = nullptr;
TTC *user1 = nullptr; TTC *user1 = nullptr;
ToolChain *user1c = nullptr; Toolchain *user1c = nullptr;
TTC *user3i = nullptr; TTC *user3i = nullptr;
TTC *user2 = nullptr; TTC *user2 = nullptr;
TTC *auto1 = nullptr; TTC *auto1 = nullptr;
ToolChain *auto1c = nullptr; Toolchain *auto1c = nullptr;
TTC *auto1_2 = nullptr; TTC *auto1_2 = nullptr;
TTC *auto2 = nullptr; TTC *auto2 = nullptr;
TTC *auto3i = nullptr; TTC *auto3i = nullptr;
if (!TTC::hasToolChains()) { if (!TTC::hasToolChains()) {
system1 = new TTC("system1"); system1 = new TTC("system1");
system1->setDetection(ToolChain::AutoDetection); system1->setDetection(Toolchain::AutoDetection);
system1c = system1->clone(); Q_UNUSED(system1c) system1c = system1->clone(); Q_UNUSED(system1c)
system2 = new TTC("system2"); system2 = new TTC("system2");
system2->setDetection(ToolChain::AutoDetection); system2->setDetection(Toolchain::AutoDetection);
system3i = new TTC("system3", false); system3i = new TTC("system3", false);
system3i->setDetection(ToolChain::AutoDetection); system3i->setDetection(Toolchain::AutoDetection);
user1 = new TTC("user1"); user1 = new TTC("user1");
user1->setDetection(ToolChain::ManualDetection); user1->setDetection(Toolchain::ManualDetection);
user1c = user1->clone(); Q_UNUSED(user1c) user1c = user1->clone(); Q_UNUSED(user1c)
user2 = new TTC("user2"); user2 = new TTC("user2");
user2->setDetection(ToolChain::ManualDetection); user2->setDetection(Toolchain::ManualDetection);
user3i = new TTC("user3", false); user3i = new TTC("user3", false);
user3i->setDetection(ToolChain::ManualDetection); user3i->setDetection(Toolchain::ManualDetection);
auto1 = new TTC("auto1"); auto1 = new TTC("auto1");
auto1->setDetection(ToolChain::AutoDetection); auto1->setDetection(Toolchain::AutoDetection);
auto1c = auto1->clone(); auto1c = auto1->clone();
auto1_2 = new TTC("auto1"); auto1_2 = new TTC("auto1");
auto1_2->setDetection(ToolChain::AutoDetection); auto1_2->setDetection(Toolchain::AutoDetection);
auto2 = new TTC("auto2"); auto2 = new TTC("auto2");
auto2->setDetection(ToolChain::AutoDetection); auto2->setDetection(Toolchain::AutoDetection);
auto3i = new TTC("auto3", false); auto3i = new TTC("auto3", false);
auto3i->setDetection(ToolChain::AutoDetection); auto3i->setDetection(Toolchain::AutoDetection);
} }
QTest::newRow("no toolchains") QTest::newRow("no toolchains")
@@ -468,18 +468,18 @@ void ProjectExplorerPlugin::testToolChainMerging()
Internal::ToolChainOperations ops = Internal::mergeToolChainLists(system, user, autodetect); Internal::ToolChainOperations ops = Internal::mergeToolChainLists(system, user, autodetect);
QSet<ToolChain *> expToRegister = Utils::toSet(toRegister); QSet<Toolchain *> expToRegister = Utils::toSet(toRegister);
QSet<ToolChain *> expToDemote = Utils::toSet(toDemote); QSet<Toolchain *> expToDemote = Utils::toSet(toDemote);
QSet<ToolChain *> actToRegister = Utils::toSet(ops.toRegister); QSet<Toolchain *> actToRegister = Utils::toSet(ops.toRegister);
QSet<ToolChain *> actToDemote = Utils::toSet(ops.toDemote); QSet<Toolchain *> actToDemote = Utils::toSet(ops.toDemote);
QSet<ToolChain *> actToDelete = Utils::toSet(ops.toDelete); QSet<Toolchain *> actToDelete = Utils::toSet(ops.toDelete);
QCOMPARE(actToRegister.count(), ops.toRegister.count()); // no dups! QCOMPARE(actToRegister.count(), ops.toRegister.count()); // no dups!
QCOMPARE(actToDemote.count(), ops.toDemote.count()); // no dups! QCOMPARE(actToDemote.count(), ops.toDemote.count()); // no dups!
QCOMPARE(actToDelete.count(), ops.toDelete.count()); // no dups! QCOMPARE(actToDelete.count(), ops.toDelete.count()); // no dups!
QSet<ToolChain *> tmp = actToRegister; QSet<Toolchain *> tmp = actToRegister;
tmp.intersect(actToDemote); tmp.intersect(actToDemote);
QCOMPARE(tmp, actToDemote); // all toDemote are in toRegister QCOMPARE(tmp, actToDemote); // all toDemote are in toRegister

View File

@@ -9,7 +9,7 @@
namespace ProjectExplorer { namespace ProjectExplorer {
class ToolChain; class Toolchain;
namespace Internal { namespace Internal {
@@ -18,12 +18,12 @@ class ToolChainSettingsAccessor : public Utils::UpgradingSettingsAccessor
public: public:
ToolChainSettingsAccessor(); ToolChainSettingsAccessor();
QList<ToolChain *> restoreToolChains(QWidget *parent) const; QList<Toolchain *> restoreToolChains(QWidget *parent) const;
void saveToolChains(const QList<ToolChain *> &toolchains, QWidget *parent); void saveToolChains(const QList<Toolchain *> &toolchains, QWidget *parent);
private: private:
QList<ToolChain *> toolChains(const Utils::Store &data) const; QList<Toolchain *> toolChains(const Utils::Store &data) const;
}; };
} // namespace Internal } // namespace Internal

View File

@@ -102,7 +102,7 @@ static QString targetPlatform(const ProjectExplorer::Abi &abi, const ProjectExpl
return QString(); return QString();
} }
static QStringList toolchainList(const ProjectExplorer::ToolChain *tc) static QStringList toolchainList(const ProjectExplorer::Toolchain *tc)
{ {
const Utils::Id type = tc->typeId(); const Utils::Id type = tc->typeId();
if (type == ProjectExplorer::Constants::CLANG_TOOLCHAIN_TYPEID if (type == ProjectExplorer::Constants::CLANG_TOOLCHAIN_TYPEID
@@ -174,14 +174,14 @@ static QString architecture(const ProjectExplorer::Abi &targetAbi)
return QString(); return QString();
} }
static bool isMultiTargetingToolchain(const ProjectExplorer::ToolChain *tc) static bool isMultiTargetingToolchain(const ProjectExplorer::Toolchain *tc)
{ {
// Clang and QCC are multi-targeting compilers; others (GCC/MinGW, MSVC, ICC) are not // Clang and QCC are multi-targeting compilers; others (GCC/MinGW, MSVC, ICC) are not
return tc->targetAbi().os() == ProjectExplorer::Abi::QnxOS return tc->targetAbi().os() == ProjectExplorer::Abi::QnxOS
|| tc->typeId() == ProjectExplorer::Constants::CLANG_TOOLCHAIN_TYPEID; || tc->typeId() == ProjectExplorer::Constants::CLANG_TOOLCHAIN_TYPEID;
} }
static QStringList architectures(const ProjectExplorer::ToolChain *tc) static QStringList architectures(const ProjectExplorer::Toolchain *tc)
{ {
// For platforms which can have builds for multiple architectures in a single configuration // For platforms which can have builds for multiple architectures in a single configuration
// (Darwin, Android), regardless of whether the toolchain is multi-targeting or not (Clang // (Darwin, Android), regardless of whether the toolchain is multi-targeting or not (Clang
@@ -238,12 +238,12 @@ QVariantMap DefaultPropertyProvider::autoGeneratedProperties(const ProjectExplor
if (!sysroot.isEmpty()) if (!sysroot.isEmpty())
data.insert(QLatin1String(QBS_SYSROOT), sysroot); data.insert(QLatin1String(QBS_SYSROOT), sysroot);
ToolChain *tcC = ToolChainKitAspect::cToolChain(k); Toolchain *tcC = ToolChainKitAspect::cToolChain(k);
ToolChain *tcCxx = ToolChainKitAspect::cxxToolChain(k); Toolchain *tcCxx = ToolChainKitAspect::cxxToolChain(k);
if (!tcC && !tcCxx) if (!tcC && !tcCxx)
return data; return data;
ToolChain *mainTc = tcCxx ? tcCxx : tcC; Toolchain *mainTc = tcCxx ? tcCxx : tcC;
Abi targetAbi = mainTc->targetAbi(); Abi targetAbi = mainTc->targetAbi();

View File

@@ -827,8 +827,8 @@ static void getExpandedCompilerFlags(QStringList &cFlags, QStringList &cxxFlags,
static RawProjectPart generateProjectPart( static RawProjectPart generateProjectPart(
const QJsonObject &product, const QJsonObject &product,
const QJsonObject &group, const QJsonObject &group,
const std::shared_ptr<const ToolChain> &cToolChain, const std::shared_ptr<const Toolchain> &cToolChain,
const std::shared_ptr<const ToolChain> &cxxToolChain, const std::shared_ptr<const Toolchain> &cxxToolChain,
QtMajorVersion qtVersion, QtMajorVersion qtVersion,
QString cPch, QString cPch,
QString cxxPch, QString cxxPch,
@@ -952,8 +952,8 @@ static RawProjectPart generateProjectPart(
static RawProjectParts generateProjectParts( static RawProjectParts generateProjectParts(
const QJsonObject &projectData, const QJsonObject &projectData,
const std::shared_ptr<const ToolChain> &cToolChain, const std::shared_ptr<const Toolchain> &cToolChain,
const std::shared_ptr<const ToolChain> &cxxToolChain, const std::shared_ptr<const Toolchain> &cxxToolChain,
QtMajorVersion qtVersion QtMajorVersion qtVersion
) )
{ {
@@ -1005,9 +1005,9 @@ void QbsBuildSystem::updateCppCodeModel()
const QtSupport::CppKitInfo kitInfo(kit()); const QtSupport::CppKitInfo kitInfo(kit());
QTC_ASSERT(kitInfo.isValid(), return); QTC_ASSERT(kitInfo.isValid(), return);
const auto cToolchain = std::shared_ptr<ToolChain>(kitInfo.cToolChain const auto cToolchain = std::shared_ptr<Toolchain>(kitInfo.cToolChain
? kitInfo.cToolChain->clone() : nullptr); ? kitInfo.cToolChain->clone() : nullptr);
const auto cxxToolchain = std::shared_ptr<ToolChain>(kitInfo.cxxToolChain const auto cxxToolchain = std::shared_ptr<Toolchain>(kitInfo.cxxToolChain
? kitInfo.cxxToolChain->clone() : nullptr); ? kitInfo.cxxToolChain->clone() : nullptr);
m_cppCodeModelUpdater->update({project(), kitInfo, activeParseEnvironment(), {}, m_cppCodeModelUpdater->update({project(), kitInfo, activeParseEnvironment(), {},

View File

@@ -145,8 +145,8 @@ bool QbsProjectImporter::matchKit(void *directoryData, const Kit *k) const
&& bgData->cxxCompilerPath.isEmpty()) { && bgData->cxxCompilerPath.isEmpty()) {
return true; return true;
} }
const ToolChain * const cToolchain = ToolChainKitAspect::cToolChain(k); const Toolchain * const cToolchain = ToolChainKitAspect::cToolChain(k);
const ToolChain * const cxxToolchain = ToolChainKitAspect::cxxToolChain(k); const Toolchain * const cxxToolchain = ToolChainKitAspect::cxxToolChain(k);
if (!bgData->cCompilerPath.isEmpty()) { if (!bgData->cCompilerPath.isEmpty()) {
if (!cToolchain) if (!cToolchain)
return false; return false;

View File

@@ -781,7 +781,7 @@ QmakeBuildConfiguration::LastKitState::LastKitState(Kit *k)
m_sysroot(SysRootKitAspect::sysRoot(k).toString()), m_sysroot(SysRootKitAspect::sysRoot(k).toString()),
m_mkspec(QmakeKitAspect::mkspec(k)) m_mkspec(QmakeKitAspect::mkspec(k))
{ {
ToolChain *tc = ToolChainKitAspect::cxxToolChain(k); Toolchain *tc = ToolChainKitAspect::cxxToolChain(k);
m_toolchain = tc ? tc->id() : QByteArray(); m_toolchain = tc ? tc->id() : QByteArray();
} }

View File

@@ -106,7 +106,7 @@ private:
void restrictNextBuild(const ProjectExplorer::RunConfiguration *rc) override; void restrictNextBuild(const ProjectExplorer::RunConfiguration *rc) override;
void kitChanged(); void kitChanged();
void toolChainUpdated(ProjectExplorer::ToolChain *tc); void toolChainUpdated(ProjectExplorer::Toolchain *tc);
void qtVersionsChanged(const QList<int> &, const QList<int> &, const QList<int> &changed); void qtVersionsChanged(const QList<int> &, const QList<int> &, const QList<int> &changed);
void updateProblemLabel(); void updateProblemLabel();

View File

@@ -179,7 +179,7 @@ bool QmakeMakeStep::init()
void QmakeMakeStep::setupOutputFormatter(OutputFormatter *formatter) void QmakeMakeStep::setupOutputFormatter(OutputFormatter *formatter)
{ {
formatter->addLineParser(new GnuMakeParser()); formatter->addLineParser(new GnuMakeParser());
ToolChain *tc = ToolChainKitAspect::cxxToolChain(kit()); Toolchain *tc = ToolChainKitAspect::cxxToolChain(kit());
OutputTaskParser *xcodeBuildParser = nullptr; OutputTaskParser *xcodeBuildParser = nullptr;
if (tc && tc->targetAbi().os() == Abi::DarwinOS) { if (tc && tc->targetAbi().os() == Abi::DarwinOS) {
xcodeBuildParser = new XcodebuildParser; xcodeBuildParser = new XcodebuildParser;

View File

@@ -237,7 +237,7 @@ QmakeBuildSystem::QmakeBuildSystem(QmakeBuildConfiguration *bc)
this, &QmakeBuildSystem::scheduleUpdateAllNowOrLater); this, &QmakeBuildSystem::scheduleUpdateAllNowOrLater);
connect(ToolChainManager::instance(), &ToolChainManager::toolChainUpdated, connect(ToolChainManager::instance(), &ToolChainManager::toolChainUpdated,
this, [this](ToolChain *tc) { this, [this](Toolchain *tc) {
if (ToolChainKitAspect::cxxToolChain(kit()) == tc) if (ToolChainKitAspect::cxxToolChain(kit()) == tc)
scheduleUpdateAllNowOrLater(); scheduleUpdateAllNowOrLater();
}); });
@@ -1308,7 +1308,7 @@ static FilePath destDirFor(const TargetInformation &ti)
FilePaths QmakeBuildSystem::allLibraryTargetFiles(const QmakeProFile *file) const FilePaths QmakeBuildSystem::allLibraryTargetFiles(const QmakeProFile *file) const
{ {
const ToolChain *const toolchain = ToolChainKitAspect::cxxToolChain(kit()); const Toolchain *const toolchain = ToolChainKitAspect::cxxToolChain(kit());
if (!toolchain) if (!toolchain)
return {}; return {};
@@ -1423,7 +1423,7 @@ static FilePath getFullPathOf(const QmakeProFile *pro, Variable variable,
return bc->environment().searchInPath(exe); return bc->environment().searchInPath(exe);
} }
void QmakeBuildSystem::testToolChain(ToolChain *tc, const FilePath &path) const void QmakeBuildSystem::testToolChain(Toolchain *tc, const FilePath &path) const
{ {
if (!tc || path.isEmpty()) if (!tc || path.isEmpty())
return; return;
@@ -1474,7 +1474,7 @@ void QmakeBuildSystem::warnOnToolChainMismatch(const QmakeProFile *pro) const
FilePath QmakeBuildSystem::executableFor(const QmakeProFile *file) FilePath QmakeBuildSystem::executableFor(const QmakeProFile *file)
{ {
const ToolChain *const tc = ToolChainKitAspect::cxxToolChain(kit()); const Toolchain *const tc = ToolChainKitAspect::cxxToolChain(kit());
if (!tc) if (!tc)
return {}; return {};

View File

@@ -115,7 +115,7 @@ public:
void startAsyncTimer(QmakeProFile::AsyncUpdateDelay delay); void startAsyncTimer(QmakeProFile::AsyncUpdateDelay delay);
void warnOnToolChainMismatch(const QmakeProFile *pro) const; void warnOnToolChainMismatch(const QmakeProFile *pro) const;
void testToolChain(ProjectExplorer::ToolChain *tc, const Utils::FilePath &path) const; void testToolChain(ProjectExplorer::Toolchain *tc, const Utils::FilePath &path) const;
QString deviceRoot() const; QString deviceRoot() const;

View File

@@ -160,7 +160,7 @@ bool QmakeProjectImporter::matchKit(void *directoryData, const Kit *k) const
QtVersion *kitVersion = QtKitAspect::qtVersion(k); QtVersion *kitVersion = QtKitAspect::qtVersion(k);
QString kitSpec = QmakeKitAspect::mkspec(k); QString kitSpec = QmakeKitAspect::mkspec(k);
ToolChain *tc = ToolChainKitAspect::cxxToolChain(k); Toolchain *tc = ToolChainKitAspect::cxxToolChain(k);
if (kitSpec.isEmpty() && kitVersion) if (kitSpec.isEmpty() && kitVersion)
kitSpec = kitVersion->mkspecFor(tc); kitSpec = kitVersion->mkspecFor(tc);
QMakeStepConfig::OsType kitOsType = QMakeStepConfig::NoOsType; QMakeStepConfig::OsType kitOsType = QMakeStepConfig::NoOsType;
@@ -217,17 +217,17 @@ static const Toolchains preferredToolChains(QtVersion *qtVersion, const QString
const Toolchains toolchains = ToolChainManager::toolchains(); const Toolchains toolchains = ToolChainManager::toolchains();
const Abis qtAbis = qtVersion->qtAbis(); const Abis qtAbis = qtVersion->qtAbis();
const auto matcher = [&](const ToolChain *tc) { const auto matcher = [&](const Toolchain *tc) {
return qtAbis.contains(tc->targetAbi()) && tc->suggestedMkspecList().contains(spec); return qtAbis.contains(tc->targetAbi()) && tc->suggestedMkspecList().contains(spec);
}; };
ToolChain * const cxxToolchain = findOrDefault(toolchains, [matcher](const ToolChain *tc) { Toolchain * const cxxToolchain = findOrDefault(toolchains, [matcher](const Toolchain *tc) {
return tc->language() == ProjectExplorer::Constants::CXX_LANGUAGE_ID && matcher(tc); return tc->language() == ProjectExplorer::Constants::CXX_LANGUAGE_ID && matcher(tc);
}); });
ToolChain * const cToolchain = findOrDefault(toolchains, [matcher](const ToolChain *tc) { Toolchain * const cToolchain = findOrDefault(toolchains, [matcher](const Toolchain *tc) {
return tc->language() == ProjectExplorer::Constants::C_LANGUAGE_ID && matcher(tc); return tc->language() == ProjectExplorer::Constants::C_LANGUAGE_ID && matcher(tc);
}); });
Toolchains chosenToolchains; Toolchains chosenToolchains;
for (ToolChain * const tc : {cxxToolchain, cToolchain}) { for (Toolchain * const tc : {cxxToolchain, cToolchain}) {
if (tc) if (tc)
chosenToolchains << tc; chosenToolchains << tc;
}; };
@@ -240,7 +240,7 @@ Kit *QmakeProjectImporter::createTemporaryKit(const QtProjectImporter::QtVersion
{ {
Q_UNUSED(osType) // TODO use this to select the right toolchain? Q_UNUSED(osType) // TODO use this to select the right toolchain?
return QtProjectImporter::createTemporaryKit(data, [&data, parsedSpec](Kit *k) -> void { return QtProjectImporter::createTemporaryKit(data, [&data, parsedSpec](Kit *k) -> void {
for (ToolChain *const tc : preferredToolChains(data.qt, parsedSpec)) for (Toolchain *const tc : preferredToolChains(data.qt, parsedSpec))
ToolChainKitAspect::setToolChain(k, tc); ToolChainKitAspect::setToolChain(k, tc);
if (parsedSpec != data.qt->mkspec()) if (parsedSpec != data.qt->mkspec())
QmakeKitAspect::setMkspec(k, parsedSpec, QmakeKitAspect::MkspecSource::Code); QmakeKitAspect::setMkspec(k, parsedSpec, QmakeKitAspect::MkspecSource::Code);

View File

@@ -149,7 +149,7 @@ QMakeStepConfig QMakeStep::deducedArguments() const
Kit *kit = target()->kit(); Kit *kit = target()->kit();
QMakeStepConfig config; QMakeStepConfig config;
Abi targetAbi; Abi targetAbi;
if (ToolChain *tc = ToolChainKitAspect::cxxToolChain(kit)) { if (Toolchain *tc = ToolChainKitAspect::cxxToolChain(kit)) {
targetAbi = tc->targetAbi(); targetAbi = tc->targetAbi();
if (HostOsInfo::isWindowsHost() if (HostOsInfo::isWindowsHost()
&& tc->typeId() == ProjectExplorer::Constants::CLANG_TOOLCHAIN_TYPEID) { && tc->typeId() == ProjectExplorer::Constants::CLANG_TOOLCHAIN_TYPEID) {

View File

@@ -99,7 +99,7 @@ public:
bool isActive() const bool isActive() const
{ {
const bool hasToolChain = ToolChainManager::toolChain(Utils::equal(&ToolChain::compilerCommand, const bool hasToolChain = ToolChainManager::toolChain(Utils::equal(&Toolchain::compilerCommand,
m_qccCompiler)); m_qccCompiler));
const bool hasDebugger = Utils::contains(DebuggerItemManager::debuggers(), [this](const DebuggerItem &di) { const bool hasDebugger = Utils::contains(DebuggerItemManager::debuggers(), [this](const DebuggerItem &di) {
return findTargetByDebuggerPath(di.command()); return findTargetByDebuggerPath(di.command());
@@ -169,7 +169,7 @@ void QnxConfiguration::deactivate()
QTC_ASSERT(isActive(), return); QTC_ASSERT(isActive(), return);
const Toolchains toolChainsToRemove = const Toolchains toolChainsToRemove =
ToolChainManager::toolchains(Utils::equal(&ToolChain::compilerCommand, m_qccCompiler)); ToolChainManager::toolchains(Utils::equal(&Toolchain::compilerCommand, m_qccCompiler));
QList<DebuggerItem> debuggersToRemove; QList<DebuggerItem> debuggersToRemove;
const QList<DebuggerItem> debuggerItems = DebuggerItemManager::debuggers(); const QList<DebuggerItem> debuggerItems = DebuggerItemManager::debuggers();
@@ -187,7 +187,7 @@ void QnxConfiguration::deactivate()
} }
} }
for (ToolChain *tc : toolChainsToRemove) for (Toolchain *tc : toolChainsToRemove)
ToolChainManager::deregisterToolChain(tc); ToolChainManager::deregisterToolChain(tc);
for (const DebuggerItem &debuggerItem : std::as_const(debuggersToRemove)) for (const DebuggerItem &debuggerItem : std::as_const(debuggersToRemove))
@@ -232,7 +232,7 @@ Toolchains QnxConfiguration::createToolChains(const QnxTarget &target)
for (const Id language : {ProjectExplorer::Constants::C_LANGUAGE_ID, for (const Id language : {ProjectExplorer::Constants::C_LANGUAGE_ID,
ProjectExplorer::Constants::CXX_LANGUAGE_ID}) { ProjectExplorer::Constants::CXX_LANGUAGE_ID}) {
auto toolChain = new QnxToolChain; auto toolChain = new QnxToolChain;
toolChain->setDetection(ToolChain::ManualDetection); toolChain->setDetection(Toolchain::ManualDetection);
toolChain->setLanguage(language); toolChain->setLanguage(language);
toolChain->setTargetAbi(target.m_abi); toolChain->setTargetAbi(target.m_abi);
toolChain->setDisplayName(Tr::tr("QCC for %1 (%2)") toolChain->setDisplayName(Tr::tr("QCC for %1 (%2)")
@@ -755,13 +755,13 @@ QnxSettingsPage::QnxSettingsPage(QObject *guard)
this, &QnxSettingsPage::restoreConfigurations); this, &QnxSettingsPage::restoreConfigurations);
} }
QList<ToolChain *> autoDetectHelper(const QList<ToolChain *> &alreadyKnown) QList<Toolchain *> autoDetectHelper(const QList<Toolchain *> &alreadyKnown)
{ {
QList<ToolChain *> result; QList<Toolchain *> result;
for (const QnxConfiguration &config : std::as_const(m_configurations)) { for (const QnxConfiguration &config : std::as_const(m_configurations)) {
config.ensureContents(); config.ensureContents();
for (const QnxTarget &target : std::as_const(config.m_targets)) { for (const QnxTarget &target : std::as_const(config.m_targets)) {
result += Utils::filtered(alreadyKnown, [config, target](ToolChain *tc) { result += Utils::filtered(alreadyKnown, [config, target](Toolchain *tc) {
return tc->typeId() == Constants::QNX_TOOLCHAIN_ID return tc->typeId() == Constants::QNX_TOOLCHAIN_ID
&& tc->targetAbi() == target.m_abi && tc->targetAbi() == target.m_abi
&& tc->compilerCommand() == config.m_qccCompiler; && tc->compilerCommand() == config.m_qccCompiler;

View File

@@ -5,12 +5,12 @@
#include <coreplugin/dialogs/ioptionspage.h> #include <coreplugin/dialogs/ioptionspage.h>
namespace ProjectExplorer { class ToolChain; } namespace ProjectExplorer { class Toolchain; }
namespace Qnx::Internal { namespace Qnx::Internal {
QList<ProjectExplorer::ToolChain *> autoDetectHelper( QList<ProjectExplorer::Toolchain *> autoDetectHelper(
const QList<ProjectExplorer::ToolChain *> &alreadyKnown); const QList<ProjectExplorer::Toolchain *> &alreadyKnown);
void setupQnxSettingsPage(QObject *guard); void setupQnxSettingsPage(QObject *guard);

View File

@@ -152,7 +152,7 @@ GccToolChain::DetectedAbisResult QnxToolChain::detectSupportedAbis() const
return GccToolChain::DetectedAbisResult{detectTargetAbis(sdpPath()), "unknown-qnx-gnu"}; return GccToolChain::DetectedAbisResult{detectTargetAbis(sdpPath()), "unknown-qnx-gnu"};
} }
bool QnxToolChain::operator ==(const ToolChain &other) const bool QnxToolChain::operator ==(const Toolchain &other) const
{ {
if (!GccToolChain::operator ==(other)) if (!GccToolChain::operator ==(other))
return false; return false;

View File

@@ -20,7 +20,7 @@ public:
Utils::FilePathAspect sdpPath{this}; Utils::FilePathAspect sdpPath{this};
Utils::StringAspect cpuDir{this}; Utils::StringAspect cpuDir{this};
bool operator ==(const ToolChain &) const override; bool operator ==(const Toolchain &) const override;
protected: protected:
DetectedAbisResult detectSupportedAbis() const override; DetectedAbisResult detectSupportedAbis() const override;

View File

@@ -542,7 +542,7 @@ Tasks QtVersion::validateKit(const Kit *k)
result << BuildSystemTask(Task::Warning, Tr::tr("Device type is not supported by Qt version.")); result << BuildSystemTask(Task::Warning, Tr::tr("Device type is not supported by Qt version."));
} }
if (ToolChain *tc = ToolChainKitAspect::cxxToolChain(k)) { if (Toolchain *tc = ToolChainKitAspect::cxxToolChain(k)) {
Abi targetAbi = tc->targetAbi(); Abi targetAbi = tc->targetAbi();
Abis supportedAbis = tc->supportedAbis(); Abis supportedAbis = tc->supportedAbis();
bool fuzzyMatch = false; bool fuzzyMatch = false;
@@ -1291,7 +1291,7 @@ QString QtVersion::mkspec() const
return d->m_mkspec.toFSPathString(); return d->m_mkspec.toFSPathString();
} }
QString QtVersion::mkspecFor(ToolChain *tc) const QString QtVersion::mkspecFor(Toolchain *tc) const
{ {
QString versionSpec = mkspec(); QString versionSpec = mkspec();
if (!tc) if (!tc)
@@ -1866,10 +1866,10 @@ bool QtVersionPrivate::queryQMakeVariables(const FilePath &binary, const Environ
// This is required to make non-static qmakes work on windows where every tool chain // This is required to make non-static qmakes work on windows where every tool chain
// tries to be incompatible with any other. // tries to be incompatible with any other.
const Abis abiList = Abi::abisOfBinary(binary); const Abis abiList = Abi::abisOfBinary(binary);
const Toolchains tcList = ToolChainManager::toolchains([&abiList](const ToolChain *t) { const Toolchains tcList = ToolChainManager::toolchains([&abiList](const Toolchain *t) {
return abiList.contains(t->targetAbi()); return abiList.contains(t->targetAbi());
}); });
for (ToolChain *tc : tcList) { for (Toolchain *tc : tcList) {
Environment realEnv = env; Environment realEnv = env;
tc->addToEnvironment(realEnv); tc->addToEnvironment(realEnv);
output = runQmakeQuery(binary, realEnv, error); output = runQmakeQuery(binary, realEnv, error);

View File

@@ -28,7 +28,7 @@ class FileInProjectFinder;
namespace ProjectExplorer { namespace ProjectExplorer {
class Kit; class Kit;
class ToolChain; class Toolchain;
class Target; class Target;
} // ProjectExplorer } // ProjectExplorer
@@ -114,7 +114,7 @@ public:
/// @returns the name of the mkspec /// @returns the name of the mkspec
QString mkspec() const; QString mkspec() const;
QString mkspecFor(ProjectExplorer::ToolChain *tc) const; QString mkspecFor(ProjectExplorer::Toolchain *tc) const;
/// @returns the full path to the default directory /// @returns the full path to the default directory
/// specifally not the directory the symlink/ORIGINAL_QMAKESPEC points to /// specifally not the directory the symlink/ORIGINAL_QMAKESPEC points to
Utils::FilePath mkspecPath() const; Utils::FilePath mkspecPath() const;

View File

@@ -230,7 +230,7 @@ void QtKitAspectFactory::fix(Kit *k)
return; return;
const QString spec = version->mkspec(); const QString spec = version->mkspec();
Toolchains possibleTcs = ToolChainManager::toolchains([version](const ToolChain *t) { Toolchains possibleTcs = ToolChainManager::toolchains([version](const Toolchain *t) {
if (!t->isValid() || t->language() != ProjectExplorer::Constants::CXX_LANGUAGE_ID) if (!t->isValid() || t->language() != ProjectExplorer::Constants::CXX_LANGUAGE_ID)
return false; return false;
return Utils::anyOf(version->qtAbis(), [t](const Abi &qtAbi) { return Utils::anyOf(version->qtAbis(), [t](const Abi &qtAbi) {
@@ -244,7 +244,7 @@ void QtKitAspectFactory::fix(Kit *k)
// TODO: We should probably prefer the compiler with the highest version number instead, // TODO: We should probably prefer the compiler with the highest version number instead,
// but this information is currently not exposed by the ToolChain class. // but this information is currently not exposed by the ToolChain class.
const FilePaths envPathVar = Environment::systemEnvironment().path(); const FilePaths envPathVar = Environment::systemEnvironment().path();
sort(possibleTcs, [version, &envPathVar](const ToolChain *tc1, const ToolChain *tc2) { sort(possibleTcs, [version, &envPathVar](const Toolchain *tc1, const Toolchain *tc2) {
const QVector<Abi> &qtAbis = version->qtAbis(); const QVector<Abi> &qtAbis = version->qtAbis();
const bool tc1ExactMatch = qtAbis.contains(tc1->targetAbi()); const bool tc1ExactMatch = qtAbis.contains(tc1->targetAbi());
const bool tc2ExactMatch = qtAbis.contains(tc2->targetAbi()); const bool tc2ExactMatch = qtAbis.contains(tc2->targetAbi());
@@ -278,11 +278,11 @@ void QtKitAspectFactory::fix(Kit *k)
}); });
// TODO: Why is this not done during sorting? // TODO: Why is this not done during sorting?
const Toolchains goodTcs = Utils::filtered(possibleTcs, [&spec](const ToolChain *t) { const Toolchains goodTcs = Utils::filtered(possibleTcs, [&spec](const Toolchain *t) {
return t->suggestedMkspecList().contains(spec); return t->suggestedMkspecList().contains(spec);
}); });
if (ToolChain * const bestTc = goodTcs.isEmpty() ? possibleTcs.first() : goodTcs.first()) if (Toolchain * const bestTc = goodTcs.isEmpty() ? possibleTcs.first() : goodTcs.first())
ToolChainKitAspect::setAllToolChainsToMatch(k, bestTc); ToolChainKitAspect::setAllToolChainsToMatch(k, bestTc);
} }
} }
@@ -405,7 +405,7 @@ void QtKitAspect::setQtVersion(Kit *k, const QtVersion *v)
void QtKitAspect::addHostBinariesToPath(const Kit *k, Environment &env) void QtKitAspect::addHostBinariesToPath(const Kit *k, Environment &env)
{ {
if (const ToolChain *tc = ToolChainKitAspect::cxxToolChain(k)) if (const Toolchain *tc = ToolChainKitAspect::cxxToolChain(k))
env.prependOrSetPath(tc->compilerCommand().parentDir()); env.prependOrSetPath(tc->compilerCommand().parentDir());
if (const QtVersion *qt = qtVersion(k)) if (const QtVersion *qt = qtVersion(k))

View File

@@ -190,7 +190,7 @@ private:
QIcon icon; QIcon icon;
}; };
ValidityInfo validInformation(const QtVersion *version); ValidityInfo validInformation(const QtVersion *version);
QList<ProjectExplorer::ToolChain*> toolChains(const QtVersion *version); QList<ProjectExplorer::Toolchain*> toolChains(const QtVersion *version);
QByteArray defaultToolChainId(const QtVersion *version); QByteArray defaultToolChainId(const QtVersion *version);
bool isNameUnique(const QtVersion *version); bool isNameUnique(const QtVersion *version);
@@ -487,7 +487,7 @@ QtOptionsPageWidget::ValidityInfo QtOptionsPageWidget::validInformation(const Qt
const Abis qtAbis = version->qtAbis(); const Abis qtAbis = version->qtAbis();
for (const Abi &abi : qtAbis) { for (const Abi &abi : qtAbis) {
const auto abiCompatePred = [&abi] (const ToolChain *tc) const auto abiCompatePred = [&abi] (const Toolchain *tc)
{ {
return Utils::contains(tc->supportedAbis(), return Utils::contains(tc->supportedAbis(),
[&abi](const Abi &sabi) { return sabi.isCompatibleWith(abi); }); [&abi](const Abi &sabi) { return sabi.isCompatibleWith(abi); });
@@ -530,9 +530,9 @@ QtOptionsPageWidget::ValidityInfo QtOptionsPageWidget::validInformation(const Qt
return info; return info;
} }
QList<ToolChain*> QtOptionsPageWidget::toolChains(const QtVersion *version) QList<Toolchain*> QtOptionsPageWidget::toolChains(const QtVersion *version)
{ {
QList<ToolChain*> toolChains; QList<Toolchain*> toolChains;
if (!version) if (!version)
return toolChains; return toolChains;
@@ -540,7 +540,7 @@ QList<ToolChain*> QtOptionsPageWidget::toolChains(const QtVersion *version)
const Abis abis = version->qtAbis(); const Abis abis = version->qtAbis();
for (const Abi &a : abis) { for (const Abi &a : abis) {
const Toolchains tcList = ToolChainManager::findToolChains(a); const Toolchains tcList = ToolChainManager::findToolChains(a);
for (ToolChain *tc : tcList) { for (Toolchain *tc : tcList) {
if (Utils::insert(ids, tc->id())) if (Utils::insert(ids, tc->id()))
toolChains.append(tc); toolChains.append(tc);
} }
@@ -551,7 +551,7 @@ QList<ToolChain*> QtOptionsPageWidget::toolChains(const QtVersion *version)
QByteArray QtOptionsPageWidget::defaultToolChainId(const QtVersion *version) QByteArray QtOptionsPageWidget::defaultToolChainId(const QtVersion *version)
{ {
QList<ToolChain*> possibleToolChains = toolChains(version); QList<Toolchain*> possibleToolChains = toolChains(version);
if (!possibleToolChains.isEmpty()) if (!possibleToolChains.isEmpty())
return possibleToolChains.first()->id(); return possibleToolChains.first()->id();
return QByteArray(); return QByteArray();

View File

@@ -48,7 +48,7 @@ static void addRegisteredMinGWToEnvironment(Environment &env)
return; return;
} }
const ToolChain *toolChain = ToolChainManager::toolChain([](const ToolChain *t){ const Toolchain *toolChain = ToolChainManager::toolChain([](const Toolchain *t){
return t->typeId() == ProjectExplorer::Constants::MINGW_TOOLCHAIN_TYPEID; return t->typeId() == ProjectExplorer::Constants::MINGW_TOOLCHAIN_TYPEID;
}); });
if (toolChain) if (toolChain)
@@ -121,7 +121,7 @@ static Toolchains doAutoDetect(const ToolchainDetector &detector)
ProjectExplorer::Constants::CXX_LANGUAGE_ID}) { ProjectExplorer::Constants::CXX_LANGUAGE_ID}) {
auto toolChain = new WebAssemblyToolChain; auto toolChain = new WebAssemblyToolChain;
toolChain->setLanguage(languageId); toolChain->setLanguage(languageId);
toolChain->setDetection(ToolChain::AutoDetection); toolChain->setDetection(Toolchain::AutoDetection);
const bool cLanguage = languageId == ProjectExplorer::Constants::C_LANGUAGE_ID; const bool cLanguage = languageId == ProjectExplorer::Constants::C_LANGUAGE_ID;
const QString script = QLatin1String(cLanguage ? "emcc" : "em++") const QString script = QLatin1String(cLanguage ? "emcc" : "em++")
+ QLatin1String(sdk.osType() == OsTypeWindows ? ".bat" : ""); + QLatin1String(sdk.osType() == OsTypeWindows ? ".bat" : "");
@@ -140,8 +140,8 @@ static Toolchains doAutoDetect(const ToolchainDetector &detector)
void WebAssemblyToolChain::registerToolChains() void WebAssemblyToolChain::registerToolChains()
{ {
// Remove old toolchains // Remove old toolchains
for (ToolChain *tc : ToolChainManager::findToolChains(toolChainAbi())) { for (Toolchain *tc : ToolChainManager::findToolChains(toolChainAbi())) {
if (tc->detection() != ToolChain::AutoDetection) if (tc->detection() != Toolchain::AutoDetection)
continue; continue;
ToolChainManager::deregisterToolChain(tc); ToolChainManager::deregisterToolChain(tc);
}; };