Ninja: Use cmNinjaBuild class for WriteBuild

This commit is contained in:
Sebastian Holtermann 2019-05-30 17:29:06 +02:00
parent df06c8d792
commit ccf9507956

View File

@ -1940,32 +1940,29 @@ bool cmGlobalNinjaGenerator::WriteDyndepFile(
cmGeneratedFileStream ddf(arg_dd); cmGeneratedFileStream ddf(arg_dd);
ddf << "ninja_dyndep_version = 1.0\n"; ddf << "ninja_dyndep_version = 1.0\n";
{
cmNinjaBuild build("dyndep");
build.Outputs.emplace_back("");
for (cmDyndepObjectInfo const& object : objects) { for (cmDyndepObjectInfo const& object : objects) {
std::string const ddComment; build.Outputs[0] = object.Object;
std::string const ddRule = "dyndep"; build.ImplicitOuts.clear();
cmNinjaDeps ddOutputs;
cmNinjaDeps ddImplicitOuts;
cmNinjaDeps ddExplicitDeps;
cmNinjaDeps ddImplicitDeps;
cmNinjaDeps ddOrderOnlyDeps;
cmNinjaVars ddVars;
ddOutputs.push_back(object.Object);
for (std::string const& p : object.Provides) { for (std::string const& p : object.Provides) {
ddImplicitOuts.push_back(this->ConvertToNinjaPath(mod_files[p])); build.ImplicitOuts.push_back(this->ConvertToNinjaPath(mod_files[p]));
} }
build.ImplicitDeps.clear();
for (std::string const& r : object.Requires) { for (std::string const& r : object.Requires) {
std::map<std::string, std::string>::iterator m = mod_files.find(r); auto mit = mod_files.find(r);
if (m != mod_files.end()) { if (mit != mod_files.end()) {
ddImplicitDeps.push_back(this->ConvertToNinjaPath(m->second)); build.ImplicitDeps.push_back(this->ConvertToNinjaPath(mit->second));
} }
} }
build.Variables.clear();
if (!object.Provides.empty()) { if (!object.Provides.empty()) {
ddVars["restat"] = "1"; build.Variables.emplace("restat", "1");
} }
this->WriteBuild(ddf, ddComment, ddRule, ddOutputs, ddImplicitOuts, this->WriteBuild(ddf, build);
ddExplicitDeps, ddImplicitDeps, ddOrderOnlyDeps, ddVars); }
} }
// Store the map of modules provided by this target in a file for // Store the map of modules provided by this target in a file for