Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(499)

Unified Diff: tools/gn/ninja_action_target_writer.cc

Issue 440333002: Support more configurability in GN toolchains (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/gn/ninja_action_target_writer.cc
diff --git a/tools/gn/ninja_action_target_writer.cc b/tools/gn/ninja_action_target_writer.cc
index cb5895ee85c4a8efb60cf59a522b37d4c7f79091..6aff197c5832c17d146b950ec3148c6cbc287820 100644
--- a/tools/gn/ninja_action_target_writer.cc
+++ b/tools/gn/ninja_action_target_writer.cc
@@ -6,14 +6,14 @@
#include "base/strings/string_util.h"
#include "tools/gn/err.h"
+#include "tools/gn/settings.h"
#include "tools/gn/string_utils.h"
#include "tools/gn/substitution_writer.h"
#include "tools/gn/target.h"
NinjaActionTargetWriter::NinjaActionTargetWriter(const Target* target,
- const Toolchain* toolchain,
std::ostream& out)
- : NinjaTargetWriter(target, toolchain, out),
+ : NinjaTargetWriter(target, out),
path_output_no_escaping_(
target->settings()->build_settings()->build_dir(),
ESCAPE_NONE) {
@@ -57,10 +57,7 @@ void NinjaActionTargetWriter::Run() {
out_ << "build";
SubstitutionWriter::GetListAsOutputFiles(
settings_, target_->action_values().outputs(), &output_files);
- for (size_t i = 0; i < output_files.size(); i++) {
- out_ << " ";
- path_output_.WriteFile(out_, output_files[i]);
- }
+ path_output_.WriteFiles(out_, output_files);
out_ << ": " << custom_rule_name << implicit_deps << std::endl;
if (target_->action_values().has_depfile()) {
@@ -71,7 +68,13 @@ void NinjaActionTargetWriter::Run() {
}
out_ << std::endl;
- WriteStamp(output_files);
+ // Write the stamp, which also depends on all datadeps. These are needed at
+ // runtime and should be compiled when the action is, but don't need to be
+ // done before we run the action.
+ std::vector<OutputFile> data_outs;
+ for (size_t i = 0; i < target_->datadeps().size(); i++)
+ data_outs.push_back(target_->datadeps()[i].ptr->dependency_output_file());
+ WriteStampForTarget(output_files, data_outs);
}
std::string NinjaActionTargetWriter::WriteRuleDefinition() {
@@ -92,7 +95,7 @@ std::string NinjaActionTargetWriter::WriteRuleDefinition() {
if (settings_->IsWin()) {
// Send through gyp-win-tool and use a response file.
std::string rspfile = custom_rule_name;
- if (has_sources())
+ if (!target_->sources().empty())
rspfile += ".$unique_name";
rspfile += ".rsp";
@@ -177,32 +180,6 @@ void NinjaActionTargetWriter::WriteSourceRules(
}
}
-void NinjaActionTargetWriter::WriteStamp(
- const std::vector<OutputFile>& output_files) {
- out_ << "build ";
- path_output_.WriteFile(out_, helper_.GetTargetOutputFile(target_));
- out_ << ": "
- << helper_.GetRulePrefix(target_->settings())
- << "stamp";
-
- // The action stamp depends on all output files from running the action.
- for (size_t i = 0; i < output_files.size(); i++) {
- out_ << " ";
- path_output_.WriteFile(out_, output_files[i]);
- }
-
- // It also depends on all datadeps. These are needed at runtime and should
- // be compiled when the action is, but don't need to be done before we run
- // the action.
- for (size_t i = 0; i < target_->datadeps().size(); i++) {
- out_ << " ";
- path_output_.WriteFile(out_,
- helper_.GetTargetOutputFile(target_->datadeps()[i].ptr));
- }
-
- out_ << std::endl;
-}
-
void NinjaActionTargetWriter::WriteOutputFilesForBuildLine(
const SourceFile& source,
std::vector<OutputFile>* output_files) {

Powered by Google App Engine
This is Rietveld 408576698