diff --git a/tools/sharpie/Makefile b/tools/sharpie/Makefile
index 56e53de56372..869c16063ee0 100644
--- a/tools/sharpie/Makefile
+++ b/tools/sharpie/Makefile
@@ -20,10 +20,15 @@ SHARPIE_BIND_TOOL_NUGET_VERSION=$(if $(filter 0,$(XCODE_BUMP_COMMIT_DISTANCE)),$
SHARPIE_BIND_TOOL_NUPKG_NAME=Sharpie.Bind.Tool.$(SHARPIE_BIND_TOOL_NUGET_VERSION).nupkg
SHARPIE_BIND_TOOL_NUPKG=Sharpie.Bind.Tool/bin/Release/$(SHARPIE_BIND_TOOL_NUPKG_NAME)
+SHARPIE_BIND_TOOL_X64_SHIM=Sharpie.Bind.Tool.Unsupported/bin/Release/osx-x64/publish/Sharpie.Bind.Tool
+
pack: $(SHARPIE_BIND_TOOL_NUPKG)
-$(SHARPIE_BIND_TOOL_NUPKG): $(Sharpie.Bind_dependencies)
+$(SHARPIE_BIND_TOOL_NUPKG): $(Sharpie.Bind_dependencies) $(SHARPIE_BIND_TOOL_X64_SHIM)
$(Q_BUILD) $(DOTNET) pack Sharpie.Bind.Tool/Sharpie.Bind.Tool.csproj "/p:Version=$(SHARPIE_VERSION)" "/p:CurrentBranch=$(CURRENT_BRANCH)" "/p:CurrentHash=$(CURRENT_HASH_LONG)" $(DOTNET_PACK_VERBOSITY) -bl:$@.binlog
+$(SHARPIE_BIND_TOOL_X64_SHIM):
+ $(Q_BUILD) $(DOTNET) publish Sharpie.Bind.Tool.Unsupported/Sharpie.Bind.Tool.Unsupported.csproj -c Release $(DOTNET_BUILD_VERBOSITY) -bl:$@.binlog
+
all-local:: $(DOTNET_NUPKG_DIR)/$(SHARPIE_BIND_TOOL_NUPKG_NAME)
$(DOTNET_NUPKG_DIR)/$(SHARPIE_BIND_TOOL_NUPKG_NAME): $(SHARPIE_BIND_TOOL_NUPKG)
$(Q) mkdir -p $(dir $@)
diff --git a/tools/sharpie/Sharpie.Bind.Tool.Unsupported/Program.cs b/tools/sharpie/Sharpie.Bind.Tool.Unsupported/Program.cs
new file mode 100644
index 000000000000..1e99ec5bbb0f
--- /dev/null
+++ b/tools/sharpie/Sharpie.Bind.Tool.Unsupported/Program.cs
@@ -0,0 +1,13 @@
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT License.
+
+class Program {
+ static int Main (string [] args)
+ {
+ Console.Error.WriteLine ("error: sharpie is not supported on x64. Please use an Apple Silicon (arm64) Mac.");
+ Console.Error.WriteLine ();
+ Console.Error.WriteLine ("sharpie requires Apple's libclang, which is only available for arm64.");
+ Console.Error.WriteLine ("If you're running on an Intel Mac, consider using a Mac with Apple Silicon (M1 or later).");
+ return 1;
+ }
+}
diff --git a/tools/sharpie/Sharpie.Bind.Tool.Unsupported/Sharpie.Bind.Tool.Unsupported.csproj b/tools/sharpie/Sharpie.Bind.Tool.Unsupported/Sharpie.Bind.Tool.Unsupported.csproj
new file mode 100644
index 000000000000..86690605eb66
--- /dev/null
+++ b/tools/sharpie/Sharpie.Bind.Tool.Unsupported/Sharpie.Bind.Tool.Unsupported.csproj
@@ -0,0 +1,14 @@
+
+
+
+ net$(BundledNETCoreAppTargetFrameworkVersion)
+ latest
+ enable
+ Exe
+ osx-x64
+ true
+ false
+ Sharpie.Bind.Tool
+
+
+
diff --git a/tools/sharpie/Sharpie.Bind.Tool/DotnetToolSettings.osx-x64.xml b/tools/sharpie/Sharpie.Bind.Tool/DotnetToolSettings.osx-x64.xml
new file mode 100644
index 000000000000..55a0553bced7
--- /dev/null
+++ b/tools/sharpie/Sharpie.Bind.Tool/DotnetToolSettings.osx-x64.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/tools/sharpie/Sharpie.Bind.Tool/Sharpie.Bind.Tool.csproj b/tools/sharpie/Sharpie.Bind.Tool/Sharpie.Bind.Tool.csproj
index c58024873200..711da04f3993 100644
--- a/tools/sharpie/Sharpie.Bind.Tool/Sharpie.Bind.Tool.csproj
+++ b/tools/sharpie/Sharpie.Bind.Tool/Sharpie.Bind.Tool.csproj
@@ -9,7 +9,8 @@
false
-
+
+
osx-arm64
true
sharpie
@@ -50,4 +51,20 @@
+
+
+
+ <_X64ShimPublishDir>$([MSBuild]::NormalizePath('$(MSBuildThisFileDirectory)', '..', 'Sharpie.Bind.Tool.Unsupported', 'bin', 'Release', 'osx-x64', 'publish'))
+
+
+
+
+
+ tools/any/osx-x64/
+
+
+ tools/any/osx-x64/DotnetToolSettings.xml
+
+
+