diff --git a/src/gn/ninja_binary_target_writer.cc b/src/gn/ninja_binary_target_writer.cc
index b47c2e4..7dc6ea8 100644
--- a/src/gn/ninja_binary_target_writer.cc
+++ b/src/gn/ninja_binary_target_writer.cc
@@ -206,12 +206,8 @@
   // Swift files may generate one object file per module or one per source file
   // depending on how the compiler is invoked (whole module optimization).
   if (source_set->source_types_used().SwiftSourceUsed()) {
-    const Tool* tool = source_set->toolchain()->GetToolForSourceTypeAsC(
-        SourceFile::SOURCE_SWIFT);
-
     std::vector<OutputFile> outputs;
-    SubstitutionWriter::ApplyListToLinkerAsOutputFile(
-        source_set, tool, tool->outputs(), &outputs);
+    source_set->swift_values().GetOutputs(source_set, &outputs);
 
     for (const OutputFile& output : outputs) {
       SourceFile output_as_source =
diff --git a/src/gn/ninja_c_binary_target_writer.cc b/src/gn/ninja_c_binary_target_writer.cc
index 9b656bf..5e2be80 100644
--- a/src/gn/ninja_c_binary_target_writer.cc
+++ b/src/gn/ninja_c_binary_target_writer.cc
@@ -195,12 +195,15 @@
   //  - GCC .gch files are not object files, therefore they are not added to the
   //    object file list.
   std::vector<OutputFile> obj_files;
+  std::vector<OutputFile> extra_files;
   std::vector<SourceFile> other_files;
+  std::vector<OutputFile>* stamp_files = &obj_files;  // default
   if (!target_->source_types_used().SwiftSourceUsed()) {
     WriteSources(*pch_files, input_deps, order_only_deps, module_dep_info,
                  &obj_files, &other_files);
   } else {
-    WriteSwiftSources(input_deps, order_only_deps, &obj_files);
+    stamp_files = &extra_files;  // Swift generates more than object files
+    WriteSwiftSources(input_deps, order_only_deps, &obj_files, &extra_files);
   }
 
   // Link all MSVC pch object files. The vector will be empty on GCC toolchains.
@@ -209,7 +212,7 @@
     return;
 
   if (target_->output_type() == Target::SOURCE_SET) {
-    WriteSourceSetStamp(obj_files);
+    WriteSourceSetStamp(*stamp_files);
 #ifndef NDEBUG
     // Verify that the function that separately computes a source set's object
     // files match the object files just computed.
@@ -503,14 +506,13 @@
 void NinjaCBinaryTargetWriter::WriteSwiftSources(
     const std::vector<OutputFile>& input_deps,
     const std::vector<OutputFile>& order_only_deps,
-    std::vector<OutputFile>* object_files) {
+    std::vector<OutputFile>* object_files,
+    std::vector<OutputFile>* output_files) {
   DCHECK(target_->builds_swift_module());
-
-  std::vector<OutputFile> outputs;
-  target_->swift_values().GetOutputs(target_, &outputs);
+  target_->swift_values().GetOutputs(target_, output_files);
 
   const BuildSettings* build_settings = settings_->build_settings();
-  for (const OutputFile& output : outputs) {
+  for (const OutputFile& output : *output_files) {
     const SourceFile output_as_source = output.AsSourceFile(build_settings);
     if (output_as_source.IsObjectType()) {
       object_files->push_back(output);
@@ -528,7 +530,8 @@
 
   const Tool* tool = target_->swift_values().GetTool(target_);
   WriteCompilerBuildLine(target_->sources(), input_deps,
-                         swift_order_only_deps.vector(), tool->name(), outputs,
+                         swift_order_only_deps.vector(), tool->name(),
+                         *output_files,
                          /*can_write_source_info=*/false,
                          /*restat_output_allowed=*/true);
 
diff --git a/src/gn/ninja_c_binary_target_writer.h b/src/gn/ninja_c_binary_target_writer.h
index 17615cc..a50d8c9 100644
--- a/src/gn/ninja_c_binary_target_writer.h
+++ b/src/gn/ninja_c_binary_target_writer.h
@@ -82,7 +82,8 @@
                     std::vector<SourceFile>* other_files);
   void WriteSwiftSources(const std::vector<OutputFile>& input_deps,
                          const std::vector<OutputFile>& order_only_deps,
-                         std::vector<OutputFile>* object_files);
+                         std::vector<OutputFile>* object_files,
+                         std::vector<OutputFile>* output_files);
 
   // Writes the stamp line for a source set. These are not linked.
   void WriteSourceSetStamp(const std::vector<OutputFile>& object_files);
diff --git a/src/gn/ninja_c_binary_target_writer_unittest.cc b/src/gn/ninja_c_binary_target_writer_unittest.cc
index 3815ab4..9fb8ff3 100644
--- a/src/gn/ninja_c_binary_target_writer_unittest.cc
+++ b/src/gn/ninja_c_binary_target_writer_unittest.cc
@@ -2336,6 +2336,7 @@
         "  restat = 1\n"
         "\n"
         "build obj/foo/foo.stamp: stamp"
+        " gen/foo/foo.h obj/foo/Foo.swiftmodule"
         " obj/foo/file1.o obj/foo/file2.o\n";
 
     const std::string out_str = out.str();
@@ -2372,7 +2373,8 @@
         "../../bar/bar.swift || obj/foo/foo.stamp\n"
         "  restat = 1\n"
         "\n"
-        "build obj/bar/bar.stamp: stamp obj/bar/bar.o "
+        "build obj/bar/bar.stamp: stamp"
+        " gen/bar/bar.h obj/bar/Bar.swiftmodule obj/bar/bar.o "
         "|| obj/foo/foo.stamp\n";
 
     const std::string out_str = out.str();
@@ -2417,7 +2419,8 @@
         "../../bar/bar.swift || obj/bar/group.stamp obj/foo/foo.stamp\n"
         "  restat = 1\n"
         "\n"
-        "build obj/bar/bar.stamp: stamp obj/bar/bar.o "
+        "build obj/bar/bar.stamp: stamp"
+        " gen/bar/bar.h obj/bar/Bar.swiftmodule obj/bar/bar.o "
         "|| obj/bar/group.stamp obj/foo/foo.stamp\n";
 
     const std::string out_str = out.str();
