aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/baremetal
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2019-05-09 11:24:54 +0200
committerhjk <hjk@qt.io>2019-05-09 13:08:47 +0000
commita659cbc6808233ea17f788a3bd5fa6e1c2487ca1 (patch)
treee0e188743ea4f85994694845f2cc7e8af11a005c /src/plugins/baremetal
parent14300bd4777f784fa621678e796a6675141fce9a (diff)
ProjectExplorer: Consolidate macro and header path cache handling
All except Nim and the test tool chain were referencing the cache, so move it to the base. This removes also toolChainUpdated() overloads, including the MsvcToolChain one that missed to call the base implementation and the ClangClToolChain one that worked around that. Change-Id: I8a99734aa3c697c635809a3648673a10ca14a2d8 Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com> Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Diffstat (limited to 'src/plugins/baremetal')
-rw-r--r--src/plugins/baremetal/iarewtoolchain.cpp27
-rw-r--r--src/plugins/baremetal/iarewtoolchain.h10
-rw-r--r--src/plugins/baremetal/keiltoolchain.cpp23
-rw-r--r--src/plugins/baremetal/keiltoolchain.h10
-rw-r--r--src/plugins/baremetal/sdcctoolchain.cpp27
-rw-r--r--src/plugins/baremetal/sdcctoolchain.h10
6 files changed, 26 insertions, 81 deletions
diff --git a/src/plugins/baremetal/iarewtoolchain.cpp b/src/plugins/baremetal/iarewtoolchain.cpp
index 565104be473..0525249dcf0 100644
--- a/src/plugins/baremetal/iarewtoolchain.cpp
+++ b/src/plugins/baremetal/iarewtoolchain.cpp
@@ -223,9 +223,7 @@ static QString buildDisplayName(Abi::Architecture arch, Core::Id language,
// IarToolChain
IarToolChain::IarToolChain(Detection d) :
- ToolChain(Constants::IAREW_TOOLCHAIN_TYPEID, d),
- m_predefinedMacrosCache(std::make_shared<Cache<MacroInspectionReport, 64>>()),
- m_headerPathsCache(std::make_shared<HeaderPathsCache>())
+ ToolChain(Constants::IAREW_TOOLCHAIN_TYPEID, d)
{ }
IarToolChain::IarToolChain(Core::Id language, Detection d) :
@@ -265,9 +263,11 @@ ToolChain::MacroInspectionRunner IarToolChain::createMacroInspectionRunner() con
const Utils::FileName compilerCommand = m_compilerCommand;
const Core::Id lang = language();
- MacrosCache macrosCache = m_predefinedMacrosCache;
+ MacrosCache macrosCache = predefinedMacrosCache();
- return [env, compilerCommand, macrosCache, lang]
+ return [env, compilerCommand,
+ macrosCache,
+ lang]
(const QStringList &flags) {
Q_UNUSED(flags)
@@ -303,16 +303,16 @@ ToolChain::BuiltInHeaderPathsRunner IarToolChain::createBuiltInHeaderPathsRunner
const Utils::FileName compilerCommand = m_compilerCommand;
const Core::Id languageId = language();
- HeaderPathsCachePtr headerPathsCache = m_headerPathsCache;
+ HeaderPathsCache headerPaths = headerPathsCache();
- return [env, compilerCommand, headerPathsCache, languageId](const QStringList &flags,
+ return [env, compilerCommand, headerPaths, languageId](const QStringList &flags,
const QString &fileName,
const QString &) {
Q_UNUSED(flags)
Q_UNUSED(fileName)
const HeaderPaths paths = dumpHeaderPaths(compilerCommand, languageId, env.toStringList());
- headerPathsCache->insert({}, paths);
+ headerPaths->insert({}, paths);
return paths;
};
@@ -394,13 +394,6 @@ ToolChain *IarToolChain::clone() const
return new IarToolChain(*this);
}
-void IarToolChain::toolChainUpdated()
-{
- m_predefinedMacrosCache->invalidate();
- m_headerPathsCache->invalidate();
- ToolChain::toolChainUpdated();
-}
-
// IarToolChainFactory
IarToolChainFactory::IarToolChainFactory()
@@ -538,7 +531,7 @@ QList<ToolChain *> IarToolChainFactory::autoDetectToolchain(
tc->setDisplayName(buildDisplayName(abi.architecture(), language, candidate.second));
const auto languageVersion = ToolChain::languageVersion(language, macros);
- tc->m_predefinedMacrosCache->insert({}, {macros, languageVersion});
+ tc->predefinedMacrosCache()->insert({}, {macros, languageVersion});
return {tc};
}
@@ -580,7 +573,7 @@ void IarToolChainConfigWidget::applyImpl()
return;
const auto languageVersion = ToolChain::languageVersion(tc->language(), m_macros);
- tc->m_predefinedMacrosCache->insert({}, {m_macros, languageVersion});
+ tc->predefinedMacrosCache()->insert({}, {m_macros, languageVersion});
setFromToolchain();
}
diff --git a/src/plugins/baremetal/iarewtoolchain.h b/src/plugins/baremetal/iarewtoolchain.h
index 8107c03f237..06b93577a2d 100644
--- a/src/plugins/baremetal/iarewtoolchain.h
+++ b/src/plugins/baremetal/iarewtoolchain.h
@@ -27,7 +27,6 @@
#include <projectexplorer/abi.h>
#include <projectexplorer/toolchain.h>
-#include <projectexplorer/toolchaincache.h>
#include <projectexplorer/toolchainconfigwidget.h>
QT_BEGIN_NAMESPACE
@@ -86,8 +85,6 @@ public:
ToolChain *clone() const final;
- void toolChainUpdated() final;
-
protected:
IarToolChain(const IarToolChain &tc) = default;
@@ -98,13 +95,6 @@ private:
ProjectExplorer::Abi m_targetAbi;
Utils::FileName m_compilerCommand;
- using MacrosCache = std::shared_ptr<ProjectExplorer::Cache<MacroInspectionReport, 64>>;
- mutable MacrosCache m_predefinedMacrosCache;
-
- using HeaderPathsCache = ProjectExplorer::Cache<ProjectExplorer::HeaderPaths>;
- using HeaderPathsCachePtr = std::shared_ptr<HeaderPathsCache>;
- mutable HeaderPathsCachePtr m_headerPathsCache;
-
friend class IarToolChainFactory;
friend class IarToolChainConfigWidget;
};
diff --git a/src/plugins/baremetal/keiltoolchain.cpp b/src/plugins/baremetal/keiltoolchain.cpp
index fb7e37cfb37..755b25b25a7 100644
--- a/src/plugins/baremetal/keiltoolchain.cpp
+++ b/src/plugins/baremetal/keiltoolchain.cpp
@@ -240,9 +240,7 @@ static QString buildDisplayName(Abi::Architecture arch, Core::Id language,
// KeilToolchain
KeilToolchain::KeilToolchain(Detection d) :
- ToolChain(Constants::KEIL_TOOLCHAIN_TYPEID, d),
- m_predefinedMacrosCache(std::make_shared<Cache<MacroInspectionReport, 64>>()),
- m_headerPathsCache(std::make_shared<HeaderPathsCache>())
+ ToolChain(Constants::KEIL_TOOLCHAIN_TYPEID, d)
{ }
KeilToolchain::KeilToolchain(Core::Id language, Detection d) :
@@ -282,7 +280,7 @@ ToolChain::MacroInspectionRunner KeilToolchain::createMacroInspectionRunner() co
const Utils::FileName compilerCommand = m_compilerCommand;
const Core::Id lang = language();
- MacrosCache macroCache = m_predefinedMacrosCache;
+ MacrosCache macroCache = predefinedMacrosCache();
return [env, compilerCommand, macroCache, lang]
(const QStringList &flags) {
@@ -316,15 +314,15 @@ ToolChain::BuiltInHeaderPathsRunner KeilToolchain::createBuiltInHeaderPathsRunne
{
const Utils::FileName compilerCommand = m_compilerCommand;
- HeaderPathsCachePtr headerPathsCache = m_headerPathsCache;
+ HeaderPathsCache headerPaths = headerPathsCache();
return [compilerCommand,
- headerPathsCache](const QStringList &flags, const QString &fileName, const QString &) {
+ headerPaths](const QStringList &flags, const QString &fileName, const QString &) {
Q_UNUSED(flags)
Q_UNUSED(fileName)
const HeaderPaths paths = dumpHeaderPaths(compilerCommand);
- headerPathsCache->insert({}, paths);
+ headerPaths->insert({}, paths);
return paths;
};
@@ -406,13 +404,6 @@ ToolChain *KeilToolchain::clone() const
return new KeilToolchain(*this);
}
-void KeilToolchain::toolChainUpdated()
-{
- m_predefinedMacrosCache->invalidate();
- m_headerPathsCache->invalidate();
- ToolChain::toolChainUpdated();
-}
-
// KeilToolchainFactory
KeilToolchainFactory::KeilToolchainFactory()
@@ -544,7 +535,7 @@ QList<ToolChain *> KeilToolchainFactory::autoDetectToolchain(
tc->setDisplayName(buildDisplayName(abi.architecture(), language, candidate.second));
const auto languageVersion = ToolChain::languageVersion(language, macros);
- tc->m_predefinedMacrosCache->insert({}, {macros, languageVersion});
+ tc->predefinedMacrosCache()->insert({}, {macros, languageVersion});
return {tc};
}
@@ -586,7 +577,7 @@ void KeilToolchainConfigWidget::applyImpl()
return;
const auto languageVersion = ToolChain::languageVersion(tc->language(), m_macros);
- tc->m_predefinedMacrosCache->insert({}, {m_macros, languageVersion});
+ tc->predefinedMacrosCache()->insert({}, {m_macros, languageVersion});
setFromToolchain();
}
diff --git a/src/plugins/baremetal/keiltoolchain.h b/src/plugins/baremetal/keiltoolchain.h
index fb497d7edf7..36f28900f65 100644
--- a/src/plugins/baremetal/keiltoolchain.h
+++ b/src/plugins/baremetal/keiltoolchain.h
@@ -27,7 +27,6 @@
#include <projectexplorer/abi.h>
#include <projectexplorer/toolchain.h>
-#include <projectexplorer/toolchaincache.h>
#include <projectexplorer/toolchainconfigwidget.h>
QT_BEGIN_NAMESPACE
@@ -86,8 +85,6 @@ public:
ToolChain *clone() const final;
- void toolChainUpdated() final;
-
protected:
KeilToolchain(const KeilToolchain &tc) = default;
@@ -98,13 +95,6 @@ private:
ProjectExplorer::Abi m_targetAbi;
Utils::FileName m_compilerCommand;
- using MacrosCache = std::shared_ptr<ProjectExplorer::Cache<MacroInspectionReport, 64>>;
- mutable MacrosCache m_predefinedMacrosCache;
-
- using HeaderPathsCache = ProjectExplorer::Cache<ProjectExplorer::HeaderPaths>;
- using HeaderPathsCachePtr = std::shared_ptr<HeaderPathsCache>;
- mutable HeaderPathsCachePtr m_headerPathsCache;
-
friend class KeilToolchainFactory;
friend class KeilToolchainConfigWidget;
};
diff --git a/src/plugins/baremetal/sdcctoolchain.cpp b/src/plugins/baremetal/sdcctoolchain.cpp
index c752a9b230a..493f8867875 100644
--- a/src/plugins/baremetal/sdcctoolchain.cpp
+++ b/src/plugins/baremetal/sdcctoolchain.cpp
@@ -217,9 +217,7 @@ static Utils::FileName compilerPathFromEnvironment(const QString &compilerName)
// SdccToolChain
SdccToolChain::SdccToolChain(Detection d) :
- ToolChain(Constants::SDCC_TOOLCHAIN_TYPEID, d),
- m_predefinedMacrosCache(std::make_shared<Cache<MacroInspectionReport, 64>>()),
- m_headerPathsCache(std::make_shared<HeaderPathsCache>())
+ ToolChain(Constants::SDCC_TOOLCHAIN_TYPEID, d)
{ }
SdccToolChain::SdccToolChain(Core::Id language, Detection d) :
@@ -260,7 +258,7 @@ ToolChain::MacroInspectionRunner SdccToolChain::createMacroInspectionRunner() co
const Core::Id lang = language();
const Abi abi = m_targetAbi;
- MacrosCache macrosCache = m_predefinedMacrosCache;
+ MacrosCache macrosCache = predefinedMacrosCache();
return [env, compilerCommand, macrosCache, lang, abi]
(const QStringList &flags) {
@@ -300,16 +298,16 @@ ToolChain::BuiltInHeaderPathsRunner SdccToolChain::createBuiltInHeaderPathsRunne
const Core::Id languageId = language();
const Abi abi = m_targetAbi;
- HeaderPathsCachePtr headerPathsCache = m_headerPathsCache;
+ HeaderPathsCache headerPaths = headerPathsCache();
- return [env, compilerCommand, headerPathsCache, languageId, abi](const QStringList &flags,
- const QString &fileName,
- const QString &) {
+ return [env, compilerCommand, headerPaths, languageId, abi](const QStringList &flags,
+ const QString &fileName,
+ const QString &) {
Q_UNUSED(flags)
Q_UNUSED(fileName)
const HeaderPaths paths = dumpHeaderPaths(compilerCommand, env.toStringList(), abi);
- headerPathsCache->insert({}, paths);
+ headerPaths->insert({}, paths);
return paths;
};
@@ -391,13 +389,6 @@ ToolChain *SdccToolChain::clone() const
return new SdccToolChain(*this);
}
-void SdccToolChain::toolChainUpdated()
-{
- m_predefinedMacrosCache->invalidate();
- m_headerPathsCache->invalidate();
- ToolChain::toolChainUpdated();
-}
-
// SdccToolChainFactory
SdccToolChainFactory::SdccToolChainFactory()
@@ -519,7 +510,7 @@ QList<ToolChain *> SdccToolChainFactory::autoDetectToolchain(
tc->setDisplayName(buildDisplayName(abi.architecture(), language, candidate.second));
const auto languageVersion = ToolChain::languageVersion(language, macros);
- tc->m_predefinedMacrosCache->insert({}, {macros, languageVersion});
+ tc->predefinedMacrosCache()->insert({}, {macros, languageVersion});
return {tc};
}
@@ -561,7 +552,7 @@ void SdccToolChainConfigWidget::applyImpl()
return;
const auto languageVersion = ToolChain::languageVersion(tc->language(), m_macros);
- tc->m_predefinedMacrosCache->insert({}, {m_macros, languageVersion});
+ tc->predefinedMacrosCache()->insert({}, {m_macros, languageVersion});
setFromToolchain();
}
diff --git a/src/plugins/baremetal/sdcctoolchain.h b/src/plugins/baremetal/sdcctoolchain.h
index 4a7e35f012b..93cbcfab496 100644
--- a/src/plugins/baremetal/sdcctoolchain.h
+++ b/src/plugins/baremetal/sdcctoolchain.h
@@ -27,7 +27,6 @@
#include <projectexplorer/abi.h>
#include <projectexplorer/toolchain.h>
-#include <projectexplorer/toolchaincache.h>
#include <projectexplorer/toolchainconfigwidget.h>
QT_BEGIN_NAMESPACE
@@ -86,8 +85,6 @@ public:
ToolChain *clone() const final;
- void toolChainUpdated() final;
-
protected:
SdccToolChain(const SdccToolChain &tc) = default;
@@ -98,13 +95,6 @@ private:
ProjectExplorer::Abi m_targetAbi;
Utils::FileName m_compilerCommand;
- using MacrosCache = std::shared_ptr<ProjectExplorer::Cache<MacroInspectionReport, 64>>;
- mutable MacrosCache m_predefinedMacrosCache;
-
- using HeaderPathsCache = ProjectExplorer::Cache<ProjectExplorer::HeaderPaths>;
- using HeaderPathsCachePtr = std::shared_ptr<HeaderPathsCache>;
- mutable HeaderPathsCachePtr m_headerPathsCache;
-
friend class SdccToolChainFactory;
friend class SdccToolChainConfigWidget;
};