bool RvctToolChainConfigWidget::isDirty() const { RvctToolChain *tc = static_cast<RvctToolChain *>(toolChain()); Q_ASSERT(tc); return tc->compilerPath() != m_ui->compilerPath->path() || tc->armVersion() != static_cast<RvctToolChain::ArmVersion>(m_ui->versionComboBox->currentIndex()) || tc->environmentChanges() != environmentChanges(); }
ProjectExplorer::ToolChain *RvctToolChainFactory::restore(const QVariantMap &data) { RvctToolChain *tc = new RvctToolChain(false); if (tc->fromMap(data)) return tc; delete tc; return 0; }
void RvctToolChainConfigWidget::setFromToolChain() { RvctToolChain *tc = static_cast<RvctToolChain *>(toolChain()); Q_ASSERT(tc); m_model->setBaseEnvironment(baseEnvironment(tc)); m_ui->compilerPath->setPath(tc->compilerPath()); m_ui->versionComboBox->setCurrentIndex(static_cast<int>(tc->armVersion())); }
ProjectExplorer::ToolChain *RvctToolChainFactory::create() { RvctToolChain *tc = new RvctToolChain(false); Utils::Environment env = Utils::Environment::systemEnvironment(); if (env.hasKey(QLatin1String(RVCT_LICENSE_KEY))) { tc->setEnvironmentChanges(QList<Utils::EnvironmentItem>() << Utils::EnvironmentItem(QLatin1String(RVCT_LICENSE_KEY), env.value(QLatin1String(RVCT_LICENSE_KEY)))); } tc->setDisplayName(tr("RVCT")); return tc; }
void RvctToolChainConfigWidget::setFromToolChain() { RvctToolChain *tc = static_cast<RvctToolChain *>(toolChain()); Q_ASSERT(tc); m_model->setBaseEnvironment(baseEnvironment(tc)); m_ui->compilerPath->setFileName(tc->compilerCommand()); m_ui->versionComboBox->setCurrentIndex(static_cast<int>(tc->armVersion())); setDebuggerCommand(tc->debuggerCommand()); setMkspecList(tc->mkspecList()); }
void RvctToolChainConfigWidget::apply() { RvctToolChain *tc = static_cast<RvctToolChain *>(toolChain()); Q_ASSERT(tc); QList<Utils::EnvironmentItem> changes = environmentChanges(); tc->setCompilerPath(m_ui->compilerPath->path()); tc->setArmVersion(static_cast<RvctToolChain::ArmVersion>(m_ui->versionComboBox->currentIndex())); tc->setEnvironmentChanges(changes); m_model->setUserChanges(changes); }
RvctToolChain::RvctToolChain(const RvctToolChain &tc) : ToolChain(tc), m_compilerCommand(tc.m_compilerCommand), m_environmentChanges(tc.m_environmentChanges), m_armVersion(tc.m_armVersion), m_debuggerCommand(tc.debuggerCommand()) { }
QList<ProjectExplorer::ToolChain *> RvctToolChainFactory::autoDetect() { Utils::Environment env = Utils::Environment::systemEnvironment(); QMap<QString, QList<Utils::EnvironmentItem> > rvcts; QList<Utils::EnvironmentItem> globalItems; // Find all RVCT..x variables for (Utils::Environment::const_iterator i = env.constBegin(); i != env.constEnd(); ++i) { if (i.key() == QLatin1String(RVCT_LICENSE_KEY)) globalItems.append(Utils::EnvironmentItem(i.key(), i.value())); if (!i.key().startsWith(QLatin1String("RVCT"))) continue; const QString key = i.key().left(6); QList<Utils::EnvironmentItem> values = rvcts.value(key); values.append(Utils::EnvironmentItem(i.key(), i.value())); rvcts.insert(key, values); } // Set up tool chains for each RVCT.. set QList<ProjectExplorer::ToolChain *> result; for (QMap<QString, QList<Utils::EnvironmentItem> >::const_iterator i = rvcts.constBegin(); i != rvcts.constEnd(); ++i) { QList<Utils::EnvironmentItem> changes = i.value(); changes.append(globalItems); Utils::FileName binary = Utils::FileName::fromUserInput(valueOf(changes, QLatin1String("BIN"))); if (binary.isEmpty()) continue; binary.appendPath(QLatin1String(RVCT_BINARY)); QFileInfo fi(binary.toFileInfo()); if (!fi.exists() || !fi.isExecutable()) continue; RvctToolChain::RvctVersion v = RvctToolChain::version(binary); if (v.majorVersion == 0 && v.minorVersion == 0 && v.build == 0) continue; // Failed to start. //: %1 arm version, %2 major version, %3 minor version, %4 build number const QString name = tr("RVCT (%1 %2.%3 Build %4)"); RvctToolChain *tc = new RvctToolChain(true); tc->setCompilerCommand(binary); tc->setEnvironmentChanges(changes); tc->setDisplayName(name.arg(armVersionString(tc->armVersion())) .arg(v.majorVersion).arg(v.minorVersion).arg(v.build)); tc->setVersion(v); tc->setDebuggerCommand(ProjectExplorer::ToolChainManager::instance()->defaultDebugger(tc->targetAbi())); result.append(tc); tc = new RvctToolChain(true); tc->setCompilerCommand(binary); tc->setEnvironmentChanges(changes); tc->setArmVersion(RvctToolChain::ARMv6); tc->setDisplayName(name.arg(armVersionString(tc->armVersion())) .arg(v.majorVersion).arg(v.minorVersion).arg(v.build)); tc->setVersion(v); tc->setDebuggerCommand(ProjectExplorer::ToolChainManager::instance()->defaultDebugger(tc->targetAbi())); result.append(tc); } return result; }