diff --git a/src/plugins/android/androidtoolchain.cpp b/src/plugins/android/androidtoolchain.cpp index 68a8ff2f3a7..1868ec5b1c7 100644 --- a/src/plugins/android/androidtoolchain.cpp +++ b/src/plugins/android/androidtoolchain.cpp @@ -386,7 +386,7 @@ QList 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::const_iterator it diff --git a/src/plugins/ios/iosconfigurations.cpp b/src/plugins/ios/iosconfigurations.cpp index 87da1bdc8a8..ec08acd01d9 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 35cf7cd57cc..774deca2a7b 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 &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 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 5d5e7f60559..57d7523e34c 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 CacheItem; + void setCompilerCommand(const Utils::FileName &path); + void setSupportedAbis(const QList &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 e34f5076265..b698f6be15e 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 45023f4bcb4..5205e0f9e96 100644 --- a/src/plugins/qnx/qnxtoolchain.cpp +++ b/src/plugins/qnx/qnxtoolchain.cpp @@ -242,7 +242,7 @@ void QnxToolChainConfigWidget::applyImpl() QnxToolChain *tc = static_cast(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());