cmScanDepFormat: support the MSVC 17.3 toolchain temporarily

At least until 17.4 is out.
This commit is contained in:
Ben Boeckel
2022-08-01 09:59:15 -04:00
parent d7f5064ff7
commit a84c186a7d

View File

@@ -5,6 +5,7 @@
#include <cctype>
#include <cstdio>
#include <iostream>
#include <utility>
#include <cm/optional>
@@ -280,6 +281,27 @@ bool cmScanDepFormat_P1689_Parse(std::string const& arg_pp,
info->Requires.push_back(require_info);
}
}
// MSVC 17.3 toolchain bug. Remove when 17.4 is available.
if (rule.isMember("is-interface")) {
std::cerr
<< "warning: acknowledging an VS 17.3 toolchain bug; accepting "
"until a new release which fixes it is available"
<< std::endl;
Json::Value const& is_interface_json = rule["is-interface"];
if (!is_interface_json.isBool()) {
cmSystemTools::Error(
cmStrCat("-E cmake_ninja_dyndep failed to parse ", arg_pp,
": is-interface is not a boolean"));
return false;
}
bool is_interface = is_interface_json.asBool();
for (auto& provide : info->Provides) {
provide.IsInterface = is_interface;
}
}
}
}