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();