ProjectExplorer: Let the user override parallel jobs in arguments

Change-Id: I2cfe49686d3430cdd2087842936c3bf0f685d345
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
Orgad Shaneh
2018-10-28 12:56:42 +02:00
committed by Orgad Shaneh
parent 3056105c66
commit 7cc1dc7d1a
2 changed files with 25 additions and 4 deletions

View File

@@ -196,14 +196,23 @@ void MakeStep::setJobCountOverrideMakeflags(bool override)
m_overrideMakeflags = override;
}
static bool argsContainsJobCount(const QString &str)
{
const QStringList args = Utils::QtcProcess::splitArgs(str, Utils::HostOsInfo::hostOs());
return Utils::anyOf(args, [](const QString &arg) { return arg.startsWith("-j"); });
}
bool MakeStep::makeflagsContainsJobCount() const
{
const Utils::Environment env = environment(buildConfiguration());
if (!env.hasKey(MAKEFLAGS))
return false;
const QStringList args = Utils::QtcProcess::splitArgs(env.value(MAKEFLAGS),
Utils::HostOsInfo::hostOs());
return Utils::anyOf(args, [](const QString &arg) { return arg.startsWith("-j"); });
return argsContainsJobCount(env.value(MAKEFLAGS));
}
bool MakeStep::userArgsContainsJobCount() const
{
return argsContainsJobCount(m_makeArguments);
}
Utils::Environment MakeStep::environment(BuildConfiguration *bc) const
@@ -262,8 +271,10 @@ int MakeStep::defaultJobCount()
QStringList MakeStep::jobArguments() const
{
if (!isJobCountSupported() || (makeflagsContainsJobCount() && !jobCountOverridesMakeflags()))
if (!isJobCountSupported() || userArgsContainsJobCount()
|| (makeflagsContainsJobCount() && !jobCountOverridesMakeflags())) {
return {};
}
return {"-j" + QString::number(m_userJobCount)};
}
@@ -426,6 +437,13 @@ void MakeStepConfigWidget::setUserJobCountVisible(bool visible)
m_ui->overrideMakeflags->setVisible(visible);
}
void MakeStepConfigWidget::setUserJobCountEnabled(bool enabled)
{
m_ui->jobsLabel->setEnabled(enabled);
m_ui->userJobCount->setEnabled(enabled);
m_ui->overrideMakeflags->setEnabled(enabled);
}
void MakeStepConfigWidget::updateDetails()
{
BuildConfiguration *bc = m_makeStep->buildConfiguration();
@@ -446,6 +464,7 @@ void MakeStepConfigWidget::updateDetails()
}
setUserJobCountVisible(m_makeStep->isJobCountSupported());
setUserJobCountEnabled(!m_makeStep->userArgsContainsJobCount());
m_ui->userJobCount->setValue(m_makeStep->jobCount());
m_ui->overrideMakeflags->setCheckState(
m_makeStep->jobCountOverridesMakeflags() ? Qt::Checked : Qt::Unchecked);

View File

@@ -74,6 +74,7 @@ public:
bool jobCountOverridesMakeflags() const;
void setJobCountOverrideMakeflags(bool override);
bool makeflagsContainsJobCount() const;
bool userArgsContainsJobCount() const;
Utils::Environment environment(BuildConfiguration *bc) const;
@@ -110,6 +111,7 @@ private:
void updateDetails();
void setSummaryText(const QString &text);
void setUserJobCountVisible(bool visible);
void setUserJobCountEnabled(bool enabled);
Internal::Ui::MakeStep *m_ui;
MakeStep *m_makeStep;