diff options
author | Tobias Hunger <tobias.hunger@digia.com> | 2014-07-21 14:23:09 +0200 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@digia.com> | 2014-07-21 16:40:44 +0200 |
commit | 6175c16a6d0b8b814f332536962b60fe76132a57 (patch) | |
tree | 60580d504ddc40154561c09aee2b25cf2b84a157 | |
parent | 04a9422b48ba442bf610c9c10fa422a79c0fce6e (diff) | |
download | qt-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.cpp | 2 | ||||
-rw-r--r-- | src/plugins/ios/iosconfigurations.cpp | 2 | ||||
-rw-r--r-- | src/plugins/projectexplorer/gcctoolchain.cpp | 19 | ||||
-rw-r--r-- | src/plugins/projectexplorer/gcctoolchain.h | 4 | ||||
-rw-r--r-- | src/plugins/qnx/qnxbaseconfiguration.cpp | 2 | ||||
-rw-r--r-- | src/plugins/qnx/qnxtoolchain.cpp | 2 |
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 ¯os) 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 ¯oCache) 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()); |