forked from qt-creator/qt-creator
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 <tobias.hunger@qt.io>
This commit is contained in:
@@ -120,7 +120,7 @@ bool AndroidDeployQtStep::init(QList<const BuildStep *> &earlierSteps)
|
||||
}
|
||||
|
||||
AndroidBuildApkStep *androidBuildApkStep
|
||||
= AndroidGlobal::buildStep<AndroidBuildApkStep>(target()->activeBuildConfiguration());
|
||||
= AndroidGlobal::buildStep<AndroidBuildApkStep>(buildConfiguration());
|
||||
if (!androidBuildApkStep)
|
||||
emit addOutput(tr("Cannot find the android build step."), OutputFormat::Stderr);
|
||||
|
||||
@@ -137,7 +137,7 @@ bool AndroidDeployQtStep::init(QList<const BuildStep *> &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<bool> &fi)
|
||||
emit setSerialNumber(serialNumber);
|
||||
}
|
||||
|
||||
if (!target()->activeBuildConfiguration()) { // nothing to deploy
|
||||
if (!buildConfiguration()) { // nothing to deploy
|
||||
reportRunResult(fi, true);
|
||||
return;
|
||||
}
|
||||
|
@@ -82,8 +82,6 @@ void MakeStep::setClean(bool clean)
|
||||
bool MakeStep::init(QList<const BuildStep *> &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<ToolChain *> tcList = ToolChainKitInformation::toolChains(m_makeStep->target()->kit());
|
||||
|
||||
if (!tcList.isEmpty()) {
|
||||
|
@@ -109,11 +109,6 @@ CMakeBuildConfiguration *CMakeBuildStep::cmakeBuildConfiguration() const
|
||||
return static_cast<CMakeBuildConfiguration *>(buildConfiguration());
|
||||
}
|
||||
|
||||
CMakeBuildConfiguration *CMakeBuildStep::targetsActiveBuildConfiguration() const
|
||||
{
|
||||
return static_cast<CMakeBuildConfiguration *>(target()->activeBuildConfiguration());
|
||||
}
|
||||
|
||||
CMakeRunConfiguration *CMakeBuildStep::targetsActiveRunConfiguration() const
|
||||
{
|
||||
return qobject_cast<CMakeRunConfiguration *>(target()->activeRunConfiguration());
|
||||
@@ -154,8 +149,6 @@ bool CMakeBuildStep::init(QList<const BuildStep *> &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<bool> &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("<b>No build configuration found on this kit.</b>");
|
||||
emit updateSummary();
|
||||
|
@@ -55,7 +55,6 @@ public:
|
||||
explicit CMakeBuildStep(ProjectExplorer::BuildStepList *bsl);
|
||||
|
||||
CMakeBuildConfiguration *cmakeBuildConfiguration() const;
|
||||
CMakeBuildConfiguration *targetsActiveBuildConfiguration() const;
|
||||
|
||||
bool init(QList<const BuildStep *> &earlierSteps) override;
|
||||
void run(QFutureInterface<bool> &fi) override;
|
||||
|
@@ -51,8 +51,6 @@ GenericMakeStep::GenericMakeStep(BuildStepList *parent, const QString &buildTarg
|
||||
bool GenericMakeStep::init(QList<const BuildStep *> &earlierSteps)
|
||||
{
|
||||
BuildConfiguration *bc = buildConfiguration();
|
||||
if (!bc)
|
||||
bc = target()->activeBuildConfiguration();
|
||||
if (!bc)
|
||||
emit addTask(Task::buildConfigurationMissingTask());
|
||||
|
||||
|
@@ -72,8 +72,6 @@ IosBuildStep::IosBuildStep(BuildStepList *parent) :
|
||||
bool IosBuildStep::init(QList<const BuildStep *> &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());
|
||||
|
@@ -64,8 +64,6 @@ IosDsymBuildStep::IosDsymBuildStep(BuildStepList *parent) :
|
||||
bool IosDsymBuildStep::init(QList<const BuildStep *> &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());
|
||||
|
@@ -140,12 +140,20 @@ QVariantMap BuildStep::toMap() const
|
||||
|
||||
BuildConfiguration *BuildStep::buildConfiguration() const
|
||||
{
|
||||
return qobject_cast<BuildConfiguration *>(parent()->parent());
|
||||
auto config = qobject_cast<BuildConfiguration *>(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<DeployConfiguration *>(parent()->parent());
|
||||
auto config = qobject_cast<DeployConfiguration *>(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
|
||||
|
@@ -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())
|
||||
|
@@ -58,8 +58,6 @@ ProcessStep::ProcessStep(BuildStepList *bsl)
|
||||
bool ProcessStep::init(QList<const BuildStep *> &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());
|
||||
|
||||
|
@@ -149,8 +149,6 @@ bool QbsBuildStep::init(QList<const BuildStep *> &earlierSteps)
|
||||
return false;
|
||||
|
||||
QbsBuildConfiguration *bc = static_cast<QbsBuildConfiguration *>(buildConfiguration());
|
||||
if (!bc)
|
||||
bc = static_cast<QbsBuildConfiguration *>(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();
|
||||
});
|
||||
|
||||
|
@@ -70,8 +70,6 @@ bool QbsCleanStep::init(QList<const BuildStep *> &earlierSteps)
|
||||
return false;
|
||||
|
||||
QbsBuildConfiguration *bc = static_cast<QbsBuildConfiguration *>(buildConfiguration());
|
||||
if (!bc)
|
||||
bc = static_cast<QbsBuildConfiguration *>(target()->activeBuildConfiguration());
|
||||
|
||||
if (!bc)
|
||||
return false;
|
||||
|
@@ -146,8 +146,7 @@ bool QbsInstallStep::keepGoing() const
|
||||
|
||||
const QbsBuildConfiguration *QbsInstallStep::buildConfig() const
|
||||
{
|
||||
return static_cast<QbsBuildConfiguration *>(
|
||||
deployConfiguration()->target()->activeBuildConfiguration());
|
||||
return static_cast<QbsBuildConfiguration *>(buildConfiguration());
|
||||
}
|
||||
|
||||
bool QbsInstallStep::fromMap(const QVariantMap &map)
|
||||
|
@@ -69,8 +69,6 @@ QmakeBuildConfiguration *QmakeMakeStep::qmakeBuildConfiguration() const
|
||||
bool QmakeMakeStep::init(QList<const BuildStep *> &earlierSteps)
|
||||
{
|
||||
QmakeBuildConfiguration *bc = qmakeBuildConfiguration();
|
||||
if (!bc)
|
||||
bc = qobject_cast<QmakeBuildConfiguration *>(target()->activeBuildConfiguration());
|
||||
if (!bc)
|
||||
emit addTask(Task::buildConfigurationMissingTask());
|
||||
|
||||
|
@@ -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);
|
||||
|
@@ -95,7 +95,7 @@ bool WinRtPackageDeploymentStep::init(QList<const BuildStep *> &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);
|
||||
}
|
||||
|
Reference in New Issue
Block a user