Revert "Fix: Ensure only actual object files are included in link inputs" This reverts commit c45cf3a6dbcc97b74fd27f837af6fd89160fac77. Reason for revert: This may break windows build. https://ci.chromium.org/ui/p/chromium/builders/try/win-rel/1459583/overview Original change's description: > Fix: Ensure only actual object files are included in link inputs > > c_additional_outputs feature introduced additional outputs (e.g., .dwo > files) that inadvertently became part of the link inputs. This was > unintended, as typically only true object files should serve as link > inputs. > > Bug: 502431091 > Change-Id: Ie51f40f4cc222b15b7ef93a4b67634a977e71d6b > Reviewed-on: https://gn-review.googlesource.com/c/gn/+/22080 > Reviewed-by: Andrew Grieve <agrieve@google.com> > Commit-Queue: Takuto Ikuta <tikuta@google.com> Bug: 502431091 Change-Id: Ic9434a83cb7617e764fb350b2e42d506fba49084 Reviewed-on: https://gn-review.googlesource.com/c/gn/+/22120 Commit-Queue: Takuto Ikuta <tikuta@google.com> Reviewed-by: Junji Watanabe <jwata@google.com>
diff --git a/src/gn/ninja_binary_target_writer.cc b/src/gn/ninja_binary_target_writer.cc index 7aae0f8..163141b 100644 --- a/src/gn/ninja_binary_target_writer.cc +++ b/src/gn/ninja_binary_target_writer.cc
@@ -319,16 +319,8 @@ // 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)) { - const OutputFile& output = tool_outputs[0]; - SourceFile output_as_source = - output.AsSourceFile(source_set->settings()->build_settings()); - // Only collect actual object files for linking. - if (output_as_source.IsObjectType()) { - obj_files->push_back(output); - } - } + source_set->GetOutputFilesForSource(source, &tool_name, &tool_outputs)) + obj_files->push_back(tool_outputs[0]); } // Swift files may generate one object file per module or one per source file
diff --git a/src/gn/ninja_c_binary_target_writer.cc b/src/gn/ninja_c_binary_target_writer.cc index 4b4fb1a..14f95ed 100644 --- a/src/gn/ninja_c_binary_target_writer.cc +++ b/src/gn/ninja_c_binary_target_writer.cc
@@ -477,21 +477,13 @@ // It's theoretically possible for a compiler to produce more than one // output, but we'll only link to the first output. if (!source.IsModuleMapType()) { - const OutputFile& output = tool_outputs[0]; - SourceFile output_as_source = - output.AsSourceFile(target_->settings()->build_settings()); - // Only include actual object files for linking. - if (output_as_source.IsObjectType()) { - object_files->push_back(output); - } else { - extra_files->push_back(output); - } + object_files->push_back(tool_outputs[0]); } else { extra_files->push_back(tool_outputs[0]); } - // Ensure all additional outputs produced by this source are tracked for - // dependencies (e.g., included in the target's stamp file). + // Add additional outputs to extra_files so they are included in the + // target's stamp file. for (size_t i = 1; i < tool_outputs.size(); ++i) { extra_files->push_back(tool_outputs[i]); }
diff --git a/src/gn/ninja_c_binary_target_writer_unittest.cc b/src/gn/ninja_c_binary_target_writer_unittest.cc index 1f7f12b..beb7409 100644 --- a/src/gn/ninja_c_binary_target_writer_unittest.cc +++ b/src/gn/ninja_c_binary_target_writer_unittest.cc
@@ -191,7 +191,7 @@ ASSERT_TRUE(config.OnResolved(&err)); Target target(setup.settings(), Label(SourceDir("//foo/"), "bar")); - target.set_output_type(Target::EXECUTABLE); + target.set_output_type(Target::SOURCE_SET); target.visibility().SetPublic(); target.sources().push_back(SourceFile("//foo/input1.cc")); target.source_types_used().Set(SourceFile::SOURCE_CPP); @@ -218,13 +218,7 @@ " source_file_part = input1.cc\n" " source_name_part = input1\n" "\n" - "build ./bar: link obj/foo/bar.input1.o\n" - " ldflags =\n" - " libs =\n" - " frameworks =\n" - " swiftmodules =\n" - " output_extension =\n" - " output_dir =\n"; + "build phony/foo/bar: phony obj/foo/bar.input1.o obj/foo/input1.dwo\n"; EXPECT_EQ(expected, out.str()); }