Index: tools/gn/ninja_build_writer.cc |
diff --git a/tools/gn/ninja_build_writer.cc b/tools/gn/ninja_build_writer.cc |
index 50638fbb7876819438dea2b6dbe659779da72731..395732e1571db363390c2294bfab04673bdcff09 100644 |
--- a/tools/gn/ninja_build_writer.cc |
+++ b/tools/gn/ninja_build_writer.cc |
@@ -194,12 +194,16 @@ void NinjaBuildWriter::WriteNinjaRules() { |
dep_out_ << "build.ninja:"; |
std::vector<base::FilePath> input_files; |
g_scheduler->input_file_manager()->GetAllPhysicalInputFileNames(&input_files); |
- for (const auto& input_file : input_files) |
- dep_out_ << " " << FilePathToUTF8(input_file); |
// Other files read by the build. |
std::vector<base::FilePath> other_files = g_scheduler->GetGenDependencies(); |
- for (const auto& other_file : other_files) |
+ |
+ // Sort the input files to order them deterministically. |
+ // Additionally, remove duplicate filepaths that seem to creep in. |
+ std::set<base::FilePath> fileset(input_files.begin(), input_files.end()); |
+ fileset.insert(other_files.begin(), other_files.end()); |
+ |
+ for (const auto& other_file : fileset) |
dep_out_ << " " << FilePathToUTF8(other_file); |
out_ << std::endl; |