diff --git a/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp b/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp index a4dba21818e..64f31d6642c 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp +++ b/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp @@ -60,9 +60,9 @@ AutotoolsBuildConfiguration::AutotoolsBuildConfiguration(Target *parent, Core::I setConfigWidgetDisplayName(tr("Autotools Manager")); } -void AutotoolsBuildConfiguration::initialize(const BuildInfo &info) +void AutotoolsBuildConfiguration::initialize() { - BuildConfiguration::initialize(info); + BuildConfiguration::initialize(); BuildStepList *buildSteps = stepList(BUILDSTEPS_BUILD); @@ -111,11 +111,5 @@ QList AutotoolsBuildConfigurationFactory::availableBuilds return {info}; } -BuildConfiguration::BuildType AutotoolsBuildConfiguration::buildType() const -{ - // TODO: Should I return something different from Unknown? - return Unknown; -} - } // Internal } // AutotoolsProjectManager diff --git a/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.h b/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.h index 13d23834c31..1b2bcf80214 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.h +++ b/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.h @@ -39,8 +39,7 @@ class AutotoolsBuildConfiguration : public ProjectExplorer::BuildConfiguration friend class ProjectExplorer::BuildConfigurationFactory; AutotoolsBuildConfiguration(ProjectExplorer::Target *parent, Core::Id id); - void initialize(const ProjectExplorer::BuildInfo &info) override; - BuildType buildType() const override; + void initialize() override; }; class AutotoolsBuildConfigurationFactory : public ProjectExplorer::BuildConfigurationFactory diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index bc4b471d7f8..0db829388c0 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -171,9 +171,9 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *parent, Core::Id id) }); } -void CMakeBuildConfiguration::initialize(const BuildInfo &info) +void CMakeBuildConfiguration::initialize() { - BuildConfiguration::initialize(info); + BuildConfiguration::initialize(); BuildStepList *buildSteps = stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD); buildSteps->appendStep(Constants::CMAKE_BUILD_STEP_ID); @@ -212,14 +212,15 @@ void CMakeBuildConfiguration::initialize(const BuildInfo &info) BuildStepList *cleanSteps = stepList(ProjectExplorer::Constants::BUILDSTEPS_CLEAN); cleanSteps->appendStep(Constants::CMAKE_BUILD_STEP_ID); - if (info.buildDirectory.isEmpty()) { + if (initialBuildDirectory().isEmpty()) { auto project = target()->project(); setBuildDirectory(CMakeBuildConfiguration::shadowBuildDirectory(project->projectFilePath(), target()->kit(), - info.displayName, info.buildType)); + initialDisplayName(), + initialBuildType())); } - auto extraInfo = info.extraInfo.value(); - setConfigurationForCMake(extraInfo.configuration); + auto info = extraInfo().value(); + setConfigurationForCMake(info.configuration); } QString CMakeBuildConfiguration::disabledReason() const diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h index 7619fc23633..8fa9483096c 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h @@ -84,7 +84,7 @@ private: QVariantMap toMap() const override; BuildType buildType() const override; - void initialize(const ProjectExplorer::BuildInfo &info) override; + void initialize() override; QString disabledReason() const override; ProjectExplorer::NamedWidget *createConfigWidget() override; diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp index 63b301af85f..17cd53817da 100644 --- a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp +++ b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp @@ -502,9 +502,9 @@ CompilationDatabaseBuildConfiguration::CompilationDatabaseBuildConfiguration( target->setApplicationTargets({BuildTargetInfo()}); } -void CompilationDatabaseBuildConfiguration::initialize(const ProjectExplorer::BuildInfo &info) +void CompilationDatabaseBuildConfiguration::initialize() { - ProjectExplorer::BuildConfiguration::initialize(info); + ProjectExplorer::BuildConfiguration::initialize(); BuildStepList *buildSteps = stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD); buildSteps->appendStep(ProjectExplorer::Constants::PROCESS_STEP_ID); } @@ -514,11 +514,6 @@ ProjectExplorer::NamedWidget *CompilationDatabaseBuildConfiguration::createConfi return new ProjectExplorer::NamedWidget(); } -ProjectExplorer::BuildConfiguration::BuildType CompilationDatabaseBuildConfiguration::buildType() const -{ - return ProjectExplorer::BuildConfiguration::Release; -} - CompilationDatabaseBuildConfigurationFactory::CompilationDatabaseBuildConfigurationFactory() { registerBuildConfiguration( diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.h b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.h index 9e38e914314..ca829f312af 100644 --- a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.h +++ b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.h @@ -88,10 +88,9 @@ class CompilationDatabaseBuildConfiguration : public ProjectExplorer::BuildConfi public: CompilationDatabaseBuildConfiguration(ProjectExplorer::Target *target, Core::Id id); ProjectExplorer::NamedWidget *createConfigWidget() override; - BuildType buildType() const override; protected: - void initialize(const ProjectExplorer::BuildInfo &info) override; + void initialize() override; }; class CompilationDatabaseBuildConfigurationFactory diff --git a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp index 84f14798d20..12d61b16115 100644 --- a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp +++ b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp @@ -58,9 +58,9 @@ GenericBuildConfiguration::GenericBuildConfiguration(Target *parent, Core::Id id updateCacheAndEmitEnvironmentChanged(); } -void GenericBuildConfiguration::initialize(const BuildInfo &info) +void GenericBuildConfiguration::initialize() { - BuildConfiguration::initialize(info); + BuildConfiguration::initialize(); BuildStepList *buildSteps = stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD); buildSteps->appendStep(Constants::GENERIC_MS_ID); @@ -101,11 +101,6 @@ QList GenericBuildConfigurationFactory::availableBuilds return {info}; } -BuildConfiguration::BuildType GenericBuildConfiguration::buildType() const -{ - return Unknown; -} - void GenericBuildConfiguration::addToEnvironment(Utils::Environment &env) const { prependCompilerPathToEnvironment(target()->kit(), env); diff --git a/src/plugins/genericprojectmanager/genericbuildconfiguration.h b/src/plugins/genericprojectmanager/genericbuildconfiguration.h index be049373155..03e590ab925 100644 --- a/src/plugins/genericprojectmanager/genericbuildconfiguration.h +++ b/src/plugins/genericprojectmanager/genericbuildconfiguration.h @@ -39,8 +39,7 @@ class GenericBuildConfiguration : public ProjectExplorer::BuildConfiguration friend class ProjectExplorer::BuildConfigurationFactory; GenericBuildConfiguration(ProjectExplorer::Target *parent, Core::Id id); - void initialize(const ProjectExplorer::BuildInfo &info) override; - BuildType buildType() const override; + void initialize() override; void addToEnvironment(Utils::Environment &env) const final; }; diff --git a/src/plugins/nim/project/nimbuildconfiguration.cpp b/src/plugins/nim/project/nimbuildconfiguration.cpp index 7992cb744aa..8092bb4da2b 100644 --- a/src/plugins/nim/project/nimbuildconfiguration.cpp +++ b/src/plugins/nim/project/nimbuildconfiguration.cpp @@ -76,9 +76,9 @@ NimBuildConfiguration::NimBuildConfiguration(Target *target, Core::Id id) setBuildDirectorySettingsKey("Nim.NimBuildConfiguration.BuildDirectory"); } -void NimBuildConfiguration::initialize(const BuildInfo &info) +void NimBuildConfiguration::initialize() { - BuildConfiguration::initialize(info); + BuildConfiguration::initialize(); auto project = qobject_cast(target()->project()); QTC_ASSERT(project, return); @@ -86,15 +86,15 @@ void NimBuildConfiguration::initialize(const BuildInfo &info) // Create the build configuration and initialize it from build info setBuildDirectory(defaultBuildDirectory(target()->kit(), project->projectFilePath(), - info.displayName, - info.buildType)); + displayName(), + buildType())); // Add nim compiler build step { BuildStepList *buildSteps = stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD); auto nimCompilerBuildStep = new NimCompilerBuildStep(buildSteps); NimCompilerBuildStep::DefaultBuildOptions defaultOption; - switch (info.buildType) { + switch (initialBuildType()) { case BuildConfiguration::Release: defaultOption = NimCompilerBuildStep::DefaultBuildOptions::Release; break; @@ -119,11 +119,6 @@ void NimBuildConfiguration::initialize(const BuildInfo &info) } } -BuildConfiguration::BuildType NimBuildConfiguration::buildType() const -{ - return BuildConfiguration::Unknown; -} - FilePath NimBuildConfiguration::cacheDirectory() const { return buildDirectory().pathAppended("nimcache"); diff --git a/src/plugins/nim/project/nimbuildconfiguration.h b/src/plugins/nim/project/nimbuildconfiguration.h index fd988023c34..d5c4a293e44 100644 --- a/src/plugins/nim/project/nimbuildconfiguration.h +++ b/src/plugins/nim/project/nimbuildconfiguration.h @@ -39,8 +39,7 @@ class NimBuildConfiguration : public ProjectExplorer::BuildConfiguration friend class ProjectExplorer::BuildConfigurationFactory; NimBuildConfiguration(ProjectExplorer::Target *target, Core::Id id); - void initialize(const ProjectExplorer::BuildInfo &info) override; - ProjectExplorer::BuildConfiguration::BuildType buildType() const override; + void initialize() override; public: Utils::FilePath cacheDirectory() const; diff --git a/src/plugins/projectexplorer/buildconfiguration.cpp b/src/plugins/projectexplorer/buildconfiguration.cpp index 1a6ab7a025e..d35aa5dbc39 100644 --- a/src/plugins/projectexplorer/buildconfiguration.cpp +++ b/src/plugins/projectexplorer/buildconfiguration.cpp @@ -169,12 +169,8 @@ NamedWidget *BuildConfiguration::createConfigWidget() return named; } -void BuildConfiguration::initialize(const BuildInfo &info) +void BuildConfiguration::initialize() { - setDisplayName(info.displayName); - setDefaultDisplayName(info.displayName); - setBuildDirectory(info.buildDirectory); - m_stepLists.append(new BuildStepList(this, Constants::BUILDSTEPS_BUILD)); m_stepLists.append(new BuildStepList(this, Constants::BUILDSTEPS_CLEAN)); } @@ -258,6 +254,11 @@ void BuildConfiguration::emitBuildDirectoryChanged() } } +QString BuildConfiguration::initialDisplayName() const +{ + return m_initialDisplayName; +} + ProjectExplorer::BaseStringAspect *BuildConfiguration::buildDirectoryAspect() const { return m_buildDirectoryAspect; @@ -505,7 +506,18 @@ BuildConfiguration *BuildConfigurationFactory::create(Target *parent, const Buil BuildConfiguration *bc = m_creator(parent); if (!bc) return nullptr; - bc->initialize(info); + + bc->setDisplayName(info.displayName); + bc->setDefaultDisplayName(info.displayName); + bc->setBuildDirectory(info.buildDirectory); + + bc->m_initialBuildType = info.buildType; + bc->m_initialDisplayName = info.displayName; + bc->m_initialBuildDirectory = info.buildDirectory; + bc->m_extraInfo = info.extraInfo; + + bc->initialize(); + return bc; } diff --git a/src/plugins/projectexplorer/buildconfiguration.h b/src/plugins/projectexplorer/buildconfiguration.h index 99f3b3ef341..89cbc77f537 100644 --- a/src/plugins/projectexplorer/buildconfiguration.h +++ b/src/plugins/projectexplorer/buildconfiguration.h @@ -86,7 +86,12 @@ public: Profile, Release }; - virtual BuildType buildType() const = 0; + virtual BuildType buildType() const { return m_initialBuildType; } + + BuildType initialBuildType() const { return m_initialBuildType; } // FIXME: Remove. + Utils::FilePath initialBuildDirectory() const { return m_initialBuildDirectory; } // FIXME: Remove. + QString initialDisplayName() const; // FIXME: Remove. + QVariant extraInfo() const { return m_extraInfo; } // FIXME: Remove. static QString buildTypeName(BuildType type); @@ -108,7 +113,7 @@ signals: void buildTypeChanged(); protected: - virtual void initialize(const BuildInfo &info); + virtual void initialize(); private: void emitBuildDirectoryChanged(); @@ -121,6 +126,12 @@ private: mutable Utils::Environment m_cachedEnvironment; QString m_configWidgetDisplayName; bool m_configWidgetHasFrame = false; + + // FIXME: Remove. + BuildConfiguration::BuildType m_initialBuildType = BuildConfiguration::Unknown; + Utils::FilePath m_initialBuildDirectory; + QString m_initialDisplayName; + QVariant m_extraInfo; }; class PROJECTEXPLORER_EXPORT BuildConfigurationFactory : public QObject diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp index 862f876f29c..93cbde2eb10 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp +++ b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp @@ -94,20 +94,21 @@ QbsBuildConfiguration::QbsBuildConfiguration(Target *target, Core::Id id) this, &QbsBuildConfiguration::triggerReparseIfActive); } -void QbsBuildConfiguration::initialize(const BuildInfo &info) +void QbsBuildConfiguration::initialize() { - BuildConfiguration::initialize(info); + BuildConfiguration::initialize(); - QVariantMap configData = info.extraInfo.value(); + QVariantMap configData = extraInfo().value(); configData.insert(QLatin1String(Constants::QBS_CONFIG_VARIANT_KEY), - (info.buildType == BuildConfiguration::Debug) + (initialBuildType() == BuildConfiguration::Debug) ? QLatin1String(Constants::QBS_VARIANT_DEBUG) : QLatin1String(Constants::QBS_VARIANT_RELEASE)); - Utils::FilePath buildDir = info.buildDirectory; + Utils::FilePath buildDir = initialBuildDirectory(); if (buildDir.isEmpty()) buildDir = defaultBuildDirectory(target()->project()->projectFilePath(), - target()->kit(), info.displayName, info.buildType); + target()->kit(), initialDisplayName(), + initialBuildType()); setBuildDirectory(buildDir); // Add the build configuration. @@ -115,14 +116,14 @@ void QbsBuildConfiguration::initialize(const BuildInfo &info) QString configName = bd.take("configName").toString(); if (configName.isEmpty()) { configName = "qtc_" + target()->kit()->fileSystemFriendlyName() + '_' - + Utils::FileUtils::fileSystemFriendlyName(info.displayName); + + Utils::FileUtils::fileSystemFriendlyName(initialDisplayName()); } m_configurationName->setValue(configName); BuildStepList *buildSteps = stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD); auto bs = new QbsBuildStep(buildSteps); - if (info.buildType == Release) + if (initialBuildType() == Release) bs->setQmlDebuggingEnabled(false); bs->setQbsConfiguration(bd); buildSteps->appendStep(bs); diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h index 8b66663a408..0dbd442efb1 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h +++ b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h @@ -48,7 +48,7 @@ class QbsBuildConfiguration : public ProjectExplorer::BuildConfiguration QbsBuildConfiguration(ProjectExplorer::Target *target, Core::Id id); public: - void initialize(const ProjectExplorer::BuildInfo &info) override; + void initialize() override; QbsBuildStep *qbsStep() const; QVariantMap qbsConfiguration() const; diff --git a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp index 3cd172541e3..f319920b181 100644 --- a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp +++ b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp @@ -128,9 +128,9 @@ QmakeBuildConfiguration::QmakeBuildConfiguration(Target *target, Core::Id id) this, &QmakeBuildConfiguration::qtVersionsChanged); } -void QmakeBuildConfiguration::initialize(const BuildInfo &info) +void QmakeBuildConfiguration::initialize() { - BuildConfiguration::initialize(info); + BuildConfiguration::initialize(); BuildStepList *buildSteps = stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD); auto qmakeStep = new QMakeStep(buildSteps); @@ -140,11 +140,11 @@ void QmakeBuildConfiguration::initialize(const BuildInfo &info) BuildStepList *cleanSteps = stepList(ProjectExplorer::Constants::BUILDSTEPS_CLEAN); cleanSteps->appendStep(Constants::MAKESTEP_BS_ID); - const QmakeExtraBuildInfo qmakeExtra = info.extraInfo.value(); + const QmakeExtraBuildInfo qmakeExtra = extraInfo().value(); BaseQtVersion *version = QtKitAspect::qtVersion(target()->kit()); BaseQtVersion::QmakeBuildConfigs config = version->defaultBuildConfig(); - if (info.buildType == BuildConfiguration::Debug) + if (initialBuildType() == BuildConfiguration::Debug) config |= BaseQtVersion::DebugBuild; else config &= ~BaseQtVersion::DebugBuild; @@ -158,10 +158,11 @@ void QmakeBuildConfiguration::initialize(const BuildInfo &info) setQMakeBuildConfiguration(config); - FilePath directory = info.buildDirectory; + FilePath directory = initialBuildDirectory(); if (directory.isEmpty()) { directory = defaultBuildDirectory(target()->project()->projectFilePath(), - target()->kit(), info.displayName, buildType()); + target()->kit(), initialDisplayName(), + initialBuildType()); } setBuildDirectory(directory); diff --git a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.h b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.h index b66fa897fb2..07df4f0a662 100644 --- a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.h +++ b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.h @@ -46,7 +46,7 @@ public: QmakeBuildConfiguration(ProjectExplorer::Target *target, Core::Id id); ~QmakeBuildConfiguration() override; - void initialize(const ProjectExplorer::BuildInfo &info) override; + void initialize() override; ProjectExplorer::NamedWidget *createConfigWidget() override; void setSubNodeBuild(QmakeProFileNode *node);