From 7cc1dc7d1a9d9e469071fd9fd11c98934bc08215 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Sun, 28 Oct 2018 12:56:42 +0200 Subject: [PATCH] ProjectExplorer: Let the user override parallel jobs in arguments Change-Id: I2cfe49686d3430cdd2087842936c3bf0f685d345 Reviewed-by: Eike Ziller --- src/plugins/projectexplorer/makestep.cpp | 27 ++++++++++++++++++++---- src/plugins/projectexplorer/makestep.h | 2 ++ 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/plugins/projectexplorer/makestep.cpp b/src/plugins/projectexplorer/makestep.cpp index 4473c1b5e8f..ee051253ceb 100644 --- a/src/plugins/projectexplorer/makestep.cpp +++ b/src/plugins/projectexplorer/makestep.cpp @@ -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); diff --git a/src/plugins/projectexplorer/makestep.h b/src/plugins/projectexplorer/makestep.h index 8bc1e3f9fbf..1da9a541c46 100644 --- a/src/plugins/projectexplorer/makestep.h +++ b/src/plugins/projectexplorer/makestep.h @@ -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;