From 5bac8114320dc06b64ce3843741fc96f1b641c35 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 20 Nov 2019 15:51:44 +0100 Subject: [PATCH] Qmake: Move some non-configuration code from build config to build system Change-Id: I6fdf20e740c2824cabb3659f36379f9325ab97bd Reviewed-by: Christian Kandeler --- .../qmakebuildconfiguration.cpp | 31 ++-------------- .../qmakebuildconfiguration.h | 2 -- .../qmakeprojectmanager/qmakeproject.cpp | 36 ++++++++++++++----- src/plugins/qmakeprojectmanager/qmakestep.cpp | 15 +++++--- src/plugins/qmakeprojectmanager/qmakestep.h | 5 ++- 5 files changed, 41 insertions(+), 48 deletions(-) diff --git a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp index 193df6477ac..8219791e872 100644 --- a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp +++ b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp @@ -50,8 +50,6 @@ #include #include #include -#include -#include #include #include @@ -110,10 +108,6 @@ QmakeBuildConfiguration::QmakeBuildConfiguration(Target *target, Core::Id id) { m_buildSystem = new QmakeBuildSystem(this); - connect(this, &BuildConfiguration::buildDirectoryChanged, - this, &QmakeBuildConfiguration::emitProFileEvaluateNeeded); - connect(this, &BuildConfiguration::environmentChanged, - this, &QmakeBuildConfiguration::emitProFileEvaluateNeeded); connect(target, &Target::kitChanged, this, &QmakeBuildConfiguration::kitChanged); MacroExpander *expander = macroExpander(); @@ -123,10 +117,6 @@ QmakeBuildConfiguration::QmakeBuildConfiguration(Target *target, Core::Id id) return file; return QLatin1String("Makefile"); }); - connect(ToolChainManager::instance(), &ToolChainManager::toolChainUpdated, - this, &QmakeBuildConfiguration::toolChainUpdated); - connect(QtVersionManager::instance(), &QtVersionManager::qtVersionsChanged, - this, &QmakeBuildConfiguration::qtVersionsChanged); } void QmakeBuildConfiguration::initialize() @@ -207,23 +197,11 @@ void QmakeBuildConfiguration::kitChanged() // This only checks if the ids have changed! // For that reason the QmakeBuildConfiguration is also connected // to the toolchain and qtversion managers - emitProFileEvaluateNeeded(); + m_buildSystem->scheduleUpdateAllNowOrLater(); m_lastKitState = newState; } } -void QmakeBuildConfiguration::toolChainUpdated(ToolChain *tc) -{ - if (ToolChainKitAspect::toolChain(target()->kit(), ProjectExplorer::Constants::CXX_LANGUAGE_ID) == tc) - emitProFileEvaluateNeeded(); -} - -void QmakeBuildConfiguration::qtVersionsChanged(const QList &,const QList &, const QList &changed) -{ - if (changed.contains(QtKitAspect::qtVersionId(target()->kit()))) - emitProFileEvaluateNeeded(); -} - BuildSystem *QmakeBuildConfiguration::buildSystem() const { return m_buildSystem; @@ -280,13 +258,8 @@ void QmakeBuildConfiguration::setQMakeBuildConfiguration(BaseQtVersion::QmakeBui m_qmakeBuildConfiguration = config; emit qmakeBuildConfigurationChanged(); - emitProFileEvaluateNeeded(); - emit buildTypeChanged(); -} - -void QmakeBuildConfiguration::emitProFileEvaluateNeeded() -{ m_buildSystem->scheduleUpdateAllNowOrLater(); + emit buildTypeChanged(); } QString QmakeBuildConfiguration::unalignedBuildDirWarning() diff --git a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.h b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.h index 5445c9ebc97..9c3cb2446ba 100644 --- a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.h +++ b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.h @@ -92,8 +92,6 @@ public: void addToEnvironment(Utils::Environment &env) const override; static void setupBuildEnvironment(ProjectExplorer::Kit *k, Utils::Environment &env); - void emitProFileEvaluateNeeded(); - static QString unalignedBuildDirWarning(); static bool isBuildDirAtSafeLocation(const QString &sourceDir, const QString &buildDir); bool isBuildDirAtSafeLocation() const; diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp index 3d44a5385a6..e0bf7e32157 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp @@ -38,13 +38,11 @@ #include #include #include + #include #include +#include #include -#include -#include -#include -#include #include #include @@ -53,28 +51,31 @@ #include #include #include +#include #include #include #include #include +#include + #include #include + #include #include #include #include -#include -#include -#include + +#include +#include #include #include #include -#include -using namespace QmakeProjectManager; using namespace QmakeProjectManager::Internal; using namespace ProjectExplorer; +using namespace QtSupport; using namespace Utils; namespace QmakeProjectManager { @@ -211,6 +212,23 @@ QmakeBuildSystem::QmakeBuildSystem(QmakeBuildConfiguration *bc) connect(bc->project(), &Project::projectFileIsDirty, this, &QmakeBuildSystem::scheduleUpdateAllLater); + + connect(bc, &BuildConfiguration::buildDirectoryChanged, + this, &QmakeBuildSystem::scheduleUpdateAllNowOrLater); + connect(bc, &BuildConfiguration::environmentChanged, + this, &QmakeBuildSystem::scheduleUpdateAllNowOrLater); + + connect(ToolChainManager::instance(), &ToolChainManager::toolChainUpdated, + this, [this](ToolChain *tc) { + if (ToolChainKitAspect::toolChain(kit(), ProjectExplorer::Constants::CXX_LANGUAGE_ID) == tc) + scheduleUpdateAllNowOrLater(); + }); + + connect(QtVersionManager::instance(), &QtVersionManager::qtVersionsChanged, + this, [this](const QList &,const QList &, const QList &changed) { + if (changed.contains(QtKitAspect::qtVersionId(kit()))) + scheduleUpdateAllNowOrLater(); + }); } QmakeBuildSystem::~QmakeBuildSystem() diff --git a/src/plugins/qmakeprojectmanager/qmakestep.cpp b/src/plugins/qmakeprojectmanager/qmakestep.cpp index 299e550e52c..0a189776795 100644 --- a/src/plugins/qmakeprojectmanager/qmakestep.cpp +++ b/src/plugins/qmakeprojectmanager/qmakestep.cpp @@ -84,6 +84,11 @@ QmakeBuildConfiguration *QMakeStep::qmakeBuildConfiguration() const return qobject_cast(buildConfiguration()); } +QmakeBuildSystem *QMakeStep::qmakeBuildSystem() const +{ + return qmakeBuildConfiguration()->qmakeBuildSystem(); +} + /// /// Returns all arguments /// That is: possbile subpath @@ -359,7 +364,7 @@ void QMakeStep::setUserArguments(const QString &arguments) emit userArgumentsChanged(); emit qmakeBuildConfiguration()->qmakeBuildConfigurationChanged(); - qmakeBuildConfiguration()->emitProFileEvaluateNeeded(); + qmakeBuildSystem()->scheduleUpdateAllNowOrLater(); } QStringList QMakeStep::extraArguments() const @@ -373,7 +378,7 @@ void QMakeStep::setExtraArguments(const QStringList &args) m_extraArgs = args; emit extraArgumentsChanged(); emit qmakeBuildConfiguration()->qmakeBuildConfigurationChanged(); - qmakeBuildConfiguration()->emitProFileEvaluateNeeded(); + qmakeBuildSystem()->scheduleUpdateAllNowOrLater(); } } @@ -402,7 +407,7 @@ void QMakeStep::setLinkQmlDebuggingLibrary(bool enable) emit linkQmlDebuggingLibraryChanged(); emit qmakeBuildConfiguration()->qmakeBuildConfigurationChanged(); - qmakeBuildConfiguration()->emitProFileEvaluateNeeded(); + qmakeBuildSystem()->scheduleUpdateAllNowOrLater(); } bool QMakeStep::useQtQuickCompiler() const @@ -420,7 +425,7 @@ void QMakeStep::setUseQtQuickCompiler(bool enable) emit useQtQuickCompilerChanged(); emit qmakeBuildConfiguration()->qmakeBuildConfigurationChanged(); - qmakeBuildConfiguration()->emitProFileEvaluateNeeded(); + qmakeBuildSystem()->scheduleUpdateAllNowOrLater(); } bool QMakeStep::separateDebugInfo() const @@ -437,7 +442,7 @@ void QMakeStep::setSeparateDebugInfo(bool enable) emit separateDebugInfoChanged(); emit qmakeBuildConfiguration()->qmakeBuildConfigurationChanged(); - qmakeBuildConfiguration()->emitProFileEvaluateNeeded(); + qmakeBuildSystem()->scheduleUpdateAllNowOrLater(); } FilePath QMakeStep::makeCommand() const diff --git a/src/plugins/qmakeprojectmanager/qmakestep.h b/src/plugins/qmakeprojectmanager/qmakestep.h index 0ca5a7e6e96..266fd1031b7 100644 --- a/src/plugins/qmakeprojectmanager/qmakestep.h +++ b/src/plugins/qmakeprojectmanager/qmakestep.h @@ -35,15 +35,13 @@ namespace ProjectExplorer { class Abi; -class BuildStep; -class BuildStepFactory; -class Project; } // namespace ProjectExplorer namespace QtSupport { class BaseQtVersion; } namespace QmakeProjectManager { class QmakeBuildConfiguration; +class QmakeBuildSystem; namespace Internal { @@ -113,6 +111,7 @@ public: explicit QMakeStep(ProjectExplorer::BuildStepList *parent); QmakeBuildConfiguration *qmakeBuildConfiguration() const; + QmakeBuildSystem *qmakeBuildSystem() const; bool init() override; void doRun() override; ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override;