mirror of
https://gitlab.kitware.com/cmake/cmake.git
synced 2026-09-25 04:09:36 +03:00
Merge topic 'preset-template-helpers'
fffec0f86epresets: Extract common JSON field binds to helpera1e4b92270presets: Extract preset registration to helper0029686e86presets: Extract configure dependency resolution to helper Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !12428
This commit is contained in:
@@ -1312,6 +1312,54 @@ std::string cmCMakePresetsGraph::GetGeneratorForPreset(
|
||||
return {};
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
bool cmCMakePresetsGraph::ResolveDependentPresets(
|
||||
std::map<std::string, PresetPair<T>>& presets)
|
||||
{
|
||||
for (auto& it : presets) {
|
||||
if (!it.second.Unexpanded.Hidden) {
|
||||
auto const configurePreset =
|
||||
this->ConfigurePresets.find(it.second.Unexpanded.ConfigurePreset);
|
||||
if (configurePreset == this->ConfigurePresets.end()) {
|
||||
cmCMakePresetsErrors::CONFIGURE_PRESET_NOT_FOUND(
|
||||
it.first, T::kind(), it.second.Unexpanded.ConfigurePreset,
|
||||
&this->parseState);
|
||||
return false;
|
||||
}
|
||||
if (!it.second.Unexpanded.OriginFile->ReachableFiles.count(
|
||||
configurePreset->second.Unexpanded.OriginFile)) {
|
||||
cmCMakePresetsErrors::CONFIGURE_PRESET_UNREACHABLE_FROM_FILE(
|
||||
it.first, T::kind(), it.second.Unexpanded.ConfigurePreset,
|
||||
&this->parseState);
|
||||
return false;
|
||||
}
|
||||
if (it.second.Unexpanded.InheritConfigureEnvironment.value_or(true)) {
|
||||
it.second.Unexpanded.Environment.insert(
|
||||
configurePreset->second.Unexpanded.Environment.begin(),
|
||||
configurePreset->second.Unexpanded.Environment.end());
|
||||
}
|
||||
}
|
||||
if (!ExpandMacros(this, it.second.Unexpanded, it.second.Expanded)) {
|
||||
cmCMakePresetsErrors::INVALID_MACRO_EXPANSION(it.first,
|
||||
&this->parseState);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
template bool
|
||||
cmCMakePresetsGraph::ResolveDependentPresets<cmCMakePresetsGraph::BuildPreset>(
|
||||
std::map<std::string, PresetPair<cmCMakePresetsGraph::BuildPreset>>&);
|
||||
|
||||
template bool
|
||||
cmCMakePresetsGraph::ResolveDependentPresets<cmCMakePresetsGraph::TestPreset>(
|
||||
std::map<std::string, PresetPair<cmCMakePresetsGraph::TestPreset>>&);
|
||||
|
||||
template bool cmCMakePresetsGraph::ResolveDependentPresets<
|
||||
cmCMakePresetsGraph::PackagePreset>(
|
||||
std::map<std::string, PresetPair<cmCMakePresetsGraph::PackagePreset>>&);
|
||||
|
||||
bool cmCMakePresetsGraph::ReadProjectPresetsInternal(
|
||||
std::string const& presetsFile, ReadOption readFilesOption)
|
||||
{
|
||||
@@ -1375,100 +1423,10 @@ bool cmCMakePresetsGraph::ReadProjectPresetsInternal(
|
||||
}
|
||||
}
|
||||
|
||||
for (auto& it : this->BuildPresets) {
|
||||
if (!it.second.Unexpanded.Hidden) {
|
||||
auto const configurePreset =
|
||||
this->ConfigurePresets.find(it.second.Unexpanded.ConfigurePreset);
|
||||
if (configurePreset == this->ConfigurePresets.end()) {
|
||||
cmCMakePresetsErrors::CONFIGURE_PRESET_NOT_FOUND(
|
||||
it.first, BuildPreset::kind(), it.second.Unexpanded.ConfigurePreset,
|
||||
&this->parseState);
|
||||
return false;
|
||||
}
|
||||
if (!it.second.Unexpanded.OriginFile->ReachableFiles.count(
|
||||
configurePreset->second.Unexpanded.OriginFile)) {
|
||||
cmCMakePresetsErrors::CONFIGURE_PRESET_UNREACHABLE_FROM_FILE(
|
||||
it.first, BuildPreset::kind(), it.second.Unexpanded.ConfigurePreset,
|
||||
&this->parseState);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (it.second.Unexpanded.InheritConfigureEnvironment.value_or(true)) {
|
||||
it.second.Unexpanded.Environment.insert(
|
||||
configurePreset->second.Unexpanded.Environment.begin(),
|
||||
configurePreset->second.Unexpanded.Environment.end());
|
||||
}
|
||||
}
|
||||
|
||||
if (!ExpandMacros(this, it.second.Unexpanded, it.second.Expanded)) {
|
||||
cmCMakePresetsErrors::INVALID_MACRO_EXPANSION(it.first,
|
||||
&this->parseState);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
for (auto& it : this->TestPresets) {
|
||||
if (!it.second.Unexpanded.Hidden) {
|
||||
auto const configurePreset =
|
||||
this->ConfigurePresets.find(it.second.Unexpanded.ConfigurePreset);
|
||||
if (configurePreset == this->ConfigurePresets.end()) {
|
||||
cmCMakePresetsErrors::CONFIGURE_PRESET_NOT_FOUND(
|
||||
it.first, TestPreset::kind(), it.second.Unexpanded.ConfigurePreset,
|
||||
&this->parseState);
|
||||
return false;
|
||||
}
|
||||
if (!it.second.Unexpanded.OriginFile->ReachableFiles.count(
|
||||
configurePreset->second.Unexpanded.OriginFile)) {
|
||||
cmCMakePresetsErrors::CONFIGURE_PRESET_UNREACHABLE_FROM_FILE(
|
||||
it.first, TestPreset::kind(), it.second.Unexpanded.ConfigurePreset,
|
||||
&this->parseState);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (it.second.Unexpanded.InheritConfigureEnvironment.value_or(true)) {
|
||||
it.second.Unexpanded.Environment.insert(
|
||||
configurePreset->second.Unexpanded.Environment.begin(),
|
||||
configurePreset->second.Unexpanded.Environment.end());
|
||||
}
|
||||
}
|
||||
|
||||
if (!ExpandMacros(this, it.second.Unexpanded, it.second.Expanded)) {
|
||||
cmCMakePresetsErrors::INVALID_MACRO_EXPANSION(it.first,
|
||||
&this->parseState);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
for (auto& it : this->PackagePresets) {
|
||||
if (!it.second.Unexpanded.Hidden) {
|
||||
auto const configurePreset =
|
||||
this->ConfigurePresets.find(it.second.Unexpanded.ConfigurePreset);
|
||||
if (configurePreset == this->ConfigurePresets.end()) {
|
||||
cmCMakePresetsErrors::CONFIGURE_PRESET_NOT_FOUND(
|
||||
it.first, PackagePreset::kind(),
|
||||
it.second.Unexpanded.ConfigurePreset, &this->parseState);
|
||||
return false;
|
||||
}
|
||||
if (!it.second.Unexpanded.OriginFile->ReachableFiles.count(
|
||||
configurePreset->second.Unexpanded.OriginFile)) {
|
||||
cmCMakePresetsErrors::CONFIGURE_PRESET_UNREACHABLE_FROM_FILE(
|
||||
it.first, PackagePreset::kind(),
|
||||
it.second.Unexpanded.ConfigurePreset, &this->parseState);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (it.second.Unexpanded.InheritConfigureEnvironment.value_or(true)) {
|
||||
it.second.Unexpanded.Environment.insert(
|
||||
configurePreset->second.Unexpanded.Environment.begin(),
|
||||
configurePreset->second.Unexpanded.Environment.end());
|
||||
}
|
||||
}
|
||||
|
||||
if (!ExpandMacros(this, it.second.Unexpanded, it.second.Expanded)) {
|
||||
cmCMakePresetsErrors::INVALID_MACRO_EXPANSION(it.first,
|
||||
&this->parseState);
|
||||
return false;
|
||||
}
|
||||
if (!ResolveDependentPresets(this->BuildPresets) ||
|
||||
!ResolveDependentPresets(this->TestPresets) ||
|
||||
!ResolveDependentPresets(this->PackagePresets)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for (auto& it : this->WorkflowPresets) {
|
||||
|
||||
@@ -441,6 +441,9 @@ public:
|
||||
PresetResolveStatus status, std::string const& errorPresetName,
|
||||
std::string const& directory);
|
||||
|
||||
template <class T>
|
||||
bool ResolveDependentPresets(std::map<std::string, PresetPair<T>>& presets);
|
||||
|
||||
std::map<std::string, PresetPair<ConfigurePreset>> ConfigurePresets;
|
||||
std::map<std::string, PresetPair<BuildPreset>> BuildPresets;
|
||||
std::map<std::string, PresetPair<TestPreset>> TestPresets;
|
||||
|
||||
@@ -9,9 +9,11 @@
|
||||
|
||||
#include <cm/optional>
|
||||
#include <cm/string_view>
|
||||
#include <cmext/string_view>
|
||||
|
||||
#include <cm3p/json/value.h>
|
||||
|
||||
#include "cmCMakePresetsErrors.h"
|
||||
#include "cmCMakePresetsGraph.h"
|
||||
#include "cmJSONHelpers.h"
|
||||
#include "cmSystemTools.h"
|
||||
@@ -329,4 +331,41 @@ cmJSONHelper<std::nullptr_t> SchemaHelper();
|
||||
|
||||
bool CheckDiagnostics(cmJSONState* state, int version,
|
||||
cmCMakePresetsGraph::ConfigurePreset& preset);
|
||||
|
||||
// Binds the fields common to every preset kind.
|
||||
template <typename T>
|
||||
cmJSONHelperBuilder::Object<T> BindPresetIdentityFields(
|
||||
cmJSONHelperBuilder::Object<T> obj)
|
||||
{
|
||||
obj.Bind("name"_s, &cmCMakePresetsGraph::Preset::Name, PresetNameHelper)
|
||||
.Bind("inherits"_s, &cmCMakePresetsGraph::Preset::Inherits,
|
||||
PresetVectorOneOrMoreStringHelper, false)
|
||||
.Bind("hidden"_s, &cmCMakePresetsGraph::Preset::Hidden, PresetBoolHelper,
|
||||
false)
|
||||
.template Bind<std::nullptr_t>(
|
||||
"vendor"_s, nullptr, VendorHelper(cmCMakePresetsErrors::INVALID_PRESET),
|
||||
false)
|
||||
.Bind("displayName"_s, &cmCMakePresetsGraph::Preset::DisplayName,
|
||||
PresetStringHelper, false)
|
||||
.Bind("description"_s, &cmCMakePresetsGraph::Preset::Description,
|
||||
PresetStringHelper, false)
|
||||
.Bind("condition"_s, &cmCMakePresetsGraph::Preset::ConditionEvaluator,
|
||||
PresetConditionHelper, false);
|
||||
return obj;
|
||||
}
|
||||
|
||||
// Binds the fields shared by build, test, and package presets, which resolve
|
||||
// against a configure preset.
|
||||
template <typename T>
|
||||
cmJSONHelperBuilder::Object<T> BindDependentPresetFields(
|
||||
cmJSONHelperBuilder::Object<T> obj)
|
||||
{
|
||||
obj
|
||||
.Bind("environment"_s, &cmCMakePresetsGraph::Preset::Environment,
|
||||
EnvironmentMapHelper, false)
|
||||
.Bind("configurePreset"_s, &T::ConfigurePreset, PresetStringHelper, false)
|
||||
.Bind("inheritConfigureEnvironment"_s, &T::InheritConfigureEnvironment,
|
||||
PresetOptionalBoolHelper, false);
|
||||
return obj;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,6 +32,8 @@ using BuildPreset = cmCMakePresetsGraph::BuildPreset;
|
||||
using TestPreset = cmCMakePresetsGraph::TestPreset;
|
||||
using PackagePreset = cmCMakePresetsGraph::PackagePreset;
|
||||
using WorkflowPreset = cmCMakePresetsGraph::WorkflowPreset;
|
||||
template <typename T>
|
||||
using PresetPair = cmCMakePresetsGraph::PresetPair<T>;
|
||||
using ArchToolsetStrategy = cmCMakePresetsGraph::ArchToolsetStrategy;
|
||||
using JSONHelperBuilder = cmJSONHelperBuilder;
|
||||
using ExpandMacroResult = cmCMakePresetsGraphInternal::ExpandMacroResult;
|
||||
@@ -329,6 +331,41 @@ public:
|
||||
return ExpandMacroResult::Ignore;
|
||||
}
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
bool RegisterPresets(std::vector<T>& presets, cmCMakePresetsGraph::File* file,
|
||||
std::map<std::string, PresetPair<T>>& out,
|
||||
std::vector<std::string>& order, cmJSONState* state,
|
||||
std::function<bool(T&)> const& checkVersionSupport = {})
|
||||
{
|
||||
for (auto& preset : presets) {
|
||||
preset.OriginFile = file;
|
||||
if (preset.Name.empty()) {
|
||||
// No error, already handled by PresetNameHelper
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!ExpandImmediateMacros<T>(preset)) {
|
||||
cmCMakePresetsErrors::INVALID_MACRO_EXPANSION(preset.Name, state);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (checkVersionSupport && !checkVersionSupport(preset)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
PresetPair<T> presetPair;
|
||||
presetPair.Unexpanded = preset;
|
||||
presetPair.Expanded = cm::nullopt;
|
||||
if (!out.emplace(preset.Name, presetPair).second) {
|
||||
cmCMakePresetsErrors::DUPLICATE_PRESETS(preset.Name, state);
|
||||
return false;
|
||||
}
|
||||
|
||||
order.push_back(preset.Name);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
namespace cmCMakePresetsGraphInternal {
|
||||
@@ -591,19 +628,7 @@ bool cmCMakePresetsGraph::ReadJSONFile(std::string const& filename,
|
||||
file->Version = v;
|
||||
file->ReachableFiles.insert(file);
|
||||
|
||||
for (auto& preset : presets.ConfigurePresets) {
|
||||
preset.OriginFile = file;
|
||||
if (preset.Name.empty()) {
|
||||
// No error, already handled by PresetNameHelper
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!ExpandImmediateMacros<ConfigurePreset>(preset)) {
|
||||
cmCMakePresetsErrors::INVALID_MACRO_EXPANSION(preset.Name,
|
||||
&this->parseState);
|
||||
return false;
|
||||
}
|
||||
|
||||
auto const configureVersionCheck = [&](ConfigurePreset& preset) -> bool {
|
||||
// Support for installDir presets added in version 3.
|
||||
if (v < 3 && !preset.InstallDir.empty()) {
|
||||
cmCMakePresetsErrors::INSTALL_PREFIX_UNSUPPORTED(&root["installDir"],
|
||||
@@ -638,73 +663,33 @@ bool cmCMakePresetsGraph::ReadJSONFile(std::string const& filename,
|
||||
}
|
||||
|
||||
// Support for diagnostics.
|
||||
if (!cmCMakePresetsGraphInternal::CheckDiagnostics(&this->parseState, v,
|
||||
preset)) {
|
||||
return false;
|
||||
}
|
||||
return cmCMakePresetsGraphInternal::CheckDiagnostics(&this->parseState, v,
|
||||
preset);
|
||||
};
|
||||
|
||||
PresetPair<ConfigurePreset> presetPair;
|
||||
presetPair.Unexpanded = preset;
|
||||
presetPair.Expanded = cm::nullopt;
|
||||
if (!this->ConfigurePresets.emplace(preset.Name, presetPair).second) {
|
||||
cmCMakePresetsErrors::DUPLICATE_PRESETS(preset.Name, &this->parseState);
|
||||
return false;
|
||||
}
|
||||
|
||||
this->ConfigurePresetOrder.push_back(preset.Name);
|
||||
if (!RegisterPresets<ConfigurePreset>(
|
||||
presets.ConfigurePresets, file, this->ConfigurePresets,
|
||||
this->ConfigurePresetOrder, &this->parseState,
|
||||
configureVersionCheck)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for (auto& preset : presets.BuildPresets) {
|
||||
preset.OriginFile = file;
|
||||
if (preset.Name.empty()) {
|
||||
// No error, already handled by PresetNameHelper
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!ExpandImmediateMacros<BuildPreset>(preset)) {
|
||||
cmCMakePresetsErrors::INVALID_MACRO_EXPANSION(preset.Name,
|
||||
&this->parseState);
|
||||
return false;
|
||||
}
|
||||
|
||||
PresetPair<BuildPreset> presetPair;
|
||||
presetPair.Unexpanded = preset;
|
||||
presetPair.Expanded = cm::nullopt;
|
||||
if (!this->BuildPresets.emplace(preset.Name, presetPair).second) {
|
||||
cmCMakePresetsErrors::DUPLICATE_PRESETS(preset.Name, &this->parseState);
|
||||
return false;
|
||||
}
|
||||
|
||||
auto const buildVersionCheck = [&](BuildPreset& preset) -> bool {
|
||||
// Support for conditions added in version 3.
|
||||
if (v < 3 && preset.ConditionEvaluator) {
|
||||
cmCMakePresetsErrors::CONDITION_UNSUPPORTED(&this->parseState);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
this->BuildPresetOrder.push_back(preset.Name);
|
||||
if (!RegisterPresets<BuildPreset>(presets.BuildPresets, file,
|
||||
this->BuildPresets, this->BuildPresetOrder,
|
||||
&this->parseState, buildVersionCheck)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for (auto& preset : presets.TestPresets) {
|
||||
preset.OriginFile = file;
|
||||
if (preset.Name.empty()) {
|
||||
// No error, already handled by PresetNameHelper
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!ExpandImmediateMacros<TestPreset>(preset)) {
|
||||
cmCMakePresetsErrors::INVALID_MACRO_EXPANSION(preset.Name,
|
||||
&this->parseState);
|
||||
return false;
|
||||
}
|
||||
|
||||
PresetPair<TestPreset> presetPair;
|
||||
presetPair.Unexpanded = preset;
|
||||
presetPair.Expanded = cm::nullopt;
|
||||
if (!this->TestPresets.emplace(preset.Name, presetPair).second) {
|
||||
cmCMakePresetsErrors::DUPLICATE_PRESETS(preset.Name, &this->parseState);
|
||||
return false;
|
||||
}
|
||||
|
||||
auto const testVersionCheck = [&](TestPreset& preset) -> bool {
|
||||
// Support for conditions added in version 3.
|
||||
if (v < 3 && preset.ConditionEvaluator) {
|
||||
cmCMakePresetsErrors::CONDITION_UNSUPPORTED(&this->parseState);
|
||||
@@ -738,61 +723,29 @@ bool cmCMakePresetsGraph::ReadJSONFile(std::string const& filename,
|
||||
return false;
|
||||
}
|
||||
|
||||
this->TestPresetOrder.push_back(preset.Name);
|
||||
return true;
|
||||
};
|
||||
|
||||
if (!RegisterPresets<TestPreset>(presets.TestPresets, file,
|
||||
this->TestPresets, this->TestPresetOrder,
|
||||
&this->parseState, testVersionCheck)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for (auto& preset : presets.PackagePresets) {
|
||||
preset.OriginFile = file;
|
||||
if (preset.Name.empty()) {
|
||||
// No error, already handled by PresetNameHelper
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!ExpandImmediateMacros<PackagePreset>(preset)) {
|
||||
cmCMakePresetsErrors::INVALID_MACRO_EXPANSION(preset.Name,
|
||||
&this->parseState);
|
||||
return false;
|
||||
}
|
||||
|
||||
PresetPair<PackagePreset> presetPair;
|
||||
presetPair.Unexpanded = preset;
|
||||
presetPair.Expanded = cm::nullopt;
|
||||
if (!this->PackagePresets.emplace(preset.Name, presetPair).second) {
|
||||
cmCMakePresetsErrors::DUPLICATE_PRESETS(preset.Name, &this->parseState);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Support for conditions added in version 3, but this requires version 5
|
||||
// already, so no action needed.
|
||||
|
||||
this->PackagePresetOrder.push_back(preset.Name);
|
||||
// Support for conditions added in version 3, but this requires version 5
|
||||
// already, so no action needed.
|
||||
if (!RegisterPresets<PackagePreset>(
|
||||
presets.PackagePresets, file, this->PackagePresets,
|
||||
this->PackagePresetOrder, &this->parseState)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for (auto& preset : presets.WorkflowPresets) {
|
||||
preset.OriginFile = file;
|
||||
if (preset.Name.empty()) {
|
||||
// No error, already handled by PresetNameHelper
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!ExpandImmediateMacros<WorkflowPreset>(preset)) {
|
||||
cmCMakePresetsErrors::INVALID_MACRO_EXPANSION(preset.Name,
|
||||
&this->parseState);
|
||||
return false;
|
||||
}
|
||||
|
||||
PresetPair<WorkflowPreset> presetPair;
|
||||
presetPair.Unexpanded = preset;
|
||||
presetPair.Expanded = cm::nullopt;
|
||||
if (!this->WorkflowPresets.emplace(preset.Name, presetPair).second) {
|
||||
cmCMakePresetsErrors::DUPLICATE_PRESETS(preset.Name, &this->parseState);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Support for conditions added in version 3, but this requires version 6
|
||||
// already, so no action needed.
|
||||
|
||||
this->WorkflowPresetOrder.push_back(preset.Name);
|
||||
// Support for conditions added in version 3, but this requires version 6
|
||||
// already, so no action needed.
|
||||
if (!RegisterPresets<WorkflowPreset>(
|
||||
presets.WorkflowPresets, file, this->WorkflowPresets,
|
||||
this->WorkflowPresetOrder, &this->parseState)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
auto const includeFile = [this, &inProgressFiles,
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
file LICENSE.rst or https://cmake.org/licensing for details. */
|
||||
#include <cstddef>
|
||||
#include <functional>
|
||||
#include <map>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
@@ -58,30 +55,10 @@ std::function<bool(BuildPreset&, Json::Value const*, cmJSONState*)> const
|
||||
};
|
||||
|
||||
auto const BuildPresetHelper =
|
||||
JSONHelperBuilder::Object<BuildPreset>(
|
||||
cmCMakePresetsErrors::INVALID_PRESET_OBJECT, false)
|
||||
.Bind("name"_s, &BuildPreset::Name,
|
||||
cmCMakePresetsGraphInternal::PresetNameHelper)
|
||||
.Bind("inherits"_s, &BuildPreset::Inherits,
|
||||
cmCMakePresetsGraphInternal::PresetVectorOneOrMoreStringHelper,
|
||||
false)
|
||||
.Bind("hidden"_s, &BuildPreset::Hidden,
|
||||
cmCMakePresetsGraphInternal::PresetBoolHelper, false)
|
||||
.Bind<std::nullptr_t>("vendor"_s, nullptr,
|
||||
cmCMakePresetsGraphInternal::VendorHelper(
|
||||
cmCMakePresetsErrors::INVALID_PRESET),
|
||||
false)
|
||||
.Bind("displayName"_s, &BuildPreset::DisplayName,
|
||||
cmCMakePresetsGraphInternal::PresetStringHelper, false)
|
||||
.Bind("description"_s, &BuildPreset::Description,
|
||||
cmCMakePresetsGraphInternal::PresetStringHelper, false)
|
||||
.Bind("environment"_s, &BuildPreset::Environment,
|
||||
cmCMakePresetsGraphInternal::EnvironmentMapHelper, false)
|
||||
.Bind("configurePreset"_s, &BuildPreset::ConfigurePreset,
|
||||
cmCMakePresetsGraphInternal::PresetStringHelper, false)
|
||||
.Bind("inheritConfigureEnvironment"_s,
|
||||
&BuildPreset::InheritConfigureEnvironment,
|
||||
cmCMakePresetsGraphInternal::PresetOptionalBoolHelper, false)
|
||||
cmCMakePresetsGraphInternal::BindDependentPresetFields(
|
||||
cmCMakePresetsGraphInternal::BindPresetIdentityFields(
|
||||
JSONHelperBuilder::Object<BuildPreset>(
|
||||
cmCMakePresetsErrors::INVALID_PRESET_OBJECT, false)))
|
||||
.Bind("jobs"_s, &BuildPreset::Jobs,
|
||||
cmCMakePresetsGraphInternal::PresetOptionalUIntHelper, false)
|
||||
.Bind("targets"_s, &BuildPreset::Targets,
|
||||
@@ -95,8 +72,6 @@ auto const BuildPresetHelper =
|
||||
cmCMakePresetsGraphInternal::PresetOptionalBoolHelper, false)
|
||||
.Bind("nativeToolOptions"_s, &BuildPreset::NativeToolOptions,
|
||||
cmCMakePresetsGraphInternal::PresetVectorStringHelper, false)
|
||||
.Bind("condition"_s, &BuildPreset::ConditionEvaluator,
|
||||
cmCMakePresetsGraphInternal::PresetConditionHelper, false)
|
||||
.Bind("resolvePackageReferences"_s, ResolvePackageReferencesHelper, false);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
file LICENSE.rst or https://cmake.org/licensing for details. */
|
||||
#include <cassert>
|
||||
#include <cstddef>
|
||||
#include <functional>
|
||||
#include <map>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
@@ -285,23 +283,9 @@ auto const PresetTraceHelper =
|
||||
cmCMakePresetsGraphInternal::PresetStringHelper, false);
|
||||
|
||||
auto const ConfigurePresetHelper =
|
||||
JSONHelperBuilder::Object<ConfigurePreset>(
|
||||
cmCMakePresetsErrors::INVALID_PRESET_OBJECT, false)
|
||||
.Bind("name"_s, &ConfigurePreset::Name,
|
||||
cmCMakePresetsGraphInternal::PresetNameHelper)
|
||||
.Bind("inherits"_s, &ConfigurePreset::Inherits,
|
||||
cmCMakePresetsGraphInternal::PresetVectorOneOrMoreStringHelper,
|
||||
false)
|
||||
.Bind("hidden"_s, &ConfigurePreset::Hidden,
|
||||
cmCMakePresetsGraphInternal::PresetBoolHelper, false)
|
||||
.Bind<std::nullptr_t>("vendor"_s, nullptr,
|
||||
cmCMakePresetsGraphInternal::VendorHelper(
|
||||
cmCMakePresetsErrors::INVALID_PRESET),
|
||||
false)
|
||||
.Bind("displayName"_s, &ConfigurePreset::DisplayName,
|
||||
cmCMakePresetsGraphInternal::PresetStringHelper, false)
|
||||
.Bind("description"_s, &ConfigurePreset::Description,
|
||||
cmCMakePresetsGraphInternal::PresetStringHelper, false)
|
||||
cmCMakePresetsGraphInternal::BindPresetIdentityFields(
|
||||
JSONHelperBuilder::Object<ConfigurePreset>(
|
||||
cmCMakePresetsErrors::INVALID_PRESET_OBJECT, false))
|
||||
.Bind("generator"_s, &ConfigurePreset::Generator,
|
||||
cmCMakePresetsGraphInternal::PresetStringHelper, false)
|
||||
.Bind("architecture"_s, ArchitectureHelper, false)
|
||||
@@ -323,9 +307,7 @@ auto const ConfigurePresetHelper =
|
||||
.Bind("warnings"_s, PresetWarningsHelper, false)
|
||||
.Bind("errors"_s, PresetErrorsHelper, false)
|
||||
.Bind("debug"_s, PresetDebugHelper, false)
|
||||
.Bind("trace"_s, PresetTraceHelper, false)
|
||||
.Bind("condition"_s, &ConfigurePreset::ConditionEvaluator,
|
||||
cmCMakePresetsGraphInternal::PresetConditionHelper, false);
|
||||
.Bind("trace"_s, PresetTraceHelper, false);
|
||||
}
|
||||
|
||||
namespace cmCMakePresetsGraphInternal {
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
file LICENSE.rst or https://cmake.org/licensing for details. */
|
||||
#include <cstddef>
|
||||
#include <functional>
|
||||
#include <map>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
@@ -36,30 +34,10 @@ auto const VariablesHelper = cmJSONHelperBuilder::Map<std::string>(
|
||||
cmCMakePresetsErrors::INVALID_VARIABLE, VariableHelper);
|
||||
|
||||
auto const PackagePresetHelper =
|
||||
cmJSONHelperBuilder::Object<PackagePreset>(
|
||||
cmCMakePresetsErrors::INVALID_PRESET_OBJECT, false)
|
||||
.Bind("name"_s, &PackagePreset::Name,
|
||||
cmCMakePresetsGraphInternal::PresetNameHelper)
|
||||
.Bind("inherits"_s, &PackagePreset::Inherits,
|
||||
cmCMakePresetsGraphInternal::PresetVectorOneOrMoreStringHelper,
|
||||
false)
|
||||
.Bind("hidden"_s, &PackagePreset::Hidden,
|
||||
cmCMakePresetsGraphInternal::PresetBoolHelper, false)
|
||||
.Bind<std::nullptr_t>("vendor"_s, nullptr,
|
||||
cmCMakePresetsGraphInternal::VendorHelper(
|
||||
cmCMakePresetsErrors::INVALID_PRESET),
|
||||
false)
|
||||
.Bind("displayName"_s, &PackagePreset::DisplayName,
|
||||
cmCMakePresetsGraphInternal::PresetStringHelper, false)
|
||||
.Bind("description"_s, &PackagePreset::Description,
|
||||
cmCMakePresetsGraphInternal::PresetStringHelper, false)
|
||||
.Bind("environment"_s, &PackagePreset::Environment,
|
||||
cmCMakePresetsGraphInternal::EnvironmentMapHelper, false)
|
||||
.Bind("configurePreset"_s, &PackagePreset::ConfigurePreset,
|
||||
cmCMakePresetsGraphInternal::PresetStringHelper, false)
|
||||
.Bind("inheritConfigureEnvironment"_s,
|
||||
&PackagePreset::InheritConfigureEnvironment,
|
||||
cmCMakePresetsGraphInternal::PresetOptionalBoolHelper, false)
|
||||
cmCMakePresetsGraphInternal::BindDependentPresetFields(
|
||||
cmCMakePresetsGraphInternal::BindPresetIdentityFields(
|
||||
cmJSONHelperBuilder::Object<PackagePreset>(
|
||||
cmCMakePresetsErrors::INVALID_PRESET_OBJECT, false)))
|
||||
.Bind("generators"_s, &PackagePreset::Generators,
|
||||
cmCMakePresetsGraphInternal::PresetVectorStringHelper, false)
|
||||
.Bind("configurations"_s, &PackagePreset::Configurations,
|
||||
@@ -75,9 +53,7 @@ auto const PackagePresetHelper =
|
||||
.Bind("packageDirectory"_s, &PackagePreset::PackageDirectory,
|
||||
cmCMakePresetsGraphInternal::PresetStringHelper, false)
|
||||
.Bind("vendorName"_s, &PackagePreset::VendorName,
|
||||
cmCMakePresetsGraphInternal::PresetStringHelper, false)
|
||||
.Bind("condition"_s, &PackagePreset::ConditionEvaluator,
|
||||
cmCMakePresetsGraphInternal::PresetConditionHelper, false);
|
||||
cmCMakePresetsGraphInternal::PresetStringHelper, false);
|
||||
}
|
||||
|
||||
namespace cmCMakePresetsGraphInternal {
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
file LICENSE.rst or https://cmake.org/licensing for details. */
|
||||
#include <cstddef>
|
||||
#include <functional>
|
||||
#include <map>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
@@ -368,30 +365,10 @@ auto const TestPresetFilterHelper =
|
||||
TestPresetOptionalFilterExcludeHelper, false));
|
||||
|
||||
auto const TestPresetHelper =
|
||||
JSONHelperBuilder::Object<TestPreset>(
|
||||
cmCMakePresetsErrors::INVALID_PRESET_OBJECT, false)
|
||||
.Bind("name"_s, &TestPreset::Name,
|
||||
cmCMakePresetsGraphInternal::PresetNameHelper)
|
||||
.Bind("inherits"_s, &TestPreset::Inherits,
|
||||
cmCMakePresetsGraphInternal::PresetVectorOneOrMoreStringHelper,
|
||||
false)
|
||||
.Bind("hidden"_s, &TestPreset::Hidden,
|
||||
cmCMakePresetsGraphInternal::PresetBoolHelper, false)
|
||||
.Bind<std::nullptr_t>("vendor"_s, nullptr,
|
||||
cmCMakePresetsGraphInternal::VendorHelper(
|
||||
cmCMakePresetsErrors::INVALID_PRESET),
|
||||
false)
|
||||
.Bind("displayName"_s, &TestPreset::DisplayName,
|
||||
cmCMakePresetsGraphInternal::PresetStringHelper, false)
|
||||
.Bind("description"_s, &TestPreset::Description,
|
||||
cmCMakePresetsGraphInternal::PresetStringHelper, false)
|
||||
.Bind("environment"_s, &TestPreset::Environment,
|
||||
cmCMakePresetsGraphInternal::EnvironmentMapHelper, false)
|
||||
.Bind("configurePreset"_s, &TestPreset::ConfigurePreset,
|
||||
cmCMakePresetsGraphInternal::PresetStringHelper, false)
|
||||
.Bind("inheritConfigureEnvironment"_s,
|
||||
&TestPreset::InheritConfigureEnvironment,
|
||||
cmCMakePresetsGraphInternal::PresetOptionalBoolHelper, false)
|
||||
cmCMakePresetsGraphInternal::BindDependentPresetFields(
|
||||
cmCMakePresetsGraphInternal::BindPresetIdentityFields(
|
||||
JSONHelperBuilder::Object<TestPreset>(
|
||||
cmCMakePresetsErrors::INVALID_PRESET_OBJECT, false)))
|
||||
.Bind("configuration"_s, &TestPreset::Configuration,
|
||||
cmCMakePresetsGraphInternal::PresetStringHelper, false)
|
||||
.Bind("overwriteConfigurationFile"_s,
|
||||
@@ -401,9 +378,7 @@ auto const TestPresetHelper =
|
||||
false)
|
||||
.Bind("filter"_s, &TestPreset::Filter, TestPresetFilterHelper, false)
|
||||
.Bind("execution"_s, &TestPreset::Execution, TestPresetExecutionHelper,
|
||||
false)
|
||||
.Bind("condition"_s, &TestPreset::ConditionEvaluator,
|
||||
cmCMakePresetsGraphInternal::PresetConditionHelper, false);
|
||||
false);
|
||||
}
|
||||
|
||||
namespace cmCMakePresetsGraphInternal {
|
||||
|
||||
Reference in New Issue
Block a user