diff --git a/src/gn/ninja_create_bundle_target_writer.cc b/src/gn/ninja_create_bundle_target_writer.cc
index efa950e..2eacee4 100644
--- a/src/gn/ninja_create_bundle_target_writer.cc
+++ b/src/gn/ninja_create_bundle_target_writer.cc
@@ -7,6 +7,7 @@
 #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"
@@ -36,15 +37,23 @@
               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,
+      GeneralTool::kGeneralToolStamp,  // To create empty partial Info.plist.
   };
 
-  for (size_t i = 0; i < std::size(kRequiredTools); ++i) {
-    if (!target->toolchain()->GetTool(kRequiredTools[i])) {
-      FailWithMissingToolError(kRequiredTools[i], target);
+  for (const char* tool : kRequiredTools) {
+    if (!EnsureToolAvailable(target, tool)) {
       return false;
     }
   }
@@ -52,10 +61,8 @@
   // The compile_xcassets tool is only required if the target has asset
   // catalog resources to compile.
   if (TargetRequireAssetCatalogCompilation(target)) {
-    if (!target->toolchain()->GetTool(
-            GeneralTool::kGeneralToolCompileXCAssets)) {
-      FailWithMissingToolError(GeneralTool::kGeneralToolCompileXCAssets,
-                               target);
+    if (!EnsureToolAvailable(target,
+                             GeneralTool::kGeneralToolCompileXCAssets)) {
       return false;
     }
   }
@@ -102,7 +109,8 @@
       OutputFile(settings_->build_settings(),
                  target_->bundle_data().GetBundleRootDirOutput(settings_)));
 
-  out_ << ": phony " << target_->dependency_output_file().value();
+  out_ << ": " << BuiltinTool::kBuiltinToolPhony << " "
+       << target_->dependency_output_file().value();
   out_ << std::endl;
 }
 
@@ -291,8 +299,7 @@
 
   out_ << "build ";
   WriteOutput(xcassets_input_stamp_file);
-  out_ << ": " << GetNinjaRulePrefixForToolchain(settings_)
-       << GeneralTool::kGeneralToolStamp;
+  out_ << ": " << BuiltinTool::kBuiltinToolPhony;
 
   for (const Target* target : dependencies) {
     out_ << " ";
@@ -357,8 +364,7 @@
 
   out_ << "build ";
   WriteOutput(code_signing_input_stamp_file);
-  out_ << ": " << GetNinjaRulePrefixForToolchain(settings_)
-       << GeneralTool::kGeneralToolStamp;
+  out_ << ": " << BuiltinTool::kBuiltinToolPhony;
 
   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 997c058..a5fecca 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);
+  EXPECT_EQ(expected, out_str) << expected << "----\n" << 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: stamp "
+      "build obj/baz/bar.xcassets.inputdeps.stamp: phony "
       "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);
+  EXPECT_EQ(expected, out_str) << expected << "----\n" << 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: stamp "
+      "build obj/baz/bar.codesigning.inputdeps.stamp: phony "
       "../../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);
+  EXPECT_EQ(expected, out_str) << expected << "----\n" << out_str;
 }
