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

Unified Diff: tools/gn/ninja_action_target_writer.cc

Issue 387663003: Improve GN handling of directory templates. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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
« no previous file with comments | « tools/gn/function_write_file.cc ('k') | tools/gn/ninja_action_target_writer_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 6a632e789e32f7f0f24c69dc9f89c8d75a7f5b6c..6fec07976c41fe09343c70c691d1f4065539abd4 100644
--- a/tools/gn/ninja_action_target_writer.cc
+++ b/tools/gn/ninja_action_target_writer.cc
@@ -23,8 +23,11 @@ NinjaActionTargetWriter::~NinjaActionTargetWriter() {
}
void NinjaActionTargetWriter::Run() {
- FileTemplate args_template(target_->settings(),
- target_->action_values().args());
+ FileTemplate args_template(
+ target_->settings(),
+ target_->action_values().args(),
+ FileTemplate::OUTPUT_RELATIVE,
+ target_->settings()->build_settings()->build_dir());
std::string custom_rule_name = WriteRuleDefinition(args_template);
// Collect our deps to pass as "extra hard dependencies" for input deps. This
@@ -58,10 +61,11 @@ void NinjaActionTargetWriter::Run() {
// Write a rule that invokes the script once with the outputs as outputs,
// and the data as inputs.
out_ << "build";
- const Target::FileList& outputs = target_->action_values().outputs();
+ const std::vector<std::string>& outputs =
+ target_->action_values().outputs();
for (size_t i = 0; i < outputs.size(); i++) {
OutputFile output_path(
- RemovePrefix(outputs[i].value(),
+ RemovePrefix(outputs[i],
settings_->build_settings()->build_dir().value()));
output_files.push_back(output_path);
out_ << " ";
@@ -141,7 +145,7 @@ void NinjaActionTargetWriter::WriteArgsSubstitutions(
template_escape_options.mode = ESCAPE_NINJA_COMMAND;
args_template.WriteNinjaVariablesForSubstitution(
- out_, target_->settings(), source, template_escape_options);
+ out_, source, template_escape_options);
}
void NinjaActionTargetWriter::WriteSourceRules(
@@ -149,7 +153,7 @@ void NinjaActionTargetWriter::WriteSourceRules(
const std::string& implicit_deps,
const FileTemplate& args_template,
std::vector<OutputFile>* output_files) {
- FileTemplate output_template(GetOutputTemplate());
+ FileTemplate output_template = FileTemplate::GetForTargetOutputs(target_);
const Target::FileList& sources = target_->sources();
for (size_t i = 0; i < sources.size(); i++) {
@@ -208,7 +212,11 @@ void NinjaActionTargetWriter::WriteOutputFilesForBuildLine(
std::vector<std::string> output_template_result;
output_template.Apply(source, &output_template_result);
for (size_t out_i = 0; out_i < output_template_result.size(); out_i++) {
- OutputFile output_path(output_template_result[out_i]);
+ // All output files should be in the build directory, so we can rebase
+ // them just by trimming the prefix.
+ OutputFile output_path(
+ RemovePrefix(output_template_result[out_i],
+ settings_->build_settings()->build_dir().value()));
output_files->push_back(output_path);
out_ << " ";
path_output_.WriteFile(out_, output_path);
@@ -227,5 +235,6 @@ FileTemplate NinjaActionTargetWriter::GetDepfileTemplate() const {
RemovePrefix(target_->action_values().depfile().value(),
settings_->build_settings()->build_dir().value());
template_args.push_back(depfile_relative_to_build_dir);
- return FileTemplate(settings_, template_args);
+ return FileTemplate(settings_, template_args, FileTemplate::OUTPUT_ABSOLUTE,
+ SourceDir());
}
« no previous file with comments | « tools/gn/function_write_file.cc ('k') | tools/gn/ninja_action_target_writer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698