diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp index 9ce006cc9f9..e70c70c7aed 100644 --- a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp +++ b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp @@ -33,10 +33,15 @@ #include #include #include +#include +#include +#include #include #include #include #include +#include +#include #include #include #include @@ -560,5 +565,65 @@ CompilationDatabaseEditorFactory::CompilationDatabaseEditorFactory() setCodeFoldingSupported(true); } +CompilationDatabaseBuildConfiguration::CompilationDatabaseBuildConfiguration( + ProjectExplorer::Target *target, Core::Id id) + : ProjectExplorer::BuildConfiguration(target, id) +{ + BuildTargetInfoList appTargetList; + BuildTargetInfo bti; + appTargetList.list.append(bti); + target->setApplicationTargets(appTargetList); +} + +void CompilationDatabaseBuildConfiguration::initialize(const ProjectExplorer::BuildInfo &info) +{ + ProjectExplorer::BuildConfiguration::initialize(info); + BuildStepList *buildSteps = stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD); + buildSteps->appendStep(new ProjectExplorer::ProcessStep(buildSteps)); +} + +ProjectExplorer::NamedWidget *CompilationDatabaseBuildConfiguration::createConfigWidget() +{ + return new ProjectExplorer::NamedWidget(); +} + +ProjectExplorer::BuildConfiguration::BuildType CompilationDatabaseBuildConfiguration::buildType() const +{ + return ProjectExplorer::BuildConfiguration::Release; +} + +CompilationDatabaseBuildConfigurationFactory::CompilationDatabaseBuildConfigurationFactory() +{ + registerBuildConfiguration( + "CompilationDatabase.CompilationDatabaseBuildConfiguration"); + + setSupportedProjectType(Constants::COMPILATIONDATABASEPROJECT_ID); + setSupportedProjectMimeTypeName(Constants::COMPILATIONDATABASEMIMETYPE); +} + +static QList defaultBuildInfos( + const ProjectExplorer::BuildConfigurationFactory *factory, const QString &name) +{ + ProjectExplorer::BuildInfo info(factory); + info.typeName = name; + info.displayName = name; + info.buildType = BuildConfiguration::Release; + QList buildInfos; + buildInfos << info; + return buildInfos; +} + +QList CompilationDatabaseBuildConfigurationFactory::availableBuilds( + const ProjectExplorer::Target * /*parent*/) const +{ + return defaultBuildInfos(this, tr("Release")); +} + +QList CompilationDatabaseBuildConfigurationFactory::availableSetups( + const ProjectExplorer::Kit * /*k*/, const QString & /*projectPath*/) const +{ + return defaultBuildInfos(this, tr("Release")); +} + } // namespace Internal } // namespace CompilationDatabaseProjectManager diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.h b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.h index 0d76833ad29..0351721774c 100644 --- a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.h +++ b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.h @@ -25,6 +25,7 @@ #pragma once +#include #include #include #include @@ -51,7 +52,7 @@ public: explicit CompilationDatabaseProject(const Utils::FileName &filename); ~CompilationDatabaseProject() override; bool needsConfiguration() const override { return false; } - bool needsBuildConfigurations() const override { return false; } + bool needsBuildConfigurations() const override { return true; } private: RestoreResult fromMap(const QVariantMap &map, QString *errorMessage) override; @@ -77,5 +78,30 @@ public: CompilationDatabaseEditorFactory(); }; +class CompilationDatabaseBuildConfiguration : public ProjectExplorer::BuildConfiguration +{ + Q_OBJECT +public: + CompilationDatabaseBuildConfiguration(ProjectExplorer::Target *target, Core::Id id); + ProjectExplorer::NamedWidget *createConfigWidget() override; + BuildType buildType() const override; + +protected: + void initialize(const ProjectExplorer::BuildInfo &info) override; +}; + +class CompilationDatabaseBuildConfigurationFactory + : public ProjectExplorer::BuildConfigurationFactory +{ + Q_OBJECT +public: + CompilationDatabaseBuildConfigurationFactory(); + + QList availableBuilds( + const ProjectExplorer::Target *parent) const override; + QList availableSetups(const ProjectExplorer::Kit *k, + const QString &projectPath) const override; +}; + } // namespace Internal } // namespace CompilationDatabaseProjectManager diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseprojectmanagerplugin.h b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseprojectmanagerplugin.h index e3b56392b19..001e32f5f6c 100644 --- a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseprojectmanagerplugin.h +++ b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseprojectmanagerplugin.h @@ -48,6 +48,7 @@ private: QList createTestObjects() const final; CompilationDatabaseEditorFactory factory; + CompilationDatabaseBuildConfigurationFactory buildConfigFactory; QAction *m_changeProjectRootDirectoryAction; }; diff --git a/src/plugins/projectexplorer/processstep.cpp b/src/plugins/projectexplorer/processstep.cpp index fb21454bb14..aa50847678f 100644 --- a/src/plugins/projectexplorer/processstep.cpp +++ b/src/plugins/projectexplorer/processstep.cpp @@ -24,12 +24,12 @@ ****************************************************************************/ #include "processstep.h" -#include "buildstep.h" #include "buildconfiguration.h" +#include "buildstep.h" +#include "kit.h" #include "processparameters.h" #include "projectexplorerconstants.h" #include "target.h" -#include "kit.h" #include @@ -38,7 +38,6 @@ #include namespace ProjectExplorer { -namespace Internal { const char PROCESS_STEP_ID[] = "ProjectExplorer.ProcessStep"; const char PROCESS_COMMAND_KEY[] = "ProjectExplorer.ProcessStep.Command"; @@ -137,5 +136,4 @@ ProcessStepFactory::ProcessStepFactory() setDisplayName(ProcessStep::tr("Custom Process Step", "item in combobox")); } -} // Internal } // ProjectExplorer diff --git a/src/plugins/projectexplorer/processstep.h b/src/plugins/projectexplorer/processstep.h index f7916bf4a44..241d440ad2e 100644 --- a/src/plugins/projectexplorer/processstep.h +++ b/src/plugins/projectexplorer/processstep.h @@ -27,9 +27,9 @@ #include "abstractprocessstep.h" #include "projectconfigurationaspects.h" +#include "projectexplorer_export.h" namespace ProjectExplorer { -namespace Internal { class ProcessStepFactory : public BuildStepFactory { @@ -37,7 +37,7 @@ public: ProcessStepFactory(); }; -class ProcessStep : public AbstractProcessStep +class PROJECTEXPLORER_EXPORT ProcessStep : public AbstractProcessStep { Q_OBJECT friend class ProcessStepFactory; @@ -56,5 +56,4 @@ private: ProjectExplorer::BaseStringAspect *m_workingDirectory; }; -} // namespace Internal } // namespace ProjectExplorer