summaryrefslogtreecommitdiff
path: root/src/plugins/autotoolsprojectmanager
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2017-11-29 12:28:40 +0100
committerhjk <hjk@qt.io>2017-12-08 11:17:55 +0000
commit53a151074ad37d12e730fbd85ec0e0675d00f6d0 (patch)
tree041526d48608270cad2db171696fa6cf7099a852 /src/plugins/autotoolsprojectmanager
parent9d3c5c6ff5ba059f036efae5fd9572fe454b5d84 (diff)
downloadqt-creator-53a151074ad37d12e730fbd85ec0e0675d00f6d0.tar.gz
ProjectExplorer/all: Re-organize BuildSteps/{Deploy,Build}Config setup
This follow the rough pattern of recent *RunConfigurationFactory changes for build and deploy configurations. - Collapse the two lines of constructors similar to what 890c1906e6fb2ec did for RunConfigurations * Deploy* was purely mechanical * Build* ctors are split in connects() in the ctor body to create "empty shell for clone" etc and build step additions in initialize() functions which are only used in the create() case. -- Allows to collapse the shared 'ctor()' functions, too. - Move FooBuildConfigurationFactory::create() implementations to FooBuildConfiguration() constructor. That was a strange and unneeded ping-pong between factories and objects, and furthermore allows one level less of indirection (and for a later, left out here, some reduction of the FooBuildConfiguration interfaces that were only used to accommodate the *Factory::create() functions. - Most {Build,Deploy}Configuration{,Factory} classes had a canHandle(), but there wasn't one in the base classses. Have one there. - Most canHandle() functions were checking simple restrictions on e.g. project or target types, specify those by setters in the constructors instead and check them in the base canHandle() - clone() is generally replaced by a creation of a "shell object" and a fromMap(source->toMap()), implemented in the base, there are two cases left for Android and Qbs that needed(?) some extra polish - generally use canHandle() in base implementation, instead of doing that in all Derived::canFoo() - as a result, canCreate/create/canClone/clone reimplementations are not needed anymore, keep the base implementation for now (could be inlined into their only users later), but de-virtualize them. - Combine Ios{Preset,DSym}BuildStepFactory. There was only one 'dsym' build step they could create. - Split the 'mangled' id into the ProjectConfiguration subtype specific constant identifier, and a QString extraId() bit. Only maintain the mangled id in saved settings. - Make ProjectConfiguration::m_id a constant member, adapt all constructors of derived classe. Not done in this patch: - Finish possible cosmetic changes on top - Add a way to specify restrictions to supported Qt versions (used in Android/Ios), as the base implementation does not depend on the qtsupport plugin - Combine the QList<X> availableFoo() + createFoo(X) function pairs to somthing like a direct QList<struct { X; std::function<X()>; }> fooCreators() to avoid e.g. the baseId.withSuffix() <-> id.suffixAfter(base) pingpong - Remove the *Factories from the global object pool - Do something about priority(). Falling back to plain qmake in android+qmake setup is not helpful. Change-Id: I2be7d88d554c5aa8b7db8edf5b93278e1ae0112a Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Diffstat (limited to 'src/plugins/autotoolsprojectmanager')
-rw-r--r--src/plugins/autotoolsprojectmanager/autogenstep.cpp48
-rw-r--r--src/plugins/autotoolsprojectmanager/autogenstep.h18
-rw-r--r--src/plugins/autotoolsprojectmanager/autoreconfstep.cpp48
-rw-r--r--src/plugins/autotoolsprojectmanager/autoreconfstep.h18
-rw-r--r--src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp149
-rw-r--r--src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.h26
-rw-r--r--src/plugins/autotoolsprojectmanager/configurestep.cpp50
-rw-r--r--src/plugins/autotoolsprojectmanager/configurestep.h18
-rw-r--r--src/plugins/autotoolsprojectmanager/makestep.cpp52
-rw-r--r--src/plugins/autotoolsprojectmanager/makestep.h18
10 files changed, 87 insertions, 358 deletions
diff --git a/src/plugins/autotoolsprojectmanager/autogenstep.cpp b/src/plugins/autotoolsprojectmanager/autogenstep.cpp
index 6f62126e9b..0106a435b8 100644
--- a/src/plugins/autotoolsprojectmanager/autogenstep.cpp
+++ b/src/plugins/autotoolsprojectmanager/autogenstep.cpp
@@ -50,53 +50,21 @@ using namespace ProjectExplorer;
const char AUTOGEN_ADDITIONAL_ARGUMENTS_KEY[] = "AutotoolsProjectManager.AutogenStep.AdditionalArguments";
const char AUTOGEN_STEP_ID[] = "AutotoolsProjectManager.AutogenStep";
-/////////////////////////////
-// AutogenStepFactory class
-/////////////////////////////
-AutogenStepFactory::AutogenStepFactory(QObject *parent) : IBuildStepFactory(parent)
-{ }
-QList<BuildStepInfo> AutogenStepFactory::availableSteps(BuildStepList *parent) const
-{
- if (parent->target()->project()->id() != Constants::AUTOTOOLS_PROJECT_ID
- || parent->id() != ProjectExplorer::Constants::BUILDSTEPS_BUILD)
- return {};
-
- QString display = tr("Autogen", "Display name for AutotoolsProjectManager::AutogenStep id.");
- return {{AUTOGEN_STEP_ID, display}};
-}
+// AutogenStepFactory
-BuildStep *AutogenStepFactory::create(BuildStepList *parent, Core::Id id)
+AutogenStepFactory::AutogenStepFactory()
{
- Q_UNUSED(id)
- return new AutogenStep(parent);
+ registerStep<AutogenStep>(AUTOGEN_STEP_ID);
+ setDisplayName(tr("Autogen", "Display name for AutotoolsProjectManager::AutogenStep id."));
+ setSupportedProjectType(Constants::AUTOTOOLS_PROJECT_ID);
+ setSupportedStepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD);
}
-BuildStep *AutogenStepFactory::clone(BuildStepList *parent, BuildStep *source)
-{
- return new AutogenStep(parent, static_cast<AutogenStep *>(source));
-}
-////////////////////////
-// AutogenStep class
-////////////////////////
-AutogenStep::AutogenStep(BuildStepList *bsl) : AbstractProcessStep(bsl, Core::Id(AUTOGEN_STEP_ID))
-{
- ctor();
-}
-
-AutogenStep::AutogenStep(BuildStepList *bsl, Core::Id id) : AbstractProcessStep(bsl, id)
-{
- ctor();
-}
-
-AutogenStep::AutogenStep(BuildStepList *bsl, AutogenStep *bs) : AbstractProcessStep(bsl, bs),
- m_additionalArguments(bs->additionalArguments())
-{
- ctor();
-}
+// AutogenStep
-void AutogenStep::ctor()
+AutogenStep::AutogenStep(BuildStepList *bsl) : AbstractProcessStep(bsl, AUTOGEN_STEP_ID)
{
setDefaultDisplayName(tr("Autogen"));
}
diff --git a/src/plugins/autotoolsprojectmanager/autogenstep.h b/src/plugins/autotoolsprojectmanager/autogenstep.h
index 010a0cbbec..320c0bacaf 100644
--- a/src/plugins/autotoolsprojectmanager/autogenstep.h
+++ b/src/plugins/autotoolsprojectmanager/autogenstep.h
@@ -48,18 +48,12 @@ class AutogenStepConfigWidget;
*
* This factory is used to create instances of AutogenStep.
*/
-class AutogenStepFactory : public ProjectExplorer::IBuildStepFactory
+class AutogenStepFactory : public ProjectExplorer::BuildStepFactory
{
Q_OBJECT
public:
- AutogenStepFactory(QObject *parent = 0);
-
- QList<ProjectExplorer::BuildStepInfo>
- availableSteps(ProjectExplorer::BuildStepList *parent) const override;
-
- ProjectExplorer::BuildStep *create(ProjectExplorer::BuildStepList *parent, Core::Id id) override;
- ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *source) override;
+ AutogenStepFactory();
};
///////////////////////
@@ -97,14 +91,8 @@ public:
signals:
void additionalArgumentsChanged(const QString &);
-protected:
- AutogenStep(ProjectExplorer::BuildStepList *bsl, AutogenStep *bs);
- AutogenStep(ProjectExplorer::BuildStepList *bsl, Core::Id id);
-
- bool fromMap(const QVariantMap &map) override;
-
private:
- void ctor();
+ bool fromMap(const QVariantMap &map) override;
QString m_additionalArguments;
bool m_runAutogen = false;
diff --git a/src/plugins/autotoolsprojectmanager/autoreconfstep.cpp b/src/plugins/autotoolsprojectmanager/autoreconfstep.cpp
index 0277ca91c9..473e587d78 100644
--- a/src/plugins/autotoolsprojectmanager/autoreconfstep.cpp
+++ b/src/plugins/autotoolsprojectmanager/autoreconfstep.cpp
@@ -49,55 +49,21 @@ using namespace ProjectExplorer;
const char AUTORECONF_STEP_ID[] = "AutotoolsProjectManager.AutoreconfStep";
const char AUTORECONF_ADDITIONAL_ARGUMENTS_KEY[] = "AutotoolsProjectManager.AutoreconfStep.AdditionalArguments";
-////////////////////////////////
-// AutoreconfStepFactory class
-////////////////////////////////
-AutoreconfStepFactory::AutoreconfStepFactory(QObject *parent) : IBuildStepFactory(parent)
-{ }
-
-QList<BuildStepInfo> AutoreconfStepFactory::availableSteps(BuildStepList *parent) const
-{
- if (parent->target()->project()->id() != Constants::AUTOTOOLS_PROJECT_ID
- || parent->id() != ProjectExplorer::Constants::BUILDSTEPS_BUILD)
- return {};
- QString display = tr("Autoreconf", "Display name for AutotoolsProjectManager::AutoreconfStep id.");
- return {{AUTORECONF_STEP_ID, display}};
-}
+// AutoreconfStepFactory class
-BuildStep *AutoreconfStepFactory::create(BuildStepList *parent, Core::Id id)
+AutoreconfStepFactory::AutoreconfStepFactory()
{
- Q_UNUSED(id);
- return new AutoreconfStep(parent);
+ registerStep<AutoreconfStep>(AUTORECONF_STEP_ID);
+ setDisplayName(tr("Autoreconf", "Display name for AutotoolsProjectManager::AutoreconfStep id."));
+ setSupportedProjectType(Constants::AUTOTOOLS_PROJECT_ID);
+ setSupportedStepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD);
}
-BuildStep *AutoreconfStepFactory::clone(BuildStepList *parent, BuildStep *source)
-{
- return new AutoreconfStep(parent, static_cast<AutoreconfStep *>(source));
-}
-/////////////////////////
// AutoreconfStep class
-/////////////////////////
-AutoreconfStep::AutoreconfStep(BuildStepList *bsl) :
- AbstractProcessStep(bsl, Core::Id(AUTORECONF_STEP_ID))
-{
- ctor();
-}
-
-AutoreconfStep::AutoreconfStep(BuildStepList *bsl, Core::Id id) : AbstractProcessStep(bsl, id)
-{
- ctor();
-}
-
-AutoreconfStep::AutoreconfStep(BuildStepList *bsl, AutoreconfStep *bs) :
- AbstractProcessStep(bsl, bs),
- m_additionalArguments(bs->additionalArguments())
-{
- ctor();
-}
-void AutoreconfStep::ctor()
+AutoreconfStep::AutoreconfStep(BuildStepList *bsl) : AbstractProcessStep(bsl, AUTORECONF_STEP_ID)
{
setDefaultDisplayName(tr("Autoreconf"));
}
diff --git a/src/plugins/autotoolsprojectmanager/autoreconfstep.h b/src/plugins/autotoolsprojectmanager/autoreconfstep.h
index ab6fb705ed..160f6fc5c1 100644
--- a/src/plugins/autotoolsprojectmanager/autoreconfstep.h
+++ b/src/plugins/autotoolsprojectmanager/autoreconfstep.h
@@ -47,18 +47,12 @@ class AutoreconfStep;
*
* The factory is used to create instances of AutoreconfStep.
*/
-class AutoreconfStepFactory : public ProjectExplorer::IBuildStepFactory
+class AutoreconfStepFactory : public ProjectExplorer::BuildStepFactory
{
Q_OBJECT
public:
- AutoreconfStepFactory(QObject *parent = 0);
-
- QList<ProjectExplorer::BuildStepInfo>
- availableSteps(ProjectExplorer::BuildStepList *parent) const override;
-
- ProjectExplorer::BuildStep *create(ProjectExplorer::BuildStepList *parent, Core::Id id) override;
- ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *source) override;
+ AutoreconfStepFactory();
};
/////////////////////////
@@ -96,14 +90,8 @@ public:
signals:
void additionalArgumentsChanged(const QString &);
-protected:
- AutoreconfStep(ProjectExplorer::BuildStepList *bsl, AutoreconfStep *bs);
- AutoreconfStep(ProjectExplorer::BuildStepList *bsl, Core::Id id);
-
- bool fromMap(const QVariantMap &map) override;
-
private:
- void ctor();
+ bool fromMap(const QVariantMap &map) override;
QString m_additionalArguments;
bool m_runAutoreconf = false;
diff --git a/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp b/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp
index 82db5188d1..02d9b483dc 100644
--- a/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp
+++ b/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp
@@ -53,11 +53,11 @@ using namespace Internal;
using namespace ProjectExplorer;
using namespace ProjectExplorer::Constants;
-//////////////////////////////////////
-// AutotoolsBuildConfiguration class
-//////////////////////////////////////
-AutotoolsBuildConfiguration::AutotoolsBuildConfiguration(Target *parent) :
- BuildConfiguration(parent, Core::Id(AUTOTOOLS_BC_ID))
+
+// AutotoolsBuildConfiguration
+
+AutotoolsBuildConfiguration::AutotoolsBuildConfiguration(Target *parent)
+ : BuildConfiguration(parent, Constants::AUTOTOOLS_BC_ID)
{
// /<foobar> is used so the un-changed check in setBuildDirectory() works correctly.
// The leading / is to avoid the relative the path expansion in BuildConfiguration::buildDirectory.
@@ -69,82 +69,21 @@ AutotoolsBuildConfiguration::AutotoolsBuildConfiguration(Target *parent) :
});
}
-NamedWidget *AutotoolsBuildConfiguration::createConfigWidget()
-{
- return new AutotoolsBuildSettingsWidget(this);
-}
-
-AutotoolsBuildConfiguration::AutotoolsBuildConfiguration(Target *parent, Core::Id id) :
- BuildConfiguration(parent, id)
-{ }
-
-AutotoolsBuildConfiguration::AutotoolsBuildConfiguration(Target *parent,
- AutotoolsBuildConfiguration *source) :
- BuildConfiguration(parent, source)
-{
- cloneSteps(source);
-}
-
-//////////////////////////////////////
-// AutotoolsBuildConfiguration class
-//////////////////////////////////////
-AutotoolsBuildConfigurationFactory::AutotoolsBuildConfigurationFactory(QObject *parent) :
- IBuildConfigurationFactory(parent)
-{ }
-
-int AutotoolsBuildConfigurationFactory::priority(const Target *parent) const
-{
- return canHandle(parent) ? 0 : -1;
-}
-
-QList<BuildInfo *> AutotoolsBuildConfigurationFactory::availableBuilds(const Target *parent) const
-{
- QList<BuildInfo *> result;
- result << createBuildInfo(parent->kit(), parent->project()->projectDirectory());
- return result;
-}
-
-int AutotoolsBuildConfigurationFactory::priority(const Kit *k, const QString &projectPath) const
-{
- if (k && Utils::mimeTypeForFile(projectPath).matchesName(QLatin1String(Constants::MAKEFILE_MIMETYPE)))
- return 0;
- return -1;
-}
-
-QList<BuildInfo *> AutotoolsBuildConfigurationFactory::availableSetups(const Kit *k, const QString &projectPath) const
-{
- QList<BuildInfo *> result;
- BuildInfo *info = createBuildInfo(k,
- Utils::FileName::fromString(AutotoolsProject::defaultBuildDirectory(projectPath)));
- //: The name of the build configuration created by default for a autotools project.
- info->displayName = tr("Default");
- result << info;
- return result;
-}
-
-BuildConfiguration *AutotoolsBuildConfigurationFactory::create(Target *parent, const BuildInfo *info) const
+void AutotoolsBuildConfiguration::initialize(const BuildInfo *info)
{
- QTC_ASSERT(parent, return 0);
- QTC_ASSERT(info->factory() == this, return 0);
- QTC_ASSERT(info->kitId == parent->kit()->id(), return 0);
- QTC_ASSERT(!info->displayName.isEmpty(), return 0);
-
- AutotoolsBuildConfiguration *bc = new AutotoolsBuildConfiguration(parent);
- bc->setDisplayName(info->displayName);
- bc->setDefaultDisplayName(info->displayName);
- bc->setBuildDirectory(info->buildDirectory);
+ BuildConfiguration::initialize(info);
- BuildStepList *buildSteps = bc->stepList(Core::Id(BUILDSTEPS_BUILD));
+ BuildStepList *buildSteps = stepList(BUILDSTEPS_BUILD);
// ### Build Steps Build ###
// autogen.sh or autoreconf
- QFile autogenFile(parent->project()->projectDirectory().toString() + QLatin1String("/autogen.sh"));
+ QFile autogenFile(target()->project()->projectDirectory().toString() + "/autogen.sh");
if (autogenFile.exists()) {
AutogenStep *autogenStep = new AutogenStep(buildSteps);
buildSteps->insertStep(0, autogenStep);
} else {
AutoreconfStep *autoreconfStep = new AutoreconfStep(buildSteps);
- autoreconfStep->setAdditionalArguments(QLatin1String("--force --install"));
+ autoreconfStep->setAdditionalArguments("--force --install");
buildSteps->insertStep(0, autoreconfStep);
}
@@ -158,67 +97,53 @@ BuildConfiguration *AutotoolsBuildConfigurationFactory::create(Target *parent, c
makeStep->setBuildTarget(QLatin1String("all"), /*on =*/ true);
// ### Build Steps Clean ###
- BuildStepList *cleanSteps = bc->stepList(Core::Id(BUILDSTEPS_CLEAN));
+ BuildStepList *cleanSteps = stepList(BUILDSTEPS_CLEAN);
MakeStep *cleanMakeStep = new MakeStep(cleanSteps);
- cleanMakeStep->setAdditionalArguments(QLatin1String("clean"));
+ cleanMakeStep->setAdditionalArguments("clean");
cleanMakeStep->setClean(true);
cleanSteps->insertStep(0, cleanMakeStep);
-
- return bc;
}
-bool AutotoolsBuildConfigurationFactory::canHandle(const Target *t) const
+NamedWidget *AutotoolsBuildConfiguration::createConfigWidget()
{
- QTC_ASSERT(t, return false);
-
- if (!t->project()->supportsKit(t->kit()))
- return false;
- return t->project()->id() == Constants::AUTOTOOLS_PROJECT_ID;
+ return new AutotoolsBuildSettingsWidget(this);
}
-BuildInfo *AutotoolsBuildConfigurationFactory::createBuildInfo(const Kit *k,
- const Utils::FileName &buildDir) const
-{
- BuildInfo *info = new BuildInfo(this);
- info->typeName = tr("Build");
- info->buildDirectory = buildDir;
- info->kitId = k->id();
- return info;
-}
+// AutotoolsBuildConfiguration class
-bool AutotoolsBuildConfigurationFactory::canClone(const Target *parent, BuildConfiguration *source) const
+AutotoolsBuildConfigurationFactory::AutotoolsBuildConfigurationFactory()
{
- if (!canHandle(parent))
- return false;
- return source->id() == AUTOTOOLS_BC_ID;
+ registerBuildConfiguration<AutotoolsBuildConfiguration>(AUTOTOOLS_BC_ID);
+ setSupportedProjectType(Constants::AUTOTOOLS_PROJECT_ID);
+ setSupportedProjectMimeTypeName(Constants::MAKEFILE_MIMETYPE);
}
-AutotoolsBuildConfiguration *AutotoolsBuildConfigurationFactory::clone(Target *parent, BuildConfiguration *source)
+QList<BuildInfo *> AutotoolsBuildConfigurationFactory::availableBuilds(const Target *parent) const
{
- if (!canClone(parent, source))
- return 0;
-
- AutotoolsBuildConfiguration *origin = static_cast<AutotoolsBuildConfiguration *>(source);
- return new AutotoolsBuildConfiguration(parent, origin);
+ return {createBuildInfo(parent->kit(), parent->project()->projectDirectory())};
}
-bool AutotoolsBuildConfigurationFactory::canRestore(const Target *parent, const QVariantMap &map) const
+QList<BuildInfo *> AutotoolsBuildConfigurationFactory::availableSetups(const Kit *k, const QString &projectPath) const
{
- if (!canHandle(parent))
- return false;
- return idFromMap(map) == AUTOTOOLS_BC_ID;
+ QList<BuildInfo *> result;
+ BuildInfo *info = createBuildInfo(k,
+ Utils::FileName::fromString(AutotoolsProject::defaultBuildDirectory(projectPath)));
+ //: The name of the build configuration created by default for a autotools project.
+ info->displayName = tr("Default");
+ result << info;
+ return result;
}
-AutotoolsBuildConfiguration *AutotoolsBuildConfigurationFactory::restore(Target *parent, const QVariantMap &map)
+BuildInfo *AutotoolsBuildConfigurationFactory::createBuildInfo(const Kit *k,
+ const Utils::FileName &buildDir) const
{
- if (!canRestore(parent, map))
- return 0;
- AutotoolsBuildConfiguration *bc = new AutotoolsBuildConfiguration(parent);
- if (bc->fromMap(map))
- return bc;
- delete bc;
- return 0;
+ BuildInfo *info = new BuildInfo(this);
+ info->typeName = tr("Build");
+ info->buildDirectory = buildDir;
+ info->kitId = k->id();
+
+ return info;
}
BuildConfiguration::BuildType AutotoolsBuildConfiguration::buildType() const
diff --git a/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.h b/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.h
index 3d7f170f5b..f2bafd3624 100644
--- a/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.h
+++ b/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.h
@@ -34,24 +34,16 @@ namespace Utils { class FileName; }
namespace AutotoolsProjectManager {
namespace Internal {
-class AutotoolsTarget;
-class AutotoolsBuildConfigurationFactory;
-
class AutotoolsBuildConfiguration : public ProjectExplorer::BuildConfiguration
{
Q_OBJECT
- friend class AutotoolsBuildConfigurationFactory;
-public:
+ friend class ProjectExplorer::IBuildConfigurationFactory;
explicit AutotoolsBuildConfiguration(ProjectExplorer::Target *parent);
+ void initialize(const ProjectExplorer::BuildInfo *info) override;
ProjectExplorer::NamedWidget *createConfigWidget() override;
-
BuildType buildType() const override;
-
-protected:
- AutotoolsBuildConfiguration(ProjectExplorer::Target *parent, Core::Id id);
- AutotoolsBuildConfiguration(ProjectExplorer::Target *parent, AutotoolsBuildConfiguration *source);
};
class AutotoolsBuildConfigurationFactory : public ProjectExplorer::IBuildConfigurationFactory
@@ -59,23 +51,13 @@ class AutotoolsBuildConfigurationFactory : public ProjectExplorer::IBuildConfigu
Q_OBJECT
public:
- explicit AutotoolsBuildConfigurationFactory(QObject *parent = 0);
+ AutotoolsBuildConfigurationFactory();
- int priority(const ProjectExplorer::Target *parent) const override;
+private:
QList<ProjectExplorer::BuildInfo *> availableBuilds(const ProjectExplorer::Target *parent) const override;
- int priority(const ProjectExplorer::Kit *k, const QString &projectPath) const override;
QList<ProjectExplorer::BuildInfo *> availableSetups(const ProjectExplorer::Kit *k,
const QString &projectPath) const override;
- ProjectExplorer::BuildConfiguration *create(ProjectExplorer::Target *parent,
- const ProjectExplorer::BuildInfo *info) const override;
-
- bool canClone(const ProjectExplorer::Target *parent, ProjectExplorer::BuildConfiguration *source) const override;
- AutotoolsBuildConfiguration *clone(ProjectExplorer::Target *parent, ProjectExplorer::BuildConfiguration *source) override;
- bool canRestore(const ProjectExplorer::Target *parent, const QVariantMap &map) const override;
- AutotoolsBuildConfiguration *restore(ProjectExplorer::Target *parent, const QVariantMap &map) override;
-private:
- bool canHandle(const ProjectExplorer::Target *t) const;
ProjectExplorer::BuildInfo *createBuildInfo(const ProjectExplorer::Kit *k, const Utils::FileName &buildDir) const;
};
diff --git a/src/plugins/autotoolsprojectmanager/configurestep.cpp b/src/plugins/autotoolsprojectmanager/configurestep.cpp
index 8fdb2c6728..7d370e2ded 100644
--- a/src/plugins/autotoolsprojectmanager/configurestep.cpp
+++ b/src/plugins/autotoolsprojectmanager/configurestep.cpp
@@ -64,55 +64,21 @@ static QString projectDirRelativeToBuildDir(BuildConfiguration *bc) {
return projDirToBuildDir;
}
-////////////////////////////////
-// ConfigureStepFactory Class
-////////////////////////////////
-ConfigureStepFactory::ConfigureStepFactory(QObject *parent) : IBuildStepFactory(parent)
-{ }
-QList<BuildStepInfo> ConfigureStepFactory::availableSteps(BuildStepList *parent) const
-{
- if (parent->target()->project()->id() != Constants::AUTOTOOLS_PROJECT_ID
- || parent->id() != ProjectExplorer::Constants::BUILDSTEPS_BUILD)
- return {};
-
- QString display = tr("Configure", "Display name for AutotoolsProjectManager::ConfigureStep id.");
- return {{CONFIGURE_STEP_ID, display}};
-}
-
-BuildStep *ConfigureStepFactory::create(BuildStepList *parent, Core::Id id)
-{
- Q_UNUSED(id)
- return new ConfigureStep(parent);
-}
-
-BuildStep *ConfigureStepFactory::clone(BuildStepList *parent, BuildStep *source)
-{
- return new ConfigureStep(parent, static_cast<ConfigureStep *>(source));
-}
+// ConfigureStepFactory
-
-////////////////////////
-// ConfigureStep class
-////////////////////////
-ConfigureStep::ConfigureStep(BuildStepList* bsl) :
- AbstractProcessStep(bsl, Core::Id(CONFIGURE_STEP_ID))
+ConfigureStepFactory::ConfigureStepFactory()
{
- ctor();
+ registerStep<ConfigureStep>(CONFIGURE_STEP_ID);
+ setDisplayName(tr("Configure", "Display name for AutotoolsProjectManager::ConfigureStep id."));
+ setSupportedProjectType(Constants::AUTOTOOLS_PROJECT_ID);
+ setSupportedStepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD);
}
-ConfigureStep::ConfigureStep(BuildStepList *bsl, Core::Id id) : AbstractProcessStep(bsl, id)
-{
- ctor();
-}
-ConfigureStep::ConfigureStep(BuildStepList *bsl, ConfigureStep *bs) : AbstractProcessStep(bsl, bs),
- m_additionalArguments(bs->additionalArguments())
-{
- ctor();
-}
+// ConfigureStep
-void ConfigureStep::ctor()
+ConfigureStep::ConfigureStep(BuildStepList *bsl) : AbstractProcessStep(bsl, CONFIGURE_STEP_ID)
{
setDefaultDisplayName(tr("Configure"));
}
diff --git a/src/plugins/autotoolsprojectmanager/configurestep.h b/src/plugins/autotoolsprojectmanager/configurestep.h
index a809e0a63e..2f5ce3e65e 100644
--- a/src/plugins/autotoolsprojectmanager/configurestep.h
+++ b/src/plugins/autotoolsprojectmanager/configurestep.h
@@ -47,18 +47,12 @@ class ConfigureStepConfigWidget;
*
* The factory is used to create instances of ConfigureStep.
*/
-class ConfigureStepFactory : public ProjectExplorer::IBuildStepFactory
+class ConfigureStepFactory : public ProjectExplorer::BuildStepFactory
{
Q_OBJECT
public:
- ConfigureStepFactory(QObject *parent = 0);
-
- QList<ProjectExplorer::BuildStepInfo>
- availableSteps(ProjectExplorer::BuildStepList *parent) const override;
-
- ProjectExplorer::BuildStep *create(ProjectExplorer::BuildStepList *parent, Core::Id id) override;
- ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *source) override;
+ ConfigureStepFactory();
};
//////////////////////////
@@ -97,14 +91,8 @@ signals:
void additionalArgumentsChanged(const QString &);
void buildDirectoryChanged();
-protected:
- ConfigureStep(ProjectExplorer::BuildStepList *bsl, ConfigureStep *bs);
- ConfigureStep(ProjectExplorer::BuildStepList *bsl, Core::Id id);
-
- bool fromMap(const QVariantMap &map) override;
-
private:
- void ctor();
+ bool fromMap(const QVariantMap &map) override;
QString m_additionalArguments;
bool m_runConfigure = false;
diff --git a/src/plugins/autotoolsprojectmanager/makestep.cpp b/src/plugins/autotoolsprojectmanager/makestep.cpp
index 3fb0ec4105..596c2a025b 100644
--- a/src/plugins/autotoolsprojectmanager/makestep.cpp
+++ b/src/plugins/autotoolsprojectmanager/makestep.cpp
@@ -56,53 +56,23 @@ const char CLEAN_KEY[] = "AutotoolsProjectManager.MakeStep.Clean";
const char BUILD_TARGETS_KEY[] = "AutotoolsProjectManager.MakeStep.BuildTargets";
const char MAKE_STEP_ADDITIONAL_ARGUMENTS_KEY[] = "AutotoolsProjectManager.MakeStep.AdditionalArguments";
-//////////////////////////
-// MakeStepFactory class
-//////////////////////////
-MakeStepFactory::MakeStepFactory(QObject *parent) : IBuildStepFactory(parent)
-{ setObjectName("Autotools::MakeStepFactory"); }
-QList<BuildStepInfo> MakeStepFactory::availableSteps(BuildStepList *parent) const
-{
- if (parent->target()->project()->id() != AUTOTOOLS_PROJECT_ID)
- return {};
-
- return {{MAKE_STEP_ID, tr("Make", "Display name for AutotoolsProjectManager::MakeStep id.")}};
-}
-
-BuildStep *MakeStepFactory::create(BuildStepList *parent, Core::Id id)
-{
- Q_UNUSED(id)
- return new MakeStep(parent);
-}
-
-BuildStep *MakeStepFactory::clone(BuildStepList *parent, BuildStep *source)
-{
- return new MakeStep(parent, static_cast<MakeStep *>(source));
-}
+// MakeStepFactory
-/////////////////////
-// MakeStep class
-/////////////////////
-MakeStep::MakeStep(BuildStepList* bsl) : AbstractProcessStep(bsl, Core::Id(MAKE_STEP_ID))
+MakeStepFactory::MakeStepFactory()
{
- ctor();
+ setObjectName("Autotools::MakeStepFactory");
+ registerStep<MakeStep>(MAKE_STEP_ID);
+ setDisplayName(tr("Make", "Display name for AutotoolsProjectManager::MakeStep id."));
+ setSupportedProjectType(AUTOTOOLS_PROJECT_ID);
+ setSupportedStepLists({ProjectExplorer::Constants::BUILDSTEPS_BUILD,
+ ProjectExplorer::Constants::BUILDSTEPS_CLEAN,
+ ProjectExplorer::Constants::BUILDSTEPS_DEPLOY});
}
-MakeStep::MakeStep(BuildStepList *bsl, Core::Id id) : AbstractProcessStep(bsl, id)
-{
- ctor();
-}
-
-MakeStep::MakeStep(BuildStepList *bsl, MakeStep *bs) : AbstractProcessStep(bsl, bs),
- m_buildTargets(bs->m_buildTargets),
- m_additionalArguments(bs->additionalArguments()),
- m_clean(bs->m_clean)
-{
- ctor();
-}
+// MakeStep
-void MakeStep::ctor()
+MakeStep::MakeStep(BuildStepList *bsl) : AbstractProcessStep(bsl, MAKE_STEP_ID)
{
setDefaultDisplayName(tr("Make"));
}
diff --git a/src/plugins/autotoolsprojectmanager/makestep.h b/src/plugins/autotoolsprojectmanager/makestep.h
index fdbbdfd4ce..1ded149366 100644
--- a/src/plugins/autotoolsprojectmanager/makestep.h
+++ b/src/plugins/autotoolsprojectmanager/makestep.h
@@ -48,18 +48,12 @@ class MakeStep;
*
* The factory is used to create instances of MakeStep.
*/
-class MakeStepFactory : public ProjectExplorer::IBuildStepFactory
+class MakeStepFactory : public ProjectExplorer::BuildStepFactory
{
Q_OBJECT
public:
- MakeStepFactory(QObject *parent = 0);
-
- QList<ProjectExplorer::BuildStepInfo>
- availableSteps(ProjectExplorer::BuildStepList *parent) const override;
-
- ProjectExplorer::BuildStep *create(ProjectExplorer::BuildStepList *parent, Core::Id id) override;
- ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *source) override;
+ MakeStepFactory();
};
/////////////////////
@@ -98,14 +92,8 @@ public:
signals:
void additionalArgumentsChanged(const QString &);
-protected:
- MakeStep(ProjectExplorer::BuildStepList *bsl, MakeStep *bs);
- MakeStep(ProjectExplorer::BuildStepList *bsl, Core::Id id);
-
- bool fromMap(const QVariantMap &map) override;
-
private:
- void ctor();
+ bool fromMap(const QVariantMap &map) override;
QStringList m_buildTargets;
QString m_additionalArguments;