Index: tools/gn/ninja_toolchain_writer.cc |
diff --git a/tools/gn/ninja_toolchain_writer.cc b/tools/gn/ninja_toolchain_writer.cc |
index 9b699b8b70766ad02cf77dcdc3b9380636ec0e7d..40653a87aaf8004f9fb44080534a7e0d5fcc8b9e 100644 |
--- a/tools/gn/ninja_toolchain_writer.cc |
+++ b/tools/gn/ninja_toolchain_writer.cc |
@@ -27,11 +27,9 @@ const char kIndent[] = " "; |
NinjaToolchainWriter::NinjaToolchainWriter( |
const Settings* settings, |
const Toolchain* toolchain, |
- const std::vector<const Target*>& targets, |
std::ostream& out) |
: settings_(settings), |
toolchain_(toolchain), |
- targets_(targets), |
out_(out), |
path_output_(settings_->build_settings()->build_dir(), |
settings_->build_settings()->root_path_utf8(), |
@@ -41,16 +39,27 @@ NinjaToolchainWriter::NinjaToolchainWriter( |
NinjaToolchainWriter::~NinjaToolchainWriter() { |
} |
-void NinjaToolchainWriter::Run() { |
- WriteRules(); |
- WriteSubninjas(); |
+void NinjaToolchainWriter::Run( |
+ const std::vector<NinjaWriter::TargetRulePair>& rules) { |
+ std::string rule_prefix = GetNinjaRulePrefixForToolchain(settings_); |
+ |
+ for (int i = Toolchain::TYPE_NONE + 1; i < Toolchain::TYPE_NUMTYPES; i++) { |
+ Toolchain::ToolType tool_type = static_cast<Toolchain::ToolType>(i); |
+ const Tool* tool = toolchain_->GetTool(tool_type); |
+ if (tool) |
+ WriteToolRule(tool_type, tool, rule_prefix); |
+ } |
+ out_ << std::endl; |
+ |
+ for (const auto& pair : rules) |
+ out_ << pair.second; |
} |
// static |
bool NinjaToolchainWriter::RunAndWriteFile( |
const Settings* settings, |
const Toolchain* toolchain, |
- const std::vector<const Target*>& targets) { |
+ const std::vector<NinjaWriter::TargetRulePair>& rules) { |
base::FilePath ninja_file(settings->build_settings()->GetFullPath( |
GetNinjaFileForToolchain(settings))); |
ScopedTrace trace(TraceItem::TRACE_FILE_WRITE, FilePathToUTF8(ninja_file)); |
@@ -63,23 +72,11 @@ bool NinjaToolchainWriter::RunAndWriteFile( |
if (file.fail()) |
return false; |
- NinjaToolchainWriter gen(settings, toolchain, targets, file); |
- gen.Run(); |
+ NinjaToolchainWriter gen(settings, toolchain, file); |
+ gen.Run(rules); |
return true; |
} |
-void NinjaToolchainWriter::WriteRules() { |
- std::string rule_prefix = GetNinjaRulePrefixForToolchain(settings_); |
- |
- for (int i = Toolchain::TYPE_NONE + 1; i < Toolchain::TYPE_NUMTYPES; i++) { |
- Toolchain::ToolType tool_type = static_cast<Toolchain::ToolType>(i); |
- const Tool* tool = toolchain_->GetTool(tool_type); |
- if (tool) |
- WriteToolRule(tool_type, tool, rule_prefix); |
- } |
- out_ << std::endl; |
-} |
- |
void NinjaToolchainWriter::WriteToolRule(const Toolchain::ToolType type, |
const Tool* tool, |
const std::string& rule_prefix) { |
@@ -133,15 +130,3 @@ void NinjaToolchainWriter::WriteRulePattern(const char* name, |
SubstitutionWriter::WriteWithNinjaVariables(pattern, options, out_); |
out_ << std::endl; |
} |
- |
-void NinjaToolchainWriter::WriteSubninjas() { |
- // Write subninja commands for each generated target. |
- for (auto* target : targets_) { |
- OutputFile ninja_file(target->settings()->build_settings(), |
- GetNinjaFileForTarget(target)); |
- out_ << "subninja "; |
- path_output_.WriteFile(out_, ninja_file); |
- out_ << std::endl; |
- } |
- out_ << std::endl; |
-} |