diff --git a/src/gn/ninja_create_bundle_target_writer.cc b/src/gn/ninja_create_bundle_target_writer.cc
index 2eacee4..efa950e 100644
--- a/src/gn/ninja_create_bundle_target_writer.cc
+++ b/src/gn/ninja_create_bundle_target_writer.cc
@@ -7,7 +7,6 @@
 #include <iterator>
 
 #include "base/strings/string_util.h"
-#include "gn/builtin_tool.h"
 #include "gn/filesystem_utils.h"
 #include "gn/general_tool.h"
 #include "gn/ninja_utils.h"
@@ -37,23 +36,15 @@
               tool_name + "\" tool."));
 }
 
-bool EnsureToolAvailable(const Target* target, const char* tool) {
-  if (!target->toolchain()->GetTool(tool)) {
-    FailWithMissingToolError(tool, target);
-    return false;
-  }
-
-  return true;
-}
-
 bool EnsureAllToolsAvailable(const Target* target) {
   const char* kRequiredTools[] = {
       GeneralTool::kGeneralToolCopyBundleData,
-      GeneralTool::kGeneralToolStamp,  // To create empty partial Info.plist.
+      GeneralTool::kGeneralToolStamp,
   };
 
-  for (const char* tool : kRequiredTools) {
-    if (!EnsureToolAvailable(target, tool)) {
+  for (size_t i = 0; i < std::size(kRequiredTools); ++i) {
+    if (!target->toolchain()->GetTool(kRequiredTools[i])) {
+      FailWithMissingToolError(kRequiredTools[i], target);
       return false;
     }
   }
@@ -61,8 +52,10 @@
   // The compile_xcassets tool is only required if the target has asset
   // catalog resources to compile.
   if (TargetRequireAssetCatalogCompilation(target)) {
-    if (!EnsureToolAvailable(target,
-                             GeneralTool::kGeneralToolCompileXCAssets)) {
+    if (!target->toolchain()->GetTool(
+            GeneralTool::kGeneralToolCompileXCAssets)) {
+      FailWithMissingToolError(GeneralTool::kGeneralToolCompileXCAssets,
+                               target);
       return false;
     }
   }
@@ -109,8 +102,7 @@
       OutputFile(settings_->build_settings(),
                  target_->bundle_data().GetBundleRootDirOutput(settings_)));
 
-  out_ << ": " << BuiltinTool::kBuiltinToolPhony << " "
-       << target_->dependency_output_file().value();
+  out_ << ": phony " << target_->dependency_output_file().value();
   out_ << std::endl;
 }
 
@@ -299,7 +291,8 @@
 
   out_ << "build ";
   WriteOutput(xcassets_input_stamp_file);
-  out_ << ": " << BuiltinTool::kBuiltinToolPhony;
+  out_ << ": " << GetNinjaRulePrefixForToolchain(settings_)
+       << GeneralTool::kGeneralToolStamp;
 
   for (const Target* target : dependencies) {
     out_ << " ";
@@ -364,7 +357,8 @@
 
   out_ << "build ";
   WriteOutput(code_signing_input_stamp_file);
-  out_ << ": " << BuiltinTool::kBuiltinToolPhony;
+  out_ << ": " << GetNinjaRulePrefixForToolchain(settings_)
+       << GeneralTool::kGeneralToolStamp;
 
   for (const SourceFile& source : code_signing_input_files) {
     out_ << " ";
diff --git a/src/gn/ninja_create_bundle_target_writer_unittest.cc b/src/gn/ninja_create_bundle_target_writer_unittest.cc
index a5fecca..997c058 100644
--- a/src/gn/ninja_create_bundle_target_writer_unittest.cc
+++ b/src/gn/ninja_create_bundle_target_writer_unittest.cc
@@ -170,7 +170,7 @@
       "baz/bar/bar_partial_info.plist || obj/foo/bar.stamp\n"
       "build bar.bundle: phony obj/baz/bar.stamp\n";
   std::string out_str = out.str();
-  EXPECT_EQ(expected, out_str) << expected << "----\n" << out_str;
+  EXPECT_EQ(expected, out_str);
 }
 
 // Tests multiple files from asset catalog.
@@ -393,7 +393,7 @@
       "../../foo/input1.txt || obj/baz/bar.inputdeps.stamp\n"
       "build bar.bundle/Contents/Resources/input2.txt: copy_bundle_data "
       "../../foo/input2.txt || obj/baz/bar.inputdeps.stamp\n"
-      "build obj/baz/bar.xcassets.inputdeps.stamp: phony "
+      "build obj/baz/bar.xcassets.inputdeps.stamp: stamp "
       "obj/foo/assets.stamp "
       "obj/quz/assets.stamp obj/biz/assets.stamp\n"
       "build bar.bundle/Contents/Resources/Assets.car | "
@@ -411,7 +411,7 @@
       "baz/bar/bar_partial_info.plist || obj/baz/bar.inputdeps.stamp\n"
       "build bar.bundle: phony obj/baz/bar.stamp\n";
   std::string out_str = out.str();
-  EXPECT_EQ(expected, out_str) << expected << "----\n" << out_str;
+  EXPECT_EQ(expected, out_str);
 }
 
 // Tests code signing steps.
@@ -477,7 +477,7 @@
       "../../foo/input1.txt || obj/baz/bar.inputdeps.stamp\n"
       "build bar.bundle/Contents/Resources/input2.txt: copy_bundle_data "
       "../../foo/input2.txt || obj/baz/bar.inputdeps.stamp\n"
-      "build obj/baz/bar.codesigning.inputdeps.stamp: phony "
+      "build obj/baz/bar.codesigning.inputdeps.stamp: stamp "
       "../../build/codesign.py "
       "quz "
       "bar.bundle/Contents/Resources/input1.txt "
@@ -491,5 +491,5 @@
       "bar.bundle/_CodeSignature/CodeResources || obj/baz/bar.inputdeps.stamp\n"
       "build bar.bundle: phony obj/baz/bar.stamp\n";
   std::string out_str = out.str();
-  EXPECT_EQ(expected, out_str) << expected << "----\n" << out_str;
+  EXPECT_EQ(expected, out_str);
 }
