From 58bd043e2722e7670008fb180faf982294221d4c Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Thu, 17 May 2018 10:26:10 +0200 Subject: Centralize retrieving the "parent" build configuration If a step is part of a build configuration, that is used, but many steps can be used as part of a deploy configuration. In that case the active build configuration of the step's target must be used, and that logic was duplicated many times. Instead, let BuildStep::buildConfiguration take care of that logic. For steps that are not offered for deploy configurations there is no semantic difference, and for the others this removes code duplication. Change-Id: I02f3bb50226590092cedcec02fce6fde9c7c6e63 Reviewed-by: Tobias Hunger --- src/plugins/android/androiddeployqtstep.cpp | 6 +++--- src/plugins/autotoolsprojectmanager/makestep.cpp | 4 ---- src/plugins/cmakeprojectmanager/cmakebuildstep.cpp | 11 ----------- src/plugins/cmakeprojectmanager/cmakebuildstep.h | 1 - src/plugins/genericprojectmanager/genericmakestep.cpp | 2 -- src/plugins/ios/iosbuildstep.cpp | 10 +++------- src/plugins/ios/iosdsymbuildstep.cpp | 4 ---- src/plugins/projectexplorer/buildstep.cpp | 12 ++++++++++-- src/plugins/projectexplorer/makestep.cpp | 4 ---- src/plugins/projectexplorer/processstep.cpp | 8 +------- src/plugins/qbsprojectmanager/qbsbuildstep.cpp | 4 +--- src/plugins/qbsprojectmanager/qbscleanstep.cpp | 2 -- src/plugins/qbsprojectmanager/qbsinstallstep.cpp | 3 +-- src/plugins/qmakeprojectmanager/qmakemakestep.cpp | 2 -- src/plugins/remotelinux/abstractpackagingstep.cpp | 2 +- src/plugins/winrt/winrtpackagedeploymentstep.cpp | 2 +- 16 files changed, 21 insertions(+), 56 deletions(-) diff --git a/src/plugins/android/androiddeployqtstep.cpp b/src/plugins/android/androiddeployqtstep.cpp index 1a110dbb2b..78166ffea3 100644 --- a/src/plugins/android/androiddeployqtstep.cpp +++ b/src/plugins/android/androiddeployqtstep.cpp @@ -120,7 +120,7 @@ bool AndroidDeployQtStep::init(QList &earlierSteps) } AndroidBuildApkStep *androidBuildApkStep - = AndroidGlobal::buildStep(target()->activeBuildConfiguration()); + = AndroidGlobal::buildStep(buildConfiguration()); if (!androidBuildApkStep) emit addOutput(tr("Cannot find the android build step."), OutputFormat::Stderr); @@ -137,7 +137,7 @@ bool AndroidDeployQtStep::init(QList &earlierSteps) m_avdName = info.avdname; m_serialNumber = info.serialNumber; - ProjectExplorer::BuildConfiguration *bc = target()->activeBuildConfiguration(); + ProjectExplorer::BuildConfiguration *bc = buildConfiguration(); m_filesToPull.clear(); QString buildDir = bc ? bc->buildDirectory().toString() : QString(); if (bc && !buildDir.endsWith("/")) { @@ -390,7 +390,7 @@ void AndroidDeployQtStep::run(QFutureInterface &fi) emit setSerialNumber(serialNumber); } - if (!target()->activeBuildConfiguration()) { // nothing to deploy + if (!buildConfiguration()) { // nothing to deploy reportRunResult(fi, true); return; } diff --git a/src/plugins/autotoolsprojectmanager/makestep.cpp b/src/plugins/autotoolsprojectmanager/makestep.cpp index 222978d44a..26b3a39b5c 100644 --- a/src/plugins/autotoolsprojectmanager/makestep.cpp +++ b/src/plugins/autotoolsprojectmanager/makestep.cpp @@ -82,8 +82,6 @@ void MakeStep::setClean(bool clean) bool MakeStep::init(QList &earlierSteps) { BuildConfiguration *bc = buildConfiguration(); - if (!bc) - bc = target()->activeBuildConfiguration(); if (!bc) emit addTask(Task::buildConfigurationMissingTask()); @@ -227,8 +225,6 @@ QString MakeStepConfigWidget::summaryText() const void MakeStepConfigWidget::updateDetails() { BuildConfiguration *bc = m_makeStep->buildConfiguration(); - if (!bc) - bc = m_makeStep->target()->activeBuildConfiguration(); QList tcList = ToolChainKitInformation::toolChains(m_makeStep->target()->kit()); if (!tcList.isEmpty()) { diff --git a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp index a72cefd38c..186500b03e 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp @@ -109,11 +109,6 @@ CMakeBuildConfiguration *CMakeBuildStep::cmakeBuildConfiguration() const return static_cast(buildConfiguration()); } -CMakeBuildConfiguration *CMakeBuildStep::targetsActiveBuildConfiguration() const -{ - return static_cast(target()->activeBuildConfiguration()); -} - CMakeRunConfiguration *CMakeBuildStep::targetsActiveRunConfiguration() const { return qobject_cast(target()->activeRunConfiguration()); @@ -154,8 +149,6 @@ bool CMakeBuildStep::init(QList &earlierSteps) { bool canInit = true; CMakeBuildConfiguration *bc = cmakeBuildConfiguration(); - if (!bc) - bc = targetsActiveBuildConfiguration(); if (!bc) { emit addTask(Task::buildConfigurationMissingTask()); canInit = false; @@ -241,8 +234,6 @@ void CMakeBuildStep::run(QFutureInterface &fi) { // Make sure CMake state was written to disk before trying to build: CMakeBuildConfiguration *bc = cmakeBuildConfiguration(); - if (!bc) - bc = targetsActiveBuildConfiguration(); QTC_ASSERT(bc, return); bool mustDelay = false; @@ -535,8 +526,6 @@ void CMakeBuildStepConfigWidget::selectedBuildTargetsChanged() void CMakeBuildStepConfigWidget::updateDetails() { BuildConfiguration *bc = m_buildStep->buildConfiguration(); - if (!bc) - bc = m_buildStep->targetsActiveBuildConfiguration(); if (!bc) { m_summaryText = tr("No build configuration found on this kit."); emit updateSummary(); diff --git a/src/plugins/cmakeprojectmanager/cmakebuildstep.h b/src/plugins/cmakeprojectmanager/cmakebuildstep.h index 68c40d5752..855f582d81 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildstep.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildstep.h @@ -55,7 +55,6 @@ public: explicit CMakeBuildStep(ProjectExplorer::BuildStepList *bsl); CMakeBuildConfiguration *cmakeBuildConfiguration() const; - CMakeBuildConfiguration *targetsActiveBuildConfiguration() const; bool init(QList &earlierSteps) override; void run(QFutureInterface &fi) override; diff --git a/src/plugins/genericprojectmanager/genericmakestep.cpp b/src/plugins/genericprojectmanager/genericmakestep.cpp index d8d22395f8..00edf3a1d4 100644 --- a/src/plugins/genericprojectmanager/genericmakestep.cpp +++ b/src/plugins/genericprojectmanager/genericmakestep.cpp @@ -51,8 +51,6 @@ GenericMakeStep::GenericMakeStep(BuildStepList *parent, const QString &buildTarg bool GenericMakeStep::init(QList &earlierSteps) { BuildConfiguration *bc = buildConfiguration(); - if (!bc) - bc = target()->activeBuildConfiguration(); if (!bc) emit addTask(Task::buildConfigurationMissingTask()); diff --git a/src/plugins/ios/iosbuildstep.cpp b/src/plugins/ios/iosbuildstep.cpp index 61fb670c90..3c04cc7080 100644 --- a/src/plugins/ios/iosbuildstep.cpp +++ b/src/plugins/ios/iosbuildstep.cpp @@ -72,8 +72,6 @@ IosBuildStep::IosBuildStep(BuildStepList *parent) : bool IosBuildStep::init(QList &earlierSteps) { BuildConfiguration *bc = buildConfiguration(); - if (!bc) - bc = target()->activeBuildConfiguration(); if (!bc) emit addTask(Task::buildConfigurationMissingTask()); @@ -140,7 +138,7 @@ QStringList IosBuildStep::defaultArguments() const QStringList res; Kit *kit = target()->kit(); ToolChain *tc = ToolChainKitInformation::toolChain(kit, ProjectExplorer::Constants::CXX_LANGUAGE_ID); - switch (target()->activeBuildConfiguration()->buildType()) { + switch (buildConfiguration()->buildType()) { case BuildConfiguration::Debug : res << "-configuration" << "Debug"; break; @@ -152,7 +150,7 @@ QStringList IosBuildStep::defaultArguments() const break; default: qCWarning(iosLog) << "IosBuildStep had an unknown buildType " - << target()->activeBuildConfiguration()->buildType(); + << buildConfiguration()->buildType(); } if (tc->typeId() == ProjectExplorer::Constants::GCC_TOOLCHAIN_TYPEID || tc->typeId() == ProjectExplorer::Constants::CLANG_TOOLCHAIN_TYPEID) { @@ -161,7 +159,7 @@ QStringList IosBuildStep::defaultArguments() const } if (!SysRootKitInformation::sysRoot(kit).isEmpty()) res << "-sdk" << SysRootKitInformation::sysRoot(kit).toString(); - res << "SYMROOT=" + target()->activeBuildConfiguration()->buildDirectory().toString(); + res << "SYMROOT=" + buildConfiguration()->buildDirectory().toString(); return res; } @@ -257,8 +255,6 @@ QString IosBuildStepConfigWidget::displayName() const void IosBuildStepConfigWidget::updateDetails() { BuildConfiguration *bc = m_buildStep->buildConfiguration(); - if (!bc) - bc = m_buildStep->target()->activeBuildConfiguration(); ProcessParameters param; param.setMacroExpander(bc->macroExpander()); diff --git a/src/plugins/ios/iosdsymbuildstep.cpp b/src/plugins/ios/iosdsymbuildstep.cpp index 2cf4834bc6..3fc3c090dc 100644 --- a/src/plugins/ios/iosdsymbuildstep.cpp +++ b/src/plugins/ios/iosdsymbuildstep.cpp @@ -64,8 +64,6 @@ IosDsymBuildStep::IosDsymBuildStep(BuildStepList *parent) : bool IosDsymBuildStep::init(QList &earlierSteps) { BuildConfiguration *bc = buildConfiguration(); - if (!bc) - bc = target()->activeBuildConfiguration(); ProcessParameters *pp = processParameters(); pp->setMacroExpander(bc->macroExpander()); @@ -277,8 +275,6 @@ QString IosDsymBuildStepConfigWidget::displayName() const void IosDsymBuildStepConfigWidget::updateDetails() { BuildConfiguration *bc = m_buildStep->buildConfiguration(); - if (!bc) - bc = m_buildStep->target()->activeBuildConfiguration(); ProcessParameters param; param.setMacroExpander(bc->macroExpander()); diff --git a/src/plugins/projectexplorer/buildstep.cpp b/src/plugins/projectexplorer/buildstep.cpp index 232a95483a..864fdbf6b3 100644 --- a/src/plugins/projectexplorer/buildstep.cpp +++ b/src/plugins/projectexplorer/buildstep.cpp @@ -140,12 +140,20 @@ QVariantMap BuildStep::toMap() const BuildConfiguration *BuildStep::buildConfiguration() const { - return qobject_cast(parent()->parent()); + auto config = qobject_cast(parent()->parent()); + if (config) + return config; + // step is not part of a build configuration, use active build configuration of step's target + return target()->activeBuildConfiguration(); } DeployConfiguration *BuildStep::deployConfiguration() const { - return qobject_cast(parent()->parent()); + auto config = qobject_cast(parent()->parent()); + if (config) + return config; + // step is not part of a deploy configuration, use active deploy configuration of step's target + return target()->activeDeployConfiguration(); } ProjectConfiguration *BuildStep::projectConfiguration() const diff --git a/src/plugins/projectexplorer/makestep.cpp b/src/plugins/projectexplorer/makestep.cpp index c970b03b33..70853ac8f2 100644 --- a/src/plugins/projectexplorer/makestep.cpp +++ b/src/plugins/projectexplorer/makestep.cpp @@ -121,8 +121,6 @@ QString MakeStep::effectiveMakeCommand() const if (!m_makeCommand.isEmpty()) return m_makeCommand; BuildConfiguration *bc = buildConfiguration(); - if (!bc) - bc = target()->activeBuildConfiguration(); ToolChain *tc = ToolChainKitInformation::toolChain(target()->kit(), ProjectExplorer::Constants::CXX_LANGUAGE_ID); if (bc && tc) return tc->makeCommand(bc->environment()); @@ -245,8 +243,6 @@ void MakeStepConfigWidget::updateDetails() ToolChain *tc = ToolChainKitInformation::toolChain(m_makeStep->target()->kit(), ProjectExplorer::Constants::CXX_LANGUAGE_ID); BuildConfiguration *bc = m_makeStep->buildConfiguration(); - if (!bc) - bc = m_makeStep->target()->activeBuildConfiguration(); const QString make = tc && bc ? tc->makeCommand(bc->environment()) : QString(); if (make.isEmpty()) diff --git a/src/plugins/projectexplorer/processstep.cpp b/src/plugins/projectexplorer/processstep.cpp index 82805fa3ee..81e463eb10 100644 --- a/src/plugins/projectexplorer/processstep.cpp +++ b/src/plugins/projectexplorer/processstep.cpp @@ -58,8 +58,6 @@ ProcessStep::ProcessStep(BuildStepList *bsl) bool ProcessStep::init(QList &earlierSteps) { BuildConfiguration *bc = buildConfiguration(); - if (!bc) - bc = target()->activeBuildConfiguration(); ProcessParameters *pp = processParameters(); pp->setMacroExpander(bc ? bc->macroExpander() : Utils::globalMacroExpander()); pp->setEnvironment(bc ? bc->environment() : Utils::Environment::systemEnvironment()); @@ -115,7 +113,7 @@ void ProcessStep::setArguments(const QString &arguments) void ProcessStep::setWorkingDirectory(const QString &workingDirectory) { if (workingDirectory.isEmpty()) - if (target()->activeBuildConfiguration()) + if (buildConfiguration()) m_workingDirectory = Constants::DEFAULT_WORKING_DIR; else m_workingDirectory = Constants::DEFAULT_WORKING_DIR_ALTERNATE; @@ -163,8 +161,6 @@ ProcessStepConfigWidget::ProcessStepConfigWidget(ProcessStep *step) : m_ui.workingDirectory->setExpectedKind(Utils::PathChooser::Directory); BuildConfiguration *bc = m_step->buildConfiguration(); - if (!bc) - bc = m_step->target()->activeBuildConfiguration(); Utils::Environment env = bc ? bc->environment() : Utils::Environment::systemEnvironment(); m_ui.command->setEnvironment(env); m_ui.command->setPath(m_step->command()); @@ -193,8 +189,6 @@ void ProcessStepConfigWidget::updateDetails() displayName = tr("Custom Process Step"); ProcessParameters param; BuildConfiguration *bc = m_step->buildConfiguration(); - if (!bc) // iff the step is actually in the deploy list - bc = m_step->target()->activeBuildConfiguration(); param.setMacroExpander(bc ? bc->macroExpander() : Utils::globalMacroExpander()); param.setEnvironment(bc ? bc->environment() : Utils::Environment::systemEnvironment()); diff --git a/src/plugins/qbsprojectmanager/qbsbuildstep.cpp b/src/plugins/qbsprojectmanager/qbsbuildstep.cpp index c01db641e3..a8aa93f060 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildstep.cpp +++ b/src/plugins/qbsprojectmanager/qbsbuildstep.cpp @@ -149,8 +149,6 @@ bool QbsBuildStep::init(QList &earlierSteps) return false; QbsBuildConfiguration *bc = static_cast(buildConfiguration()); - if (!bc) - bc = static_cast(target()->activeBuildConfiguration()); if (!bc) return false; @@ -549,7 +547,7 @@ QbsBuildStepConfigWidget::QbsBuildStepConfigWidget(QbsBuildStep *step) : this, &QbsBuildStepConfigWidget::updateState); step->target()->subscribeSignal(&ProjectExplorer::BuildConfiguration::buildDirectoryChanged, this, [this]() { - if (m_step->target()->activeBuildConfiguration() == sender()) + if (m_step->buildConfiguration() == sender()) updateState(); }); diff --git a/src/plugins/qbsprojectmanager/qbscleanstep.cpp b/src/plugins/qbsprojectmanager/qbscleanstep.cpp index b47610a446..d928ae317c 100644 --- a/src/plugins/qbsprojectmanager/qbscleanstep.cpp +++ b/src/plugins/qbsprojectmanager/qbscleanstep.cpp @@ -70,8 +70,6 @@ bool QbsCleanStep::init(QList &earlierSteps) return false; QbsBuildConfiguration *bc = static_cast(buildConfiguration()); - if (!bc) - bc = static_cast(target()->activeBuildConfiguration()); if (!bc) return false; diff --git a/src/plugins/qbsprojectmanager/qbsinstallstep.cpp b/src/plugins/qbsprojectmanager/qbsinstallstep.cpp index fdd3af1dfe..6e590ff209 100644 --- a/src/plugins/qbsprojectmanager/qbsinstallstep.cpp +++ b/src/plugins/qbsprojectmanager/qbsinstallstep.cpp @@ -146,8 +146,7 @@ bool QbsInstallStep::keepGoing() const const QbsBuildConfiguration *QbsInstallStep::buildConfig() const { - return static_cast( - deployConfiguration()->target()->activeBuildConfiguration()); + return static_cast(buildConfiguration()); } bool QbsInstallStep::fromMap(const QVariantMap &map) diff --git a/src/plugins/qmakeprojectmanager/qmakemakestep.cpp b/src/plugins/qmakeprojectmanager/qmakemakestep.cpp index 43498a2c45..c853e5d614 100644 --- a/src/plugins/qmakeprojectmanager/qmakemakestep.cpp +++ b/src/plugins/qmakeprojectmanager/qmakemakestep.cpp @@ -69,8 +69,6 @@ QmakeBuildConfiguration *QmakeMakeStep::qmakeBuildConfiguration() const bool QmakeMakeStep::init(QList &earlierSteps) { QmakeBuildConfiguration *bc = qmakeBuildConfiguration(); - if (!bc) - bc = qobject_cast(target()->activeBuildConfiguration()); if (!bc) emit addTask(Task::buildConfigurationMissingTask()); diff --git a/src/plugins/remotelinux/abstractpackagingstep.cpp b/src/plugins/remotelinux/abstractpackagingstep.cpp index 72df1a7fc7..5ee20c341f 100644 --- a/src/plugins/remotelinux/abstractpackagingstep.cpp +++ b/src/plugins/remotelinux/abstractpackagingstep.cpp @@ -75,7 +75,7 @@ void AbstractPackagingStep::handleBuildConfigurationChanged() { if (d->currentBuildConfiguration) disconnect(d->currentBuildConfiguration, 0, this, 0); - d->currentBuildConfiguration = target()->activeBuildConfiguration(); + d->currentBuildConfiguration = buildConfiguration(); if (d->currentBuildConfiguration) { connect(d->currentBuildConfiguration, &BuildConfiguration::buildDirectoryChanged, this, &AbstractPackagingStep::packageFilePathChanged); diff --git a/src/plugins/winrt/winrtpackagedeploymentstep.cpp b/src/plugins/winrt/winrtpackagedeploymentstep.cpp index 9d2710192d..050941e042 100644 --- a/src/plugins/winrt/winrtpackagedeploymentstep.cpp +++ b/src/plugins/winrt/winrtpackagedeploymentstep.cpp @@ -95,7 +95,7 @@ bool WinRtPackageDeploymentStep::init(QList &earlierSteps) ProcessParameters *params = processParameters(); params->setCommand(QLatin1String("windeployqt.exe")); params->setArguments(args); - params->setEnvironment(target()->activeBuildConfiguration()->environment()); + params->setEnvironment(buildConfiguration()->environment()); return AbstractProcessStep::init(earlierSteps); } -- cgit v1.2.3