|
@@ -78,7 +78,7 @@ void InheritVector(std::vector<T>& child, const std::vector<T>& parent)
|
|
|
template <class T>
|
|
template <class T>
|
|
|
ReadFileResult VisitPreset(
|
|
ReadFileResult VisitPreset(
|
|
|
T& preset, std::map<std::string, cmCMakePresetsFile::PresetPair<T>>& presets,
|
|
T& preset, std::map<std::string, cmCMakePresetsFile::PresetPair<T>>& presets,
|
|
|
- std::map<std::string, CycleStatus> cycleStatus)
|
|
|
|
|
|
|
+ std::map<std::string, CycleStatus> cycleStatus, int version)
|
|
|
{
|
|
{
|
|
|
switch (cycleStatus[preset.Name]) {
|
|
switch (cycleStatus[preset.Name]) {
|
|
|
case CycleStatus::InProgress:
|
|
case CycleStatus::InProgress:
|
|
@@ -108,7 +108,7 @@ ReadFileResult VisitPreset(
|
|
|
return ReadFileResult::USER_PRESET_INHERITANCE;
|
|
return ReadFileResult::USER_PRESET_INHERITANCE;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- auto result = VisitPreset(parentPreset, presets, cycleStatus);
|
|
|
|
|
|
|
+ auto result = VisitPreset(parentPreset, presets, cycleStatus, version);
|
|
|
if (result != ReadFileResult::READ_OK) {
|
|
if (result != ReadFileResult::READ_OK) {
|
|
|
return result;
|
|
return result;
|
|
|
}
|
|
}
|
|
@@ -128,7 +128,7 @@ ReadFileResult VisitPreset(
|
|
|
preset.ConditionEvaluator.reset();
|
|
preset.ConditionEvaluator.reset();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- CHECK_OK(preset.VisitPresetAfterInherit())
|
|
|
|
|
|
|
+ CHECK_OK(preset.VisitPresetAfterInherit(version))
|
|
|
|
|
|
|
|
cycleStatus[preset.Name] = CycleStatus::Verified;
|
|
cycleStatus[preset.Name] = CycleStatus::Verified;
|
|
|
return ReadFileResult::READ_OK;
|
|
return ReadFileResult::READ_OK;
|
|
@@ -136,7 +136,8 @@ ReadFileResult VisitPreset(
|
|
|
|
|
|
|
|
template <class T>
|
|
template <class T>
|
|
|
ReadFileResult ComputePresetInheritance(
|
|
ReadFileResult ComputePresetInheritance(
|
|
|
- std::map<std::string, cmCMakePresetsFile::PresetPair<T>>& presets)
|
|
|
|
|
|
|
+ std::map<std::string, cmCMakePresetsFile::PresetPair<T>>& presets,
|
|
|
|
|
+ const cmCMakePresetsFile& file)
|
|
|
{
|
|
{
|
|
|
std::map<std::string, CycleStatus> cycleStatus;
|
|
std::map<std::string, CycleStatus> cycleStatus;
|
|
|
for (auto const& it : presets) {
|
|
for (auto const& it : presets) {
|
|
@@ -144,7 +145,9 @@ ReadFileResult ComputePresetInheritance(
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
for (auto& it : presets) {
|
|
for (auto& it : presets) {
|
|
|
- auto result = VisitPreset<T>(it.second.Unexpanded, presets, cycleStatus);
|
|
|
|
|
|
|
+ auto& preset = it.second.Unexpanded;
|
|
|
|
|
+ auto result =
|
|
|
|
|
+ VisitPreset<T>(preset, presets, cycleStatus, file.GetVersion(preset));
|
|
|
if (result != ReadFileResult::READ_OK) {
|
|
if (result != ReadFileResult::READ_OK) {
|
|
|
return result;
|
|
return result;
|
|
|
}
|
|
}
|
|
@@ -667,16 +670,19 @@ cmCMakePresetsFile::ConfigurePreset::VisitPresetBeforeInherit()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
cmCMakePresetsFile::ReadFileResult
|
|
cmCMakePresetsFile::ReadFileResult
|
|
|
-cmCMakePresetsFile::ConfigurePreset::VisitPresetAfterInherit()
|
|
|
|
|
|
|
+cmCMakePresetsFile::ConfigurePreset::VisitPresetAfterInherit(int version)
|
|
|
{
|
|
{
|
|
|
auto& preset = *this;
|
|
auto& preset = *this;
|
|
|
if (!preset.Hidden) {
|
|
if (!preset.Hidden) {
|
|
|
- if (preset.Generator.empty()) {
|
|
|
|
|
- return ReadFileResult::INVALID_PRESET;
|
|
|
|
|
- }
|
|
|
|
|
- if (preset.BinaryDir.empty()) {
|
|
|
|
|
- return ReadFileResult::INVALID_PRESET;
|
|
|
|
|
|
|
+ if (version < 3) {
|
|
|
|
|
+ if (preset.Generator.empty()) {
|
|
|
|
|
+ return ReadFileResult::INVALID_PRESET;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (preset.BinaryDir.empty()) {
|
|
|
|
|
+ return ReadFileResult::INVALID_PRESET;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
if (preset.WarnDev == false && preset.ErrorDev == true) {
|
|
if (preset.WarnDev == false && preset.ErrorDev == true) {
|
|
|
return ReadFileResult::INVALID_PRESET;
|
|
return ReadFileResult::INVALID_PRESET;
|
|
|
}
|
|
}
|
|
@@ -712,7 +718,7 @@ cmCMakePresetsFile::BuildPreset::VisitPresetInherit(
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
cmCMakePresetsFile::ReadFileResult
|
|
cmCMakePresetsFile::ReadFileResult
|
|
|
-cmCMakePresetsFile::BuildPreset::VisitPresetAfterInherit()
|
|
|
|
|
|
|
+cmCMakePresetsFile::BuildPreset::VisitPresetAfterInherit(int /* version */)
|
|
|
{
|
|
{
|
|
|
auto& preset = *this;
|
|
auto& preset = *this;
|
|
|
if (!preset.Hidden && preset.ConfigurePreset.empty()) {
|
|
if (!preset.Hidden && preset.ConfigurePreset.empty()) {
|
|
@@ -822,7 +828,7 @@ cmCMakePresetsFile::TestPreset::VisitPresetInherit(
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
cmCMakePresetsFile::ReadFileResult
|
|
cmCMakePresetsFile::ReadFileResult
|
|
|
-cmCMakePresetsFile::TestPreset::VisitPresetAfterInherit()
|
|
|
|
|
|
|
+cmCMakePresetsFile::TestPreset::VisitPresetAfterInherit(int /* version */)
|
|
|
{
|
|
{
|
|
|
auto& preset = *this;
|
|
auto& preset = *this;
|
|
|
if (!preset.Hidden && preset.ConfigurePreset.empty()) {
|
|
if (!preset.Hidden && preset.ConfigurePreset.empty()) {
|
|
@@ -883,9 +889,9 @@ cmCMakePresetsFile::ReadProjectPresetsInternal(bool allowNoFiles)
|
|
|
: ReadFileResult::FILE_NOT_FOUND;
|
|
: ReadFileResult::FILE_NOT_FOUND;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- CHECK_OK(ComputePresetInheritance(this->ConfigurePresets))
|
|
|
|
|
- CHECK_OK(ComputePresetInheritance(this->BuildPresets))
|
|
|
|
|
- CHECK_OK(ComputePresetInheritance(this->TestPresets))
|
|
|
|
|
|
|
+ CHECK_OK(ComputePresetInheritance(this->ConfigurePresets, *this))
|
|
|
|
|
+ CHECK_OK(ComputePresetInheritance(this->BuildPresets, *this))
|
|
|
|
|
+ CHECK_OK(ComputePresetInheritance(this->TestPresets, *this))
|
|
|
|
|
|
|
|
for (auto& it : this->ConfigurePresets) {
|
|
for (auto& it : this->ConfigurePresets) {
|
|
|
if (!ExpandMacros(*this, it.second.Unexpanded, it.second.Expanded)) {
|
|
if (!ExpandMacros(*this, it.second.Unexpanded, it.second.Expanded)) {
|