diff --git a/src/xenia/app/premake5.lua b/src/xenia/app/premake5.lua
index 31aa50d79..3f5133d2d 100644
--- a/src/xenia/app/premake5.lua
+++ b/src/xenia/app/premake5.lua
@@ -15,7 +15,6 @@ project("xenia-app")
     "xenia-base",
     "xenia-core",
     "xenia-cpu",
-    "xenia-cpu-backend-x64",
     "xenia-debug-ui",
     "xenia-gpu",
     "xenia-gpu-null",
@@ -58,6 +57,11 @@ project("xenia-app")
     project_root,
   })
 
+  filter("architecture:x86_64")
+    links({
+      "xenia-cpu-backend-x64",
+    })
+
   filter("platforms:Windows")
     files({
       "main_resources.rc",
diff --git a/src/xenia/cpu/backend/x64/x64_backend.h b/src/xenia/cpu/backend/x64/x64_backend.h
index 4cb69e040..470988806 100644
--- a/src/xenia/cpu/backend/x64/x64_backend.h
+++ b/src/xenia/cpu/backend/x64/x64_backend.h
@@ -27,8 +27,6 @@ namespace x64 {
 
 class X64CodeCache;
 
-#define XENIA_HAS_X64_BACKEND 1
-
 typedef void* (*HostToGuestThunk)(void* target, void* arg0, void* arg1);
 typedef void* (*GuestToHostThunk)(void* target, void* arg0, void* arg1);
 typedef void (*ResolveFunctionThunk)();
diff --git a/src/xenia/cpu/ppc/testing/ppc_testing_main.cc b/src/xenia/cpu/ppc/testing/ppc_testing_main.cc
index a39c41bd1..0d54261c4 100644
--- a/src/xenia/cpu/ppc/testing/ppc_testing_main.cc
+++ b/src/xenia/cpu/ppc/testing/ppc_testing_main.cc
@@ -15,13 +15,16 @@
 #include "xenia/base/math.h"
 #include "xenia/base/platform.h"
 #include "xenia/base/string_buffer.h"
-#include "xenia/cpu/backend/x64/x64_backend.h"
 #include "xenia/cpu/cpu_flags.h"
 #include "xenia/cpu/ppc/ppc_context.h"
 #include "xenia/cpu/ppc/ppc_frontend.h"
 #include "xenia/cpu/processor.h"
 #include "xenia/cpu/raw_module.h"
 
+#if XE_ARCH_AMD64
+#include "xenia/cpu/backend/x64/x64_backend.h"
+#endif  // XE_ARCH
+
 #if XE_COMPILER_MSVC
 #include "xenia/base/platform_win.h"
 #endif  // XE_COMPILER_MSVC
@@ -196,17 +199,17 @@ class TestRunner {
 
     std::unique_ptr<xe::cpu::backend::Backend> backend;
     if (!backend) {
-#if defined(XENIA_HAS_X64_BACKEND) && XENIA_HAS_X64_BACKEND
+#if XE_ARCH_AMD64
       if (cvars::cpu == "x64") {
         backend.reset(new xe::cpu::backend::x64::X64Backend());
       }
-#endif  // XENIA_HAS_X64_BACKEND
+#endif  // XE_ARCH
       if (cvars::cpu == "any") {
-#if defined(XENIA_HAS_X64_BACKEND) && XENIA_HAS_X64_BACKEND
         if (!backend) {
+#if XE_ARCH_AMD64
           backend.reset(new xe::cpu::backend::x64::X64Backend());
+#endif  // XE_ARCH
         }
-#endif  // XENIA_HAS_X64_BACKEND
       }
     }
 
diff --git a/src/xenia/cpu/ppc/testing/premake5.lua b/src/xenia/cpu/ppc/testing/premake5.lua
index d91256460..bca2bb81e 100644
--- a/src/xenia/cpu/ppc/testing/premake5.lua
+++ b/src/xenia/cpu/ppc/testing/premake5.lua
@@ -11,7 +11,6 @@ project("xenia-cpu-ppc-tests")
     "fmt",
     "mspack",
     "xenia-core",
-    "xenia-cpu-backend-x64",
     "xenia-cpu",
     "xenia-base",
   })
@@ -24,6 +23,10 @@ project("xenia-cpu-ppc-tests")
   })
   filter("files:*.s")
     flags({"ExcludeFromBuild"})
+  filter("architecture:x86_64")
+    links({
+      "xenia-cpu-backend-x64",
+    })
   filter("platforms:Windows")
     debugdir(project_root)
     debugargs({
diff --git a/src/xenia/emulator.cc b/src/xenia/emulator.cc
index 0fbf74d18..da9fb18d4 100644
--- a/src/xenia/emulator.cc
+++ b/src/xenia/emulator.cc
@@ -24,9 +24,9 @@
 #include "xenia/base/literals.h"
 #include "xenia/base/logging.h"
 #include "xenia/base/mapped_memory.h"
+#include "xenia/base/platform.h"
 #include "xenia/base/string.h"
 #include "xenia/cpu/backend/code_cache.h"
-#include "xenia/cpu/backend/x64/x64_backend.h"
 #include "xenia/cpu/cpu_flags.h"
 #include "xenia/cpu/thread_state.h"
 #include "xenia/gpu/graphics_system.h"
@@ -50,6 +50,10 @@
 #include "xenia/vfs/devices/stfs_container_device.h"
 #include "xenia/vfs/virtual_file_system.h"
 
+#if XE_ARCH_AMD64
+#include "xenia/cpu/backend/x64/x64_backend.h"
+#endif  // XE_ARCH
+
 DEFINE_double(time_scalar, 1.0,
               "Scalar used to speed or slow time (1x, 2x, 1/2x, etc).",
               "General");
@@ -161,17 +165,17 @@ X_STATUS Emulator::Setup(
 
   std::unique_ptr<xe::cpu::backend::Backend> backend;
   if (!backend) {
-#if defined(XENIA_HAS_X64_BACKEND) && XENIA_HAS_X64_BACKEND
+#if XE_ARCH_AMD64
     if (cvars::cpu == "x64") {
       backend.reset(new xe::cpu::backend::x64::X64Backend());
     }
-#endif  // XENIA_HAS_X64_BACKEND
+#endif  // XE_ARCH
     if (cvars::cpu == "any") {
-#if defined(XENIA_HAS_X64_BACKEND) && XENIA_HAS_X64_BACKEND
       if (!backend) {
+#if XE_ARCH_AMD64
         backend.reset(new xe::cpu::backend::x64::X64Backend());
+#endif  // XE_ARCH
       }
-#endif  // XENIA_HAS_X64_BACKEND
     }
   }
 
diff --git a/src/xenia/gpu/d3d12/premake5.lua b/src/xenia/gpu/d3d12/premake5.lua
index bc6e95653..94c7f5b61 100644
--- a/src/xenia/gpu/d3d12/premake5.lua
+++ b/src/xenia/gpu/d3d12/premake5.lua
@@ -30,7 +30,6 @@ project("xenia-gpu-d3d12-trace-viewer")
     "xenia-base",
     "xenia-core",
     "xenia-cpu",
-    "xenia-cpu-backend-x64",
     "xenia-gpu",
     "xenia-gpu-d3d12",
     "xenia-hid",
@@ -66,6 +65,11 @@ project("xenia-gpu-d3d12-trace-viewer")
     })
   end
 
+  filter("architecture:x86_64")
+    links({
+      "xenia-cpu-backend-x64",
+    })
+
 group("src")
 project("xenia-gpu-d3d12-trace-dump")
   uuid("686b859c-0046-44c4-a02c-41fc3fb75698")
@@ -77,7 +81,6 @@ project("xenia-gpu-d3d12-trace-dump")
     "xenia-base",
     "xenia-core",
     "xenia-cpu",
-    "xenia-cpu-backend-x64",
     "xenia-gpu",
     "xenia-gpu-d3d12",
     "xenia-hid",
@@ -112,3 +115,8 @@ project("xenia-gpu-d3d12-trace-dump")
       "1>scratch/stdout-trace-dump.txt",
     })
   end
+
+  filter("architecture:x86_64")
+    links({
+      "xenia-cpu-backend-x64",
+    })
diff --git a/src/xenia/gpu/vulkan/premake5.lua b/src/xenia/gpu/vulkan/premake5.lua
index f68b886a7..4d8fc4203 100644
--- a/src/xenia/gpu/vulkan/premake5.lua
+++ b/src/xenia/gpu/vulkan/premake5.lua
@@ -34,7 +34,6 @@ project("xenia-gpu-vulkan-trace-viewer")
     "xenia-base",
     "xenia-core",
     "xenia-cpu",
-    "xenia-cpu-backend-x64",
     "xenia-gpu",
     "xenia-gpu-vulkan",
     "xenia-hid",
@@ -64,6 +63,11 @@ project("xenia-gpu-vulkan-trace-viewer")
     "../../ui/windowed_app_main_"..platform_suffix..".cc",
   })
 
+  filter("architecture:x86_64")
+    links({
+      "xenia-cpu-backend-x64",
+    })
+
   filter("platforms:Linux")
     links({
       "X11",
@@ -93,7 +97,6 @@ project("xenia-gpu-vulkan-trace-dump")
     "xenia-base",
     "xenia-core",
     "xenia-cpu",
-    "xenia-cpu-backend-x64",
     "xenia-gpu",
     "xenia-gpu-vulkan",
     "xenia-hid",
@@ -123,6 +126,11 @@ project("xenia-gpu-vulkan-trace-dump")
     "../../base/console_app_main_"..platform_suffix..".cc",
   })
 
+  filter("architecture:x86_64")
+    links({
+      "xenia-cpu-backend-x64",
+    })
+
   filter("platforms:Linux")
     links({
       "X11",