Remove deps from rust executable to module's pcm files
Currently modules (*.pcm) files are handled as linkable obj files in
`AddSourceSetFiles`, and those are finally added as inputs to -Clink-arg
in rust link step.
But link step doesn't require module files. So this removes dependecy to
such *.pcm files from rust link step.
Bug: 400872290
Change-Id: I580b0157087abf46a63bf054b4bd3a281b819d07
Reviewed-on: https://gn-review.googlesource.com/c/gn/+/18360
Commit-Queue: Takuto Ikuta <tikuta@google.com>
Reviewed-by: David Turner <digit@google.com>
diff --git a/src/gn/ninja_binary_target_writer.cc b/src/gn/ninja_binary_target_writer.cc
index c244c7c..585af9c 100644
--- a/src/gn/ninja_binary_target_writer.cc
+++ b/src/gn/ninja_binary_target_writer.cc
@@ -214,7 +214,10 @@
// the tool if there are more than one.
for (const auto& source : source_set->sources()) {
const char* tool_name = Tool::kToolNone;
- if (source_set->GetOutputFilesForSource(source, &tool_name, &tool_outputs))
+ // Do not add .pcm files as they are not object files linked to final
+ // binaries.
+ if (source.GetType() != SourceFile::SOURCE_MODULEMAP &&
+ source_set->GetOutputFilesForSource(source, &tool_name, &tool_outputs))
obj_files->push_back(tool_outputs[0]);
}
diff --git a/src/gn/ninja_rust_binary_target_writer_unittest.cc b/src/gn/ninja_rust_binary_target_writer_unittest.cc
index 2ef30f8..11b8071 100644
--- a/src/gn/ninja_rust_binary_target_writer_unittest.cc
+++ b/src/gn/ninja_rust_binary_target_writer_unittest.cc
@@ -1904,8 +1904,7 @@
"target_output_name = exe\n"
"\n"
"build ./exe: rust_bin ../../linked/exe.rs | ../../linked/exe.rs "
- "obj/sset/bar.input1.o obj/sset/module.module.pcm "
- "obj/public/libbehind_sourceset_public.rlib "
+ "obj/sset/bar.input1.o obj/public/libbehind_sourceset_public.rlib "
"obj/private/libbehind_sourceset_private.rlib || phony/sset/bar "
"phony/sset/module\n"
" source_file_part = exe.rs\n"
@@ -1914,8 +1913,7 @@
"behind_sourceset_public=obj/public/libbehind_sourceset_public.rlib\n"
" rustdeps = -Ldependency=obj/public -Ldependency=obj/private "
"-Clink-arg=-Bdynamic "
- "-Clink-arg=obj/sset/bar.input1.o "
- "-Clink-arg=obj/sset/module.module.pcm\n"
+ "-Clink-arg=obj/sset/bar.input1.o\n"
" ldflags =\n"
" sources = ../../linked/exe.rs\n";
std::string out_str = out.str();