Index: tools/gn/ninja_target_writer.cc |
diff --git a/tools/gn/ninja_target_writer.cc b/tools/gn/ninja_target_writer.cc |
index d73c873271d0784a252be41dea5e7b866b6ff663..bdc0472417cc476928c8f22ec3ccb9662f3b6400 100644 |
--- a/tools/gn/ninja_target_writer.cc |
+++ b/tools/gn/ninja_target_writer.cc |
@@ -19,9 +19,12 @@ |
#include "tools/gn/target.h" |
#include "tools/gn/trace.h" |
-NinjaTargetWriter::NinjaTargetWriter(const Target* target, std::ostream& out) |
+NinjaTargetWriter::NinjaTargetWriter(const Target* target, |
+ const Toolchain* toolchain, |
+ std::ostream& out) |
: settings_(target->settings()), |
target_(target), |
+ toolchain_(toolchain), |
out_(out), |
path_output_(settings_->build_settings()->build_dir(), |
ESCAPE_NINJA, true), |
@@ -45,7 +48,7 @@ void NinjaTargetWriter::RunAndWriteFile(const Target* target) { |
ScopedTrace trace(TraceItem::TRACE_FILE_WRITE, |
target->label().GetUserVisibleName(false)); |
- trace.SetToolchain(settings->toolchain()->label()); |
+ trace.SetToolchain(settings->toolchain_label()); |
base::FilePath ninja_file(settings->build_settings()->GetFullPath( |
helper.GetNinjaFileForTarget(target).GetSourceFile( |
@@ -54,6 +57,10 @@ void NinjaTargetWriter::RunAndWriteFile(const Target* target) { |
if (g_scheduler->verbose_logging()) |
g_scheduler->Log("Writing", FilePathToUTF8(ninja_file)); |
+ const Toolchain* tc = settings->build_settings()->toolchain_manager() |
+ .GetToolchainDefinitionUnlocked(settings->toolchain_label()); |
+ CHECK(tc); |
+ |
file_util::CreateDirectory(ninja_file.DirName()); |
// It's rediculously faster to write to a string and then write that to |
@@ -62,19 +69,19 @@ void NinjaTargetWriter::RunAndWriteFile(const Target* target) { |
// Call out to the correct sub-type of writer. |
if (target->output_type() == Target::COPY_FILES) { |
- NinjaCopyTargetWriter writer(target, file); |
+ NinjaCopyTargetWriter writer(target, tc, file); |
writer.Run(); |
} else if (target->output_type() == Target::CUSTOM) { |
- NinjaScriptTargetWriter writer(target, file); |
+ NinjaScriptTargetWriter writer(target, tc, file); |
writer.Run(); |
} else if (target->output_type() == Target::GROUP) { |
- NinjaGroupTargetWriter writer(target, file); |
+ NinjaGroupTargetWriter writer(target, tc, file); |
writer.Run(); |
} else if (target->output_type() == Target::EXECUTABLE || |
target->output_type() == Target::STATIC_LIBRARY || |
target->output_type() == Target::SHARED_LIBRARY || |
target->output_type() == Target::SOURCE_SET) { |
- NinjaBinaryTargetWriter writer(target, file); |
+ NinjaBinaryTargetWriter writer(target, tc, file); |
writer.Run(); |
} else { |
CHECK(0); |
@@ -85,10 +92,6 @@ void NinjaTargetWriter::RunAndWriteFile(const Target* target) { |
static_cast<int>(contents.size())); |
} |
-const Toolchain* NinjaTargetWriter::GetToolchain() const { |
- return target_->settings()->toolchain(); |
-} |
- |
std::string NinjaTargetWriter::GetSourcesImplicitDeps() const { |
std::ostringstream ret; |
ret << " |"; |