summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@digia.com>2014-07-21 14:23:09 +0200
committerTobias Hunger <tobias.hunger@digia.com>2014-07-21 16:40:44 +0200
commit6175c16a6d0b8b814f332536962b60fe76132a57 (patch)
tree60580d504ddc40154561c09aee2b25cf2b84a157
parent04a9422b48ba442bf610c9c10fa422a79c0fce6e (diff)
downloadqt-creator-6175c16a6d0b8b814f332536962b60fe76132a57.tar.gz
ToolChain: Do not run compiler when setting up a toolchain
Do not rerun the compiler when setting up a new tool chain. All the necessary data is already there, so there is no need to re-get it. This reduces the number of gcc runs at startup from 10 to 6 in my settup (g++ and clang available on Linux). Change-Id: Id02e79f52ab7a69d5edf84b711ab148d7bc43f21 Reviewed-by: Daniel Teske <daniel.teske@digia.com>
-rw-r--r--src/plugins/android/androidtoolchain.cpp2
-rw-r--r--src/plugins/ios/iosconfigurations.cpp2
-rw-r--r--src/plugins/projectexplorer/gcctoolchain.cpp19
-rw-r--r--src/plugins/projectexplorer/gcctoolchain.h4
-rw-r--r--src/plugins/qnx/qnxbaseconfiguration.cpp2
-rw-r--r--src/plugins/qnx/qnxtoolchain.cpp2
6 files changed, 24 insertions, 7 deletions
diff --git a/src/plugins/android/androidtoolchain.cpp b/src/plugins/android/androidtoolchain.cpp
index 68a8ff2f3a..1868ec5b1c 100644
--- a/src/plugins/android/androidtoolchain.cpp
+++ b/src/plugins/android/androidtoolchain.cpp
@@ -386,7 +386,7 @@ QList<ToolChain *> AndroidToolChainFactory::createToolChainsForNdk(const Utils::
continue;
AndroidToolChain *tc = new AndroidToolChain(arch, version, ToolChain::AutoDetection);
FileName compilerPath = AndroidConfigurations::currentConfig().gccPath(arch, version);
- tc->setCompilerCommand(compilerPath);
+ tc->resetToolChain(compilerPath);
result.append(tc);
QMap<Abi::Architecture, AndroidToolChain *>::const_iterator it
diff --git a/src/plugins/ios/iosconfigurations.cpp b/src/plugins/ios/iosconfigurations.cpp
index 87da1bdc8a..ec08acd01d 100644
--- a/src/plugins/ios/iosconfigurations.cpp
+++ b/src/plugins/ios/iosconfigurations.cpp
@@ -170,7 +170,7 @@ void IosConfigurations::updateAutomaticKitList()
toolchain->setDisplayName(displayName);
toolchain->setPlatformCodeGenFlags(p.backendFlags);
toolchain->setPlatformLinkerFlags(p.backendFlags);
- toolchain->setCompilerCommand(p.compilerPath);
+ toolchain->resetToolChain(p.compilerPath);
if (p.architecture == QLatin1String("i386")) {
qCDebug(kitSetupLog) << "setting toolchain Abi for " << toolchain->displayName();
toolchain->setTargetAbi(Abi(Abi::X86Architecture,Abi::MacOS, Abi::GenericMacFlavor,
diff --git a/src/plugins/projectexplorer/gcctoolchain.cpp b/src/plugins/projectexplorer/gcctoolchain.cpp
index 35cf7cd57c..774deca2a7 100644
--- a/src/plugins/projectexplorer/gcctoolchain.cpp
+++ b/src/plugins/projectexplorer/gcctoolchain.cpp
@@ -259,6 +259,19 @@ GccToolChain::GccToolChain(const GccToolChain &tc) :
m_version(tc.m_version)
{ }
+void GccToolChain::setCompilerCommand(const FileName &path)
+{
+ if (path == m_compilerCommand)
+ return;
+
+ m_compilerCommand = path;
+}
+
+void GccToolChain::setSupportedAbis(const QList<Abi> &m_abis)
+{
+ m_supportedAbis = m_abis;
+}
+
void GccToolChain::setMacroCache(const QStringList &allCxxflags, const QByteArray &macros) const
{
if (macros.isNull())
@@ -606,14 +619,14 @@ IOutputParser *GccToolChain::outputParser() const
return new GccParser;
}
-void GccToolChain::setCompilerCommand(const FileName &path)
+void GccToolChain::resetToolChain(const FileName &path)
{
if (path == m_compilerCommand)
return;
bool resetDisplayName = displayName() == defaultDisplayName();
- m_compilerCommand = path;
+ setCompilerCommand(path);
Abi currentAbi = m_targetAbi;
m_supportedAbis = detectSupportedAbis();
@@ -830,6 +843,7 @@ QList<ToolChain *> GccToolChainFactory::autoDetectToolchains(const QString &comp
return result;
tc->setCompilerCommand(compilerPath);
+ tc->setSupportedAbis(abiList);
tc->setTargetAbi(abi);
tc->setDisplayName(tc->defaultDisplayName()); // reset displayname
@@ -885,6 +899,7 @@ void GccToolChainConfigWidget::applyImpl()
Q_ASSERT(tc);
QString displayName = tc->displayName();
tc->setCompilerCommand(m_compilerCommand->fileName());
+ tc->setSupportedAbis(m_abiWidget->supportedAbis());
tc->setTargetAbi(m_abiWidget->currentAbi());
tc->setDisplayName(displayName); // reset display name
tc->setPlatformCodeGenFlags(splitString(m_platformCodeGenFlagsLineEdit->text()));
diff --git a/src/plugins/projectexplorer/gcctoolchain.h b/src/plugins/projectexplorer/gcctoolchain.h
index 5d5e7f6055..57d7523e34 100644
--- a/src/plugins/projectexplorer/gcctoolchain.h
+++ b/src/plugins/projectexplorer/gcctoolchain.h
@@ -83,7 +83,7 @@ public:
bool operator ==(const ToolChain &) const;
- void setCompilerCommand(const Utils::FileName &);
+ void resetToolChain(const Utils::FileName &);
Utils::FileName compilerCommand() const;
void setPlatformCodeGenFlags(const QStringList &);
QStringList platformCodeGenFlags() const;
@@ -101,6 +101,8 @@ protected:
typedef QPair<QStringList, QByteArray> CacheItem;
+ void setCompilerCommand(const Utils::FileName &path);
+ void setSupportedAbis(const QList<Abi> &m_abis);
void setMacroCache(const QStringList &allCxxflags, const QByteArray &macroCache) const;
QByteArray macroCache(const QStringList &allCxxflags) const;
diff --git a/src/plugins/qnx/qnxbaseconfiguration.cpp b/src/plugins/qnx/qnxbaseconfiguration.cpp
index e34f507626..b698f6be15 100644
--- a/src/plugins/qnx/qnxbaseconfiguration.cpp
+++ b/src/plugins/qnx/qnxbaseconfiguration.cpp
@@ -187,7 +187,7 @@ QnxToolChain *QnxBaseConfiguration::createToolChain(QnxArchitecture arch,
const QString &ndkPath)
{
QnxToolChain *toolChain = new QnxToolChain(ProjectExplorer::ToolChain::AutoDetection);
- toolChain->setCompilerCommand(m_qccCompiler);
+ toolChain->resetToolChain(m_qccCompiler);
toolChain->setTargetAbi(Abi((arch == Qnx::ArmLeV7) ? Abi::ArmArchitecture : Abi::X86Architecture,
Abi::LinuxOS, Abi::GenericLinuxFlavor, Abi::ElfFormat, 32));
toolChain->setDisplayName(displayName);
diff --git a/src/plugins/qnx/qnxtoolchain.cpp b/src/plugins/qnx/qnxtoolchain.cpp
index 45023f4bcb..5205e0f9e9 100644
--- a/src/plugins/qnx/qnxtoolchain.cpp
+++ b/src/plugins/qnx/qnxtoolchain.cpp
@@ -242,7 +242,7 @@ void QnxToolChainConfigWidget::applyImpl()
QnxToolChain *tc = static_cast<QnxToolChain *>(toolChain());
Q_ASSERT(tc);
QString displayName = tc->displayName();
- tc->setCompilerCommand(m_compilerCommand->fileName());
+ tc->resetToolChain(m_compilerCommand->fileName());
tc->setDisplayName(displayName); // reset display name
tc->setNdkPath(m_ndkPath->fileName().toString());
tc->setTargetAbi(m_abiWidget->currentAbi());