From ec92d47103733e66bd852e5322f948d45a525384 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 13 Jun 2023 10:56:40 +0200 Subject: [PATCH] Meson: Inline MesonBuildSystem::init() into ctor Change-Id: I94c33f824dcbdf97562ecf1353fb83dcf726f040 Reviewed-by: Alessandro Portale --- .../mesonprojectmanager/mesonbuildsystem.cpp | 114 ++++++++---------- .../mesonprojectmanager/mesonbuildsystem.h | 3 - .../mesonprojectmanager/mesonprojectnodes.cpp | 2 +- 3 files changed, 52 insertions(+), 67 deletions(-) diff --git a/src/plugins/mesonprojectmanager/mesonbuildsystem.cpp b/src/plugins/mesonprojectmanager/mesonbuildsystem.cpp index 16b18293e3e..f7a6ea59b8b 100644 --- a/src/plugins/mesonprojectmanager/mesonbuildsystem.cpp +++ b/src/plugins/mesonprojectmanager/mesonbuildsystem.cpp @@ -3,7 +3,6 @@ #include "mesonbuildsystem.h" -#include "kithelper.h" #include "kitdata.h" #include "kithelper.h" #include "mesonbuildconfiguration.h" @@ -11,25 +10,23 @@ #include "mesontoolkitaspect.h" #include "settings.h" -#include -#include - -#include -#include - #include +#include #include #include #include +#include #include +#include +#include + #include #include #include -#include #include #define LEAVE_IF_BUSY() \ @@ -179,10 +176,45 @@ void MachineFileManager::cleanupMachineFiles() // MesonBuildSystem MesonBuildSystem::MesonBuildSystem(MesonBuildConfiguration *bc) - : BuildSystem{bc} - , m_parser{MesonToolKitAspect::mesonToolId(bc->kit()), bc->environment(), project()} + : BuildSystem(bc) + , m_parser(MesonToolKitAspect::mesonToolId(bc->kit()), bc->environment(), project()) { - init(); + qCDebug(mesonBuildSystemLog) << "Init"; + connect(bc->target(), &ProjectExplorer::Target::kitChanged, this, [this] { + updateKit(kit()); + }); + connect(bc, &MesonBuildConfiguration::buildDirectoryChanged, this, [this] { + updateKit(kit()); + this->triggerParsing(); + }); + connect(bc, &MesonBuildConfiguration::parametersChanged, this, [this] { + updateKit(kit()); + wipe(); + }); + connect(bc, &MesonBuildConfiguration::environmentChanged, this, [this] { + m_parser.setEnvironment(buildConfiguration()->environment()); + }); + + connect(project(), &ProjectExplorer::Project::projectFileIsDirty, this, [this] { + if (buildConfiguration()->isActive()) + parseProject(); + }); + connect(&m_parser, &MesonProjectParser::parsingCompleted, this, &MesonBuildSystem::parsingCompleted); + + connect(&m_IntroWatcher, &Utils::FileSystemWatcher::fileChanged, this, [this] { + if (buildConfiguration()->isActive()) + parseProject(); + }); + + updateKit(kit()); + // as specified here https://mesonbuild.com/IDE-integration.html#ide-integration + // meson-info.json is the last written file, which ensure that all others introspection + // files are ready when a modification is detected on this one. + m_IntroWatcher.addFile(buildConfiguration() + ->buildDirectory() + .pathAppended(Constants::MESON_INFO_DIR) + .pathAppended(Constants::MESON_INFO), + Utils::FileSystemWatcher::WatchModifiedDate); } MesonBuildSystem::~MesonBuildSystem() @@ -230,14 +262,15 @@ void MesonBuildSystem::parsingCompleted(bool success) QStringList MesonBuildSystem::configArgs(bool isSetup) { - const QString ¶ms = mesonBuildConfiguration()->parameters(); + MesonBuildConfiguration *bc = static_cast(buildConfiguration()); + + const QString ¶ms = bc->parameters(); if (!isSetup || params.contains("--cross-file") || params.contains("--native-file")) - return m_pendingConfigArgs + mesonBuildConfiguration()->mesonConfigArgs(); - else { - return QStringList{ - QString("--native-file=%1").arg(MachineFileManager::machineFile(kit()).toString())} - + m_pendingConfigArgs + mesonBuildConfiguration()->mesonConfigArgs(); - } + return m_pendingConfigArgs + bc->mesonConfigArgs(); + + return QStringList{ + QString("--native-file=%1").arg(MachineFileManager::machineFile(kit()).toString())} + + m_pendingConfigArgs + bc->mesonConfigArgs(); } bool MesonBuildSystem::configure() @@ -278,51 +311,6 @@ bool MesonBuildSystem::wipe() return false; } -MesonBuildConfiguration *MesonBuildSystem::mesonBuildConfiguration() -{ - return static_cast(buildConfiguration()); -} - -void MesonBuildSystem::init() -{ - qCDebug(mesonBuildSystemLog) << "Init"; - connect(buildConfiguration()->target(), &ProjectExplorer::Target::kitChanged, this, [this] { - updateKit(kit()); - }); - connect(mesonBuildConfiguration(), &MesonBuildConfiguration::buildDirectoryChanged, this, [this]() { - updateKit(kit()); - this->triggerParsing(); - }); - connect(mesonBuildConfiguration(), &MesonBuildConfiguration::parametersChanged, this, [this]() { - updateKit(kit()); - wipe(); - }); - connect(mesonBuildConfiguration(), &MesonBuildConfiguration::environmentChanged, this, [this]() { - m_parser.setEnvironment(buildConfiguration()->environment()); - }); - - connect(project(), &ProjectExplorer::Project::projectFileIsDirty, this, [this]() { - if (buildConfiguration()->isActive()) - parseProject(); - }); - connect(&m_parser, &MesonProjectParser::parsingCompleted, this, &MesonBuildSystem::parsingCompleted); - - connect(&m_IntroWatcher, &Utils::FileSystemWatcher::fileChanged, this, [this]() { - if (buildConfiguration()->isActive()) - parseProject(); - }); - - updateKit(kit()); - // as specified here https://mesonbuild.com/IDE-integration.html#ide-integration - // meson-info.json is the last written file, which ensure that all others introspection - // files are ready when a modification is detected on this one. - m_IntroWatcher.addFile(buildConfiguration() - ->buildDirectory() - .pathAppended(Constants::MESON_INFO_DIR) - .pathAppended(Constants::MESON_INFO), - Utils::FileSystemWatcher::WatchModifiedDate); -} - bool MesonBuildSystem::parseProject() { QTC_ASSERT(buildConfiguration(), return false); diff --git a/src/plugins/mesonprojectmanager/mesonbuildsystem.h b/src/plugins/mesonprojectmanager/mesonbuildsystem.h index 5381df9a0d8..b07d5aba4ce 100644 --- a/src/plugins/mesonprojectmanager/mesonbuildsystem.h +++ b/src/plugins/mesonprojectmanager/mesonbuildsystem.h @@ -49,14 +49,11 @@ public: bool setup(); bool wipe(); - MesonBuildConfiguration *mesonBuildConfiguration(); - const QStringList &targetList() const { return m_parser.targetsNames(); } void setMesonConfigArgs(const QStringList &args) { m_pendingConfigArgs = args; } private: - void init(); bool parseProject(); void updateKit(ProjectExplorer::Kit *kit); bool needsSetup(); diff --git a/src/plugins/mesonprojectmanager/mesonprojectnodes.cpp b/src/plugins/mesonprojectmanager/mesonprojectnodes.cpp index d034e381be0..4e842d30376 100644 --- a/src/plugins/mesonprojectmanager/mesonprojectnodes.cpp +++ b/src/plugins/mesonprojectmanager/mesonprojectnodes.cpp @@ -46,7 +46,7 @@ void MesonTargetNode::build() Project *p = getProject(); ProjectExplorer::Target *t = p ? p->activeTarget() : nullptr; if (t) - static_cast(t->buildSystem())->mesonBuildConfiguration()->build(m_name); + static_cast(t->buildSystem()->buildConfiguration())->build(m_name); } QString MesonTargetNode::tooltip() const