aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/genericprojectmanager/genericmakestep.cpp
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2018-05-09 09:48:23 +0200
committerEike Ziller <eike.ziller@qt.io>2018-05-16 12:04:40 +0000
commit0db5f13dd1cb38e8556b054accc4356f87ecd795 (patch)
tree4e4171fdb7850c4b43ed628e0b86d959c1169ed2 /src/plugins/genericprojectmanager/genericmakestep.cpp
parent01dd22dc08e8169f60df32f4618a5e2dabaea177 (diff)
Move generic make step to project explorer
As a first step of creating a generic base for the 3 existing implementations. Change-Id: I2456db74cb635316f97a247e2a2b6bdb34931440 Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Diffstat (limited to 'src/plugins/genericprojectmanager/genericmakestep.cpp')
-rw-r--r--src/plugins/genericprojectmanager/genericmakestep.cpp220
1 files changed, 3 insertions, 217 deletions
diff --git a/src/plugins/genericprojectmanager/genericmakestep.cpp b/src/plugins/genericprojectmanager/genericmakestep.cpp
index 37951d0308..739c8211a0 100644
--- a/src/plugins/genericprojectmanager/genericmakestep.cpp
+++ b/src/plugins/genericprojectmanager/genericmakestep.cpp
@@ -25,28 +25,13 @@
#include "genericmakestep.h"
#include "genericprojectconstants.h"
-#include "genericproject.h"
-#include "ui_genericmakestep.h"
-#include "genericbuildconfiguration.h"
-#include <projectexplorer/buildsteplist.h>
+#include <projectexplorer/buildconfiguration.h>
#include <projectexplorer/gnumakeparser.h>
#include <projectexplorer/kitinformation.h>
-#include <projectexplorer/projectexplorer.h>
#include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/target.h>
-#include <projectexplorer/toolchain.h>
-#include <qtsupport/qtkitinformation.h>
-#include <qtsupport/qtparser.h>
-
-#include <utils/stringutils.h>
-#include <utils/qtcassert.h>
-#include <utils/qtcprocess.h>
-
-#include <QDir>
-
-using namespace Core;
using namespace ProjectExplorer;
namespace GenericProjectManager {
@@ -56,17 +41,11 @@ const char GENERIC_MS_ID[] = "GenericProjectManager.GenericMakeStep";
const char GENERIC_MS_DISPLAY_NAME[] = QT_TRANSLATE_NOOP("GenericProjectManager::Internal::GenericMakeStep",
"Make");
-const char BUILD_TARGETS_KEY[] = "GenericProjectManager.GenericMakeStep.BuildTargets";
-const char MAKE_ARGUMENTS_KEY[] = "GenericProjectManager.GenericMakeStep.MakeArguments";
-const char MAKE_COMMAND_KEY[] = "GenericProjectManager.GenericMakeStep.MakeCommand";
-const char CLEAN_KEY[] = "GenericProjectManager.GenericMakeStep.Clean";
-
GenericMakeStep::GenericMakeStep(BuildStepList *parent, const QString &buildTarget)
- : AbstractProcessStep(parent, GENERIC_MS_ID)
+ : MakeStep(parent, GENERIC_MS_ID, buildTarget, {"all", "clean"})
{
setDefaultDisplayName(QCoreApplication::translate("GenericProjectManager::Internal::GenericMakeStep",
GENERIC_MS_DISPLAY_NAME));
- setBuildTarget(buildTarget, true);
}
bool GenericMakeStep::init(QList<const BuildStep *> &earlierSteps)
@@ -99,7 +78,7 @@ bool GenericMakeStep::init(QList<const BuildStep *> &earlierSteps)
// If we are cleaning, then make can fail with an error code, but that doesn't mean
// we should stop the clean queue
// That is mostly so that rebuild works on an already clean project
- setIgnoreReturnValue(m_clean);
+ setIgnoreReturnValue(isClean());
setOutputParser(new GnuMakeParser());
IOutputParser *parser = target()->kit()->createOutputParser();
@@ -110,199 +89,6 @@ bool GenericMakeStep::init(QList<const BuildStep *> &earlierSteps)
return AbstractProcessStep::init(earlierSteps);
}
-void GenericMakeStep::setClean(bool clean)
-{
- m_clean = clean;
-}
-
-bool GenericMakeStep::isClean() const
-{
- return m_clean;
-}
-
-QVariantMap GenericMakeStep::toMap() const
-{
- QVariantMap map(AbstractProcessStep::toMap());
-
- map.insert(BUILD_TARGETS_KEY, m_buildTargets);
- map.insert(MAKE_ARGUMENTS_KEY, m_makeArguments);
- map.insert(MAKE_COMMAND_KEY, m_makeCommand);
- map.insert(CLEAN_KEY, m_clean);
- return map;
-}
-
-bool GenericMakeStep::fromMap(const QVariantMap &map)
-{
- m_buildTargets = map.value(BUILD_TARGETS_KEY).toStringList();
- m_makeArguments = map.value(MAKE_ARGUMENTS_KEY).toString();
- m_makeCommand = map.value(MAKE_COMMAND_KEY).toString();
- m_clean = map.value(CLEAN_KEY).toBool();
-
- return BuildStep::fromMap(map);
-}
-
-QString GenericMakeStep::allArguments() const
-{
- QString args = m_makeArguments;
- Utils::QtcProcess::addArgs(&args, m_buildTargets);
- return args;
-}
-
-QString GenericMakeStep::makeCommand(const Utils::Environment &environment) const
-{
- QString command = m_makeCommand;
- if (command.isEmpty()) {
- ToolChain *tc = ToolChainKitInformation::toolChain(target()->kit(), ProjectExplorer::Constants::CXX_LANGUAGE_ID);
- if (tc)
- command = tc->makeCommand(environment);
- else
- command = "make";
- }
- return command;
-}
-
-void GenericMakeStep::run(QFutureInterface<bool> &fi)
-{
- AbstractProcessStep::run(fi);
-}
-
-BuildStepConfigWidget *GenericMakeStep::createConfigWidget()
-{
- return new GenericMakeStepConfigWidget(this);
-}
-
-bool GenericMakeStep::immutable() const
-{
- return false;
-}
-
-bool GenericMakeStep::buildsTarget(const QString &target) const
-{
- return m_buildTargets.contains(target);
-}
-
-void GenericMakeStep::setBuildTarget(const QString &target, bool on)
-{
- QStringList old = m_buildTargets;
- if (on && !old.contains(target))
- old << target;
- else if (!on && old.contains(target))
- old.removeOne(target);
-
- m_buildTargets = old;
-}
-
-//
-// GenericMakeStepConfigWidget
-//
-
-GenericMakeStepConfigWidget::GenericMakeStepConfigWidget(GenericMakeStep *makeStep) :
- m_makeStep(makeStep)
-{
- m_ui = new Ui::GenericMakeStep;
- m_ui->setupUi(this);
-
- const auto pro = static_cast<GenericProject *>(m_makeStep->target()->project());
- const auto buildTargets = pro->buildTargets();
- for (const QString &target : buildTargets) {
- auto item = new QListWidgetItem(target, m_ui->targetsList);
- item->setFlags(item->flags() | Qt::ItemIsUserCheckable);
- item->setCheckState(m_makeStep->buildsTarget(item->text()) ? Qt::Checked : Qt::Unchecked);
- }
-
- m_ui->makeLineEdit->setText(m_makeStep->m_makeCommand);
- m_ui->makeArgumentsLineEdit->setText(m_makeStep->m_makeArguments);
- updateMakeOverrideLabel();
- updateDetails();
-
- connect(m_ui->targetsList, &QListWidget::itemChanged,
- this, &GenericMakeStepConfigWidget::itemChanged);
- connect(m_ui->makeLineEdit, &QLineEdit::textEdited,
- this, &GenericMakeStepConfigWidget::makeLineEditTextEdited);
- connect(m_ui->makeArgumentsLineEdit, &QLineEdit::textEdited,
- this, &GenericMakeStepConfigWidget::makeArgumentsLineEditTextEdited);
-
- connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::settingsChanged,
- this, &GenericMakeStepConfigWidget::updateMakeOverrideLabel);
- connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::settingsChanged,
- this, &GenericMakeStepConfigWidget::updateDetails);
-
- connect(m_makeStep->target(), &Target::kitChanged,
- this, &GenericMakeStepConfigWidget::updateMakeOverrideLabel);
-
- pro->subscribeSignal(&BuildConfiguration::environmentChanged, this, [this]() {
- if (static_cast<BuildConfiguration *>(sender())->isActive()) {
- updateMakeOverrideLabel();
- updateDetails();
- }
- });
- connect(pro, &Project::activeProjectConfigurationChanged,
- this, [this](ProjectConfiguration *pc) {
- if (pc && pc->isActive()) {
- updateMakeOverrideLabel();
- updateDetails();
- }
- });
-}
-
-GenericMakeStepConfigWidget::~GenericMakeStepConfigWidget()
-{
- delete m_ui;
-}
-
-QString GenericMakeStepConfigWidget::displayName() const
-{
- return tr("Make", "GenericMakestep display name.");
-}
-
-void GenericMakeStepConfigWidget::updateMakeOverrideLabel()
-{
- BuildConfiguration *bc = m_makeStep->buildConfiguration();
- if (!bc)
- bc = m_makeStep->target()->activeBuildConfiguration();
-
- m_ui->makeLabel->setText(tr("Override %1:").arg(QDir::toNativeSeparators(m_makeStep->makeCommand(bc->environment()))));
-}
-
-void GenericMakeStepConfigWidget::updateDetails()
-{
- BuildConfiguration *bc = m_makeStep->buildConfiguration();
- if (!bc)
- bc = m_makeStep->target()->activeBuildConfiguration();
-
- ProcessParameters param;
- param.setMacroExpander(bc->macroExpander());
- param.setWorkingDirectory(bc->buildDirectory().toString());
- param.setEnvironment(bc->environment());
- param.setCommand(m_makeStep->makeCommand(bc->environment()));
- param.setArguments(m_makeStep->allArguments());
- m_summaryText = param.summary(displayName());
- emit updateSummary();
-}
-
-QString GenericMakeStepConfigWidget::summaryText() const
-{
- return m_summaryText;
-}
-
-void GenericMakeStepConfigWidget::itemChanged(QListWidgetItem *item)
-{
- m_makeStep->setBuildTarget(item->text(), item->checkState() & Qt::Checked);
- updateDetails();
-}
-
-void GenericMakeStepConfigWidget::makeLineEditTextEdited()
-{
- m_makeStep->m_makeCommand = m_ui->makeLineEdit->text();
- updateDetails();
-}
-
-void GenericMakeStepConfigWidget::makeArgumentsLineEditTextEdited()
-{
- m_makeStep->m_makeArguments = m_ui->makeArgumentsLineEdit->text();
- updateDetails();
-}
-
//
// GenericMakeAllStepFactory
//