Remove duplicated -Ldependency arguments to rustc.
For more complex projects, these arguments can be repeated dozens
of times.
Change-Id: I511b09c7fb06fe3c199fa01fd3e3fff6ba86a635
Reviewed-on: https://gn-review.googlesource.com/c/gn/+/8160
Reviewed-by: Petr Hosek <phosek@google.com>
Commit-Queue: Petr Hosek <phosek@google.com>
diff --git a/src/gn/ninja_rust_binary_target_writer.cc b/src/gn/ninja_rust_binary_target_writer.cc
index 5ca0750..c8f8e43 100644
--- a/src/gn/ninja_rust_binary_target_writer.cc
+++ b/src/gn/ninja_rust_binary_target_writer.cc
@@ -249,12 +249,15 @@
out_ << " rustdeps =";
// Rust dependencies.
+ UniqueVector<SourceDir> transitive_rustdep_dirs;
for (const auto& rustdep : transitive_rustdeps) {
// TODO switch to using --extern priv: after stabilization
+ transitive_rustdep_dirs.push_back(
+ rustdep.AsSourceFile(settings_->build_settings()).GetDir());
+ }
+ for (const auto& rustdepdir : transitive_rustdep_dirs) {
out_ << " -Ldependency=";
- path_output_.WriteDir(
- out_, rustdep.AsSourceFile(settings_->build_settings()).GetDir(),
- PathOutput::DIR_NO_LAST_SLASH);
+ path_output_.WriteDir(out_, rustdepdir, PathOutput::DIR_NO_LAST_SLASH);
}
EscapeOptions lib_escape_opts;
diff --git a/src/gn/ninja_rust_binary_target_writer_unittest.cc b/src/gn/ninja_rust_binary_target_writer_unittest.cc
index b9c2215..4d7d114 100644
--- a/src/gn/ninja_rust_binary_target_writer_unittest.cc
+++ b/src/gn/ninja_rust_binary_target_writer_unittest.cc
@@ -307,7 +307,7 @@
"build ./foo_bar: rust_bin ../../foo/main.rs | "
"../../foo/source.rs ../../foo/main.rs obj/bar/libmylib.rlib\n"
" externs = --extern mylib=obj/bar/libmylib.rlib\n"
- " rustdeps = -Ldependency=obj/bar -Ldependency=obj/bar\n";
+ " rustdeps = -Ldependency=obj/bar\n";
std::string out_str = out.str();
EXPECT_EQ(expected, out_str) << expected << "\n" << out_str;
}