mirror of
https://gitlab.kitware.com/cmake/cmake.git
synced 2026-09-25 04:09:36 +03:00
presets: Extract common JSON field binds to helper
This commit is contained in:
@@ -9,9 +9,11 @@
|
|||||||
|
|
||||||
#include <cm/optional>
|
#include <cm/optional>
|
||||||
#include <cm/string_view>
|
#include <cm/string_view>
|
||||||
|
#include <cmext/string_view>
|
||||||
|
|
||||||
#include <cm3p/json/value.h>
|
#include <cm3p/json/value.h>
|
||||||
|
|
||||||
|
#include "cmCMakePresetsErrors.h"
|
||||||
#include "cmCMakePresetsGraph.h"
|
#include "cmCMakePresetsGraph.h"
|
||||||
#include "cmJSONHelpers.h"
|
#include "cmJSONHelpers.h"
|
||||||
#include "cmSystemTools.h"
|
#include "cmSystemTools.h"
|
||||||
@@ -327,4 +329,41 @@ cmJSONHelper<std::nullptr_t> SchemaHelper();
|
|||||||
|
|
||||||
bool CheckDiagnostics(cmJSONState* state, int version,
|
bool CheckDiagnostics(cmJSONState* state, int version,
|
||||||
cmCMakePresetsGraph::ConfigurePreset& preset);
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,6 @@
|
|||||||
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||||
file LICENSE.rst or https://cmake.org/licensing for details. */
|
file LICENSE.rst or https://cmake.org/licensing for details. */
|
||||||
#include <cstddef>
|
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <map>
|
|
||||||
#include <memory>
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
@@ -58,30 +55,10 @@ std::function<bool(BuildPreset&, Json::Value const*, cmJSONState*)> const
|
|||||||
};
|
};
|
||||||
|
|
||||||
auto const BuildPresetHelper =
|
auto const BuildPresetHelper =
|
||||||
JSONHelperBuilder::Object<BuildPreset>(
|
cmCMakePresetsGraphInternal::BindDependentPresetFields(
|
||||||
cmCMakePresetsErrors::INVALID_PRESET_OBJECT, false)
|
cmCMakePresetsGraphInternal::BindPresetIdentityFields(
|
||||||
.Bind("name"_s, &BuildPreset::Name,
|
JSONHelperBuilder::Object<BuildPreset>(
|
||||||
cmCMakePresetsGraphInternal::PresetNameHelper)
|
cmCMakePresetsErrors::INVALID_PRESET_OBJECT, false)))
|
||||||
.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)
|
|
||||||
.Bind("jobs"_s, &BuildPreset::Jobs,
|
.Bind("jobs"_s, &BuildPreset::Jobs,
|
||||||
cmCMakePresetsGraphInternal::PresetOptionalUIntHelper, false)
|
cmCMakePresetsGraphInternal::PresetOptionalUIntHelper, false)
|
||||||
.Bind("targets"_s, &BuildPreset::Targets,
|
.Bind("targets"_s, &BuildPreset::Targets,
|
||||||
@@ -95,8 +72,6 @@ auto const BuildPresetHelper =
|
|||||||
cmCMakePresetsGraphInternal::PresetOptionalBoolHelper, false)
|
cmCMakePresetsGraphInternal::PresetOptionalBoolHelper, false)
|
||||||
.Bind("nativeToolOptions"_s, &BuildPreset::NativeToolOptions,
|
.Bind("nativeToolOptions"_s, &BuildPreset::NativeToolOptions,
|
||||||
cmCMakePresetsGraphInternal::PresetVectorStringHelper, false)
|
cmCMakePresetsGraphInternal::PresetVectorStringHelper, false)
|
||||||
.Bind("condition"_s, &BuildPreset::ConditionEvaluator,
|
|
||||||
cmCMakePresetsGraphInternal::PresetConditionHelper, false)
|
|
||||||
.Bind("resolvePackageReferences"_s, ResolvePackageReferencesHelper, false);
|
.Bind("resolvePackageReferences"_s, ResolvePackageReferencesHelper, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,8 @@
|
|||||||
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||||
file LICENSE.rst or https://cmake.org/licensing for details. */
|
file LICENSE.rst or https://cmake.org/licensing for details. */
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include <cstddef>
|
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <memory>
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
@@ -285,23 +283,9 @@ auto const PresetTraceHelper =
|
|||||||
cmCMakePresetsGraphInternal::PresetStringHelper, false);
|
cmCMakePresetsGraphInternal::PresetStringHelper, false);
|
||||||
|
|
||||||
auto const ConfigurePresetHelper =
|
auto const ConfigurePresetHelper =
|
||||||
JSONHelperBuilder::Object<ConfigurePreset>(
|
cmCMakePresetsGraphInternal::BindPresetIdentityFields(
|
||||||
cmCMakePresetsErrors::INVALID_PRESET_OBJECT, false)
|
JSONHelperBuilder::Object<ConfigurePreset>(
|
||||||
.Bind("name"_s, &ConfigurePreset::Name,
|
cmCMakePresetsErrors::INVALID_PRESET_OBJECT, false))
|
||||||
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)
|
|
||||||
.Bind("generator"_s, &ConfigurePreset::Generator,
|
.Bind("generator"_s, &ConfigurePreset::Generator,
|
||||||
cmCMakePresetsGraphInternal::PresetStringHelper, false)
|
cmCMakePresetsGraphInternal::PresetStringHelper, false)
|
||||||
.Bind("architecture"_s, ArchitectureHelper, false)
|
.Bind("architecture"_s, ArchitectureHelper, false)
|
||||||
@@ -323,9 +307,7 @@ auto const ConfigurePresetHelper =
|
|||||||
.Bind("warnings"_s, PresetWarningsHelper, false)
|
.Bind("warnings"_s, PresetWarningsHelper, false)
|
||||||
.Bind("errors"_s, PresetErrorsHelper, false)
|
.Bind("errors"_s, PresetErrorsHelper, false)
|
||||||
.Bind("debug"_s, PresetDebugHelper, false)
|
.Bind("debug"_s, PresetDebugHelper, false)
|
||||||
.Bind("trace"_s, PresetTraceHelper, false)
|
.Bind("trace"_s, PresetTraceHelper, false);
|
||||||
.Bind("condition"_s, &ConfigurePreset::ConditionEvaluator,
|
|
||||||
cmCMakePresetsGraphInternal::PresetConditionHelper, false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace cmCMakePresetsGraphInternal {
|
namespace cmCMakePresetsGraphInternal {
|
||||||
|
|||||||
@@ -1,9 +1,7 @@
|
|||||||
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||||
file LICENSE.rst or https://cmake.org/licensing for details. */
|
file LICENSE.rst or https://cmake.org/licensing for details. */
|
||||||
#include <cstddef>
|
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <memory>
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
@@ -36,30 +34,10 @@ auto const VariablesHelper = cmJSONHelperBuilder::Map<std::string>(
|
|||||||
cmCMakePresetsErrors::INVALID_VARIABLE, VariableHelper);
|
cmCMakePresetsErrors::INVALID_VARIABLE, VariableHelper);
|
||||||
|
|
||||||
auto const PackagePresetHelper =
|
auto const PackagePresetHelper =
|
||||||
cmJSONHelperBuilder::Object<PackagePreset>(
|
cmCMakePresetsGraphInternal::BindDependentPresetFields(
|
||||||
cmCMakePresetsErrors::INVALID_PRESET_OBJECT, false)
|
cmCMakePresetsGraphInternal::BindPresetIdentityFields(
|
||||||
.Bind("name"_s, &PackagePreset::Name,
|
cmJSONHelperBuilder::Object<PackagePreset>(
|
||||||
cmCMakePresetsGraphInternal::PresetNameHelper)
|
cmCMakePresetsErrors::INVALID_PRESET_OBJECT, false)))
|
||||||
.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)
|
|
||||||
.Bind("generators"_s, &PackagePreset::Generators,
|
.Bind("generators"_s, &PackagePreset::Generators,
|
||||||
cmCMakePresetsGraphInternal::PresetVectorStringHelper, false)
|
cmCMakePresetsGraphInternal::PresetVectorStringHelper, false)
|
||||||
.Bind("configurations"_s, &PackagePreset::Configurations,
|
.Bind("configurations"_s, &PackagePreset::Configurations,
|
||||||
@@ -75,9 +53,7 @@ auto const PackagePresetHelper =
|
|||||||
.Bind("packageDirectory"_s, &PackagePreset::PackageDirectory,
|
.Bind("packageDirectory"_s, &PackagePreset::PackageDirectory,
|
||||||
cmCMakePresetsGraphInternal::PresetStringHelper, false)
|
cmCMakePresetsGraphInternal::PresetStringHelper, false)
|
||||||
.Bind("vendorName"_s, &PackagePreset::VendorName,
|
.Bind("vendorName"_s, &PackagePreset::VendorName,
|
||||||
cmCMakePresetsGraphInternal::PresetStringHelper, false)
|
cmCMakePresetsGraphInternal::PresetStringHelper, false);
|
||||||
.Bind("condition"_s, &PackagePreset::ConditionEvaluator,
|
|
||||||
cmCMakePresetsGraphInternal::PresetConditionHelper, false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace cmCMakePresetsGraphInternal {
|
namespace cmCMakePresetsGraphInternal {
|
||||||
|
|||||||
@@ -1,9 +1,6 @@
|
|||||||
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||||
file LICENSE.rst or https://cmake.org/licensing for details. */
|
file LICENSE.rst or https://cmake.org/licensing for details. */
|
||||||
#include <cstddef>
|
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <map>
|
|
||||||
#include <memory>
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
@@ -368,30 +365,10 @@ auto const TestPresetFilterHelper =
|
|||||||
TestPresetOptionalFilterExcludeHelper, false));
|
TestPresetOptionalFilterExcludeHelper, false));
|
||||||
|
|
||||||
auto const TestPresetHelper =
|
auto const TestPresetHelper =
|
||||||
JSONHelperBuilder::Object<TestPreset>(
|
cmCMakePresetsGraphInternal::BindDependentPresetFields(
|
||||||
cmCMakePresetsErrors::INVALID_PRESET_OBJECT, false)
|
cmCMakePresetsGraphInternal::BindPresetIdentityFields(
|
||||||
.Bind("name"_s, &TestPreset::Name,
|
JSONHelperBuilder::Object<TestPreset>(
|
||||||
cmCMakePresetsGraphInternal::PresetNameHelper)
|
cmCMakePresetsErrors::INVALID_PRESET_OBJECT, false)))
|
||||||
.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)
|
|
||||||
.Bind("configuration"_s, &TestPreset::Configuration,
|
.Bind("configuration"_s, &TestPreset::Configuration,
|
||||||
cmCMakePresetsGraphInternal::PresetStringHelper, false)
|
cmCMakePresetsGraphInternal::PresetStringHelper, false)
|
||||||
.Bind("overwriteConfigurationFile"_s,
|
.Bind("overwriteConfigurationFile"_s,
|
||||||
@@ -401,9 +378,7 @@ auto const TestPresetHelper =
|
|||||||
false)
|
false)
|
||||||
.Bind("filter"_s, &TestPreset::Filter, TestPresetFilterHelper, false)
|
.Bind("filter"_s, &TestPreset::Filter, TestPresetFilterHelper, false)
|
||||||
.Bind("execution"_s, &TestPreset::Execution, TestPresetExecutionHelper,
|
.Bind("execution"_s, &TestPreset::Execution, TestPresetExecutionHelper,
|
||||||
false)
|
false);
|
||||||
.Bind("condition"_s, &TestPreset::ConditionEvaluator,
|
|
||||||
cmCMakePresetsGraphInternal::PresetConditionHelper, false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace cmCMakePresetsGraphInternal {
|
namespace cmCMakePresetsGraphInternal {
|
||||||
|
|||||||
Reference in New Issue
Block a user