forked from qt-creator/qt-creator
Meson: Merge the tool wrapper files
Change-Id: I055006e29ee8c2067275e64043c7a7ffcc460390 Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This commit is contained in:
@@ -3,12 +3,14 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "mesonpluginconstants.h"
|
||||
#include "versionhelper.h"
|
||||
|
||||
#include <utils/commandline.h>
|
||||
#include <utils/environment.h>
|
||||
#include <utils/id.h>
|
||||
#include <utils/qtcassert.h>
|
||||
#include <utils/qtcprocess.h>
|
||||
#include <utils/store.h>
|
||||
|
||||
#include <optional>
|
||||
@@ -61,8 +63,6 @@ public:
|
||||
|
||||
static Version read_version(const Utils::FilePath &toolPath);
|
||||
|
||||
static std::optional<Utils::FilePath> findTool(const QStringList &exeNames);
|
||||
|
||||
template<typename T>
|
||||
friend Utils::Store toVariantMap(const T &);
|
||||
template<typename T>
|
||||
@@ -82,5 +82,80 @@ Utils::Store toVariantMap(const T &);
|
||||
template<typename T>
|
||||
T fromVariantMap(const Utils::Store &);
|
||||
|
||||
bool run_meson(const Command &command, QIODevice *output = nullptr);
|
||||
|
||||
bool isSetup(const Utils::FilePath &buildPath);
|
||||
|
||||
class MesonWrapper final : public ToolWrapper
|
||||
{
|
||||
public:
|
||||
using ToolWrapper::ToolWrapper;
|
||||
|
||||
Command setup(const Utils::FilePath &sourceDirectory,
|
||||
const Utils::FilePath &buildDirectory,
|
||||
const QStringList &options = {}) const;
|
||||
Command configure(const Utils::FilePath &sourceDirectory,
|
||||
const Utils::FilePath &buildDirectory,
|
||||
const QStringList &options = {}) const;
|
||||
|
||||
Command regenerate(const Utils::FilePath &sourceDirectory,
|
||||
const Utils::FilePath &buildDirectory) const;
|
||||
|
||||
Command introspect(const Utils::FilePath &sourceDirectory) const;
|
||||
|
||||
static std::optional<Utils::FilePath> find();
|
||||
|
||||
static QString toolName() { return {"Meson"}; }
|
||||
};
|
||||
|
||||
template<>
|
||||
inline Utils::Store toVariantMap<MesonWrapper>(const MesonWrapper &meson)
|
||||
{
|
||||
Utils::Store data;
|
||||
data.insert(Constants::ToolsSettings::NAME_KEY, meson.m_name);
|
||||
data.insert(Constants::ToolsSettings::EXE_KEY, meson.m_exe.toSettings());
|
||||
data.insert(Constants::ToolsSettings::AUTO_DETECTED_KEY, meson.m_autoDetected);
|
||||
data.insert(Constants::ToolsSettings::ID_KEY, meson.m_id.toSetting());
|
||||
data.insert(Constants::ToolsSettings::TOOL_TYPE_KEY, Constants::ToolsSettings::TOOL_TYPE_MESON);
|
||||
return data;
|
||||
}
|
||||
template<>
|
||||
inline MesonWrapper *fromVariantMap<MesonWrapper *>(const Utils::Store &data)
|
||||
{
|
||||
return new MesonWrapper(data[Constants::ToolsSettings::NAME_KEY].toString(),
|
||||
Utils::FilePath::fromSettings(data[Constants::ToolsSettings::EXE_KEY]),
|
||||
Utils::Id::fromSetting(data[Constants::ToolsSettings::ID_KEY]),
|
||||
data[Constants::ToolsSettings::AUTO_DETECTED_KEY].toBool());
|
||||
}
|
||||
|
||||
class NinjaWrapper final : public ToolWrapper
|
||||
{
|
||||
public:
|
||||
using ToolWrapper::ToolWrapper;
|
||||
|
||||
static std::optional<Utils::FilePath> find();
|
||||
static QString toolName() { return {"Ninja"}; }
|
||||
};
|
||||
|
||||
template<>
|
||||
inline Utils::Store toVariantMap<NinjaWrapper>(const NinjaWrapper &meson)
|
||||
{
|
||||
Utils::Store data;
|
||||
data.insert(Constants::ToolsSettings::NAME_KEY, meson.m_name);
|
||||
data.insert(Constants::ToolsSettings::EXE_KEY, meson.m_exe.toSettings());
|
||||
data.insert(Constants::ToolsSettings::AUTO_DETECTED_KEY, meson.m_autoDetected);
|
||||
data.insert(Constants::ToolsSettings::ID_KEY, meson.m_id.toSetting());
|
||||
data.insert(Constants::ToolsSettings::TOOL_TYPE_KEY, Constants::ToolsSettings::TOOL_TYPE_NINJA);
|
||||
return data;
|
||||
}
|
||||
template<>
|
||||
inline NinjaWrapper *fromVariantMap<NinjaWrapper *>(const Utils::Store &data)
|
||||
{
|
||||
return new NinjaWrapper(data[Constants::ToolsSettings::NAME_KEY].toString(),
|
||||
Utils::FilePath::fromSettings(data[Constants::ToolsSettings::EXE_KEY]),
|
||||
Utils::Id::fromSetting(data[Constants::ToolsSettings::ID_KEY]),
|
||||
data[Constants::ToolsSettings::AUTO_DETECTED_KEY].toBool());
|
||||
}
|
||||
|
||||
} // namespace Internal
|
||||
} // namespace MesonProjectManager
|
||||
|
||||
Reference in New Issue
Block a user