From 0029686e8675493df4bf38633ea713bf5926d3be Mon Sep 17 00:00:00 2001 From: Tyler Yankee Date: Sat, 22 Aug 2026 20:37:10 -0400 Subject: [PATCH 1/3] presets: Extract configure dependency resolution to helper --- Source/cmCMakePresetsGraph.cxx | 146 ++++++++++++--------------------- Source/cmCMakePresetsGraph.h | 3 + 2 files changed, 55 insertions(+), 94 deletions(-) diff --git a/Source/cmCMakePresetsGraph.cxx b/Source/cmCMakePresetsGraph.cxx index e2d1934bd4..f2636e6590 100644 --- a/Source/cmCMakePresetsGraph.cxx +++ b/Source/cmCMakePresetsGraph.cxx @@ -1237,6 +1237,54 @@ std::string cmCMakePresetsGraph::GetGeneratorForPreset( return {}; } +template +bool cmCMakePresetsGraph::ResolveDependentPresets( + std::map>& 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( + std::map>&); + +template bool +cmCMakePresetsGraph::ResolveDependentPresets( + std::map>&); + +template bool cmCMakePresetsGraph::ResolveDependentPresets< + cmCMakePresetsGraph::PackagePreset>( + std::map>&); + bool cmCMakePresetsGraph::ReadProjectPresetsInternal( std::string const& presetsFile, ReadOption readFilesOption) { @@ -1300,100 +1348,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) { diff --git a/Source/cmCMakePresetsGraph.h b/Source/cmCMakePresetsGraph.h index f04dfdd1ec..859075c50f 100644 --- a/Source/cmCMakePresetsGraph.h +++ b/Source/cmCMakePresetsGraph.h @@ -435,6 +435,9 @@ public: PresetResolveStatus status, std::string const& errorPresetName, std::string const& directory); + template + bool ResolveDependentPresets(std::map>& presets); + std::map> ConfigurePresets; std::map> BuildPresets; std::map> TestPresets; From a1e4b92270bdc907039d3fd755ab871868487efa Mon Sep 17 00:00:00 2001 From: Tyler Yankee Date: Sat, 22 Aug 2026 20:47:30 -0400 Subject: [PATCH 2/3] presets: Extract preset registration to helper --- Source/cmCMakePresetsGraphReadJSON.cxx | 193 ++++++++++--------------- 1 file changed, 73 insertions(+), 120 deletions(-) diff --git a/Source/cmCMakePresetsGraphReadJSON.cxx b/Source/cmCMakePresetsGraphReadJSON.cxx index 27c3b996ee..2d46d9b5cb 100644 --- a/Source/cmCMakePresetsGraphReadJSON.cxx +++ b/Source/cmCMakePresetsGraphReadJSON.cxx @@ -31,6 +31,8 @@ using BuildPreset = cmCMakePresetsGraph::BuildPreset; using TestPreset = cmCMakePresetsGraph::TestPreset; using PackagePreset = cmCMakePresetsGraph::PackagePreset; using WorkflowPreset = cmCMakePresetsGraph::WorkflowPreset; +template +using PresetPair = cmCMakePresetsGraph::PresetPair; using ArchToolsetStrategy = cmCMakePresetsGraph::ArchToolsetStrategy; using JSONHelperBuilder = cmJSONHelperBuilder; using ExpandMacroResult = cmCMakePresetsGraphInternal::ExpandMacroResult; @@ -328,6 +330,41 @@ public: return ExpandMacroResult::Ignore; } }; + +template +bool RegisterPresets(std::vector& presets, cmCMakePresetsGraph::File* file, + std::map>& out, + std::vector& order, cmJSONState* state, + std::function const& checkVersionSupport = {}) +{ + for (auto& preset : presets) { + preset.OriginFile = file; + if (preset.Name.empty()) { + // No error, already handled by PresetNameHelper + return false; + } + + if (!ExpandImmediateMacros(preset)) { + cmCMakePresetsErrors::INVALID_MACRO_EXPANSION(preset.Name, state); + return false; + } + + if (checkVersionSupport && !checkVersionSupport(preset)) { + return false; + } + + PresetPair 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 { @@ -585,19 +622,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(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"], @@ -632,73 +657,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 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( + 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(preset)) { - cmCMakePresetsErrors::INVALID_MACRO_EXPANSION(preset.Name, - &this->parseState); - return false; - } - - PresetPair 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(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(preset)) { - cmCMakePresetsErrors::INVALID_MACRO_EXPANSION(preset.Name, - &this->parseState); - return false; - } - - PresetPair 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); @@ -732,61 +717,29 @@ bool cmCMakePresetsGraph::ReadJSONFile(std::string const& filename, return false; } - this->TestPresetOrder.push_back(preset.Name); + return true; + }; + + if (!RegisterPresets(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(preset)) { - cmCMakePresetsErrors::INVALID_MACRO_EXPANSION(preset.Name, - &this->parseState); - return false; - } - - PresetPair 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( + 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(preset)) { - cmCMakePresetsErrors::INVALID_MACRO_EXPANSION(preset.Name, - &this->parseState); - return false; - } - - PresetPair 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( + presets.WorkflowPresets, file, this->WorkflowPresets, + this->WorkflowPresetOrder, &this->parseState)) { + return false; } auto const includeFile = [this, &inProgressFiles, From fffec0f86ed2f4c59f09c59f944d64b2192a1ba8 Mon Sep 17 00:00:00 2001 From: Tyler Yankee Date: Sat, 22 Aug 2026 21:06:18 -0400 Subject: [PATCH 3/3] presets: Extract common JSON field binds to helper --- Source/cmCMakePresetsGraphInternal.h | 39 +++++++++++++++++++ ...mCMakePresetsGraphReadJSONBuildPresets.cxx | 33 ++-------------- ...kePresetsGraphReadJSONConfigurePresets.cxx | 26 ++----------- ...MakePresetsGraphReadJSONPackagePresets.cxx | 34 +++------------- ...cmCMakePresetsGraphReadJSONTestPresets.cxx | 35 +++-------------- 5 files changed, 57 insertions(+), 110 deletions(-) diff --git a/Source/cmCMakePresetsGraphInternal.h b/Source/cmCMakePresetsGraphInternal.h index 964ddfbdbd..c552ca47f9 100644 --- a/Source/cmCMakePresetsGraphInternal.h +++ b/Source/cmCMakePresetsGraphInternal.h @@ -9,9 +9,11 @@ #include #include +#include #include +#include "cmCMakePresetsErrors.h" #include "cmCMakePresetsGraph.h" #include "cmJSONHelpers.h" #include "cmSystemTools.h" @@ -327,4 +329,41 @@ cmJSONHelper SchemaHelper(); bool CheckDiagnostics(cmJSONState* state, int version, cmCMakePresetsGraph::ConfigurePreset& preset); + +// Binds the fields common to every preset kind. +template +cmJSONHelperBuilder::Object BindPresetIdentityFields( + cmJSONHelperBuilder::Object 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( + "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 +cmJSONHelperBuilder::Object BindDependentPresetFields( + cmJSONHelperBuilder::Object 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; +} } diff --git a/Source/cmCMakePresetsGraphReadJSONBuildPresets.cxx b/Source/cmCMakePresetsGraphReadJSONBuildPresets.cxx index cadbcd1e27..afa3555169 100644 --- a/Source/cmCMakePresetsGraphReadJSONBuildPresets.cxx +++ b/Source/cmCMakePresetsGraphReadJSONBuildPresets.cxx @@ -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 #include -#include -#include #include #include @@ -58,30 +55,10 @@ std::function const }; auto const BuildPresetHelper = - JSONHelperBuilder::Object( - 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("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( + 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); } diff --git a/Source/cmCMakePresetsGraphReadJSONConfigurePresets.cxx b/Source/cmCMakePresetsGraphReadJSONConfigurePresets.cxx index 05834356b5..ad4e1bd35e 100644 --- a/Source/cmCMakePresetsGraphReadJSONConfigurePresets.cxx +++ b/Source/cmCMakePresetsGraphReadJSONConfigurePresets.cxx @@ -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 -#include #include #include -#include #include #include #include @@ -285,23 +283,9 @@ auto const PresetTraceHelper = cmCMakePresetsGraphInternal::PresetStringHelper, false); auto const ConfigurePresetHelper = - JSONHelperBuilder::Object( - 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("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( + 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 { diff --git a/Source/cmCMakePresetsGraphReadJSONPackagePresets.cxx b/Source/cmCMakePresetsGraphReadJSONPackagePresets.cxx index 2fec3ae290..89b91de529 100644 --- a/Source/cmCMakePresetsGraphReadJSONPackagePresets.cxx +++ b/Source/cmCMakePresetsGraphReadJSONPackagePresets.cxx @@ -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 #include #include -#include #include #include @@ -36,30 +34,10 @@ auto const VariablesHelper = cmJSONHelperBuilder::Map( cmCMakePresetsErrors::INVALID_VARIABLE, VariableHelper); auto const PackagePresetHelper = - cmJSONHelperBuilder::Object( - 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("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( + 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 { diff --git a/Source/cmCMakePresetsGraphReadJSONTestPresets.cxx b/Source/cmCMakePresetsGraphReadJSONTestPresets.cxx index 68e58718b1..d75ecf14a9 100644 --- a/Source/cmCMakePresetsGraphReadJSONTestPresets.cxx +++ b/Source/cmCMakePresetsGraphReadJSONTestPresets.cxx @@ -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 #include -#include -#include #include #include @@ -368,30 +365,10 @@ auto const TestPresetFilterHelper = TestPresetOptionalFilterExcludeHelper, false)); auto const TestPresetHelper = - JSONHelperBuilder::Object( - 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("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( + 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 {