From a42eb41898c4c84d04ca519b0dd0aec55398383c Mon Sep 17 00:00:00 2001 From: "Enzo Persillet (Tutez)" Date: Sat, 28 Mar 2026 22:58:05 +0100 Subject: [PATCH 1/3] Expose architecture defines during Project XML parsing --- src/lime/tools/HXProject.hx | 46 +++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/src/lime/tools/HXProject.hx b/src/lime/tools/HXProject.hx index cceb84f646..0c35e22b96 100644 --- a/src/lime/tools/HXProject.hx +++ b/src/lime/tools/HXProject.hx @@ -829,6 +829,7 @@ class HXProject extends Script defines.set(Std.string(target).toLowerCase(), "1"); defines.set("target", Std.string(target).toLowerCase()); defines.set("platform", defines.get("target")); + initializeArchitectureDefines(); switch (System.hostPlatform) { @@ -849,6 +850,51 @@ class HXProject extends Script defines.set("hxp", "1"); // TODO: Version? } + private function initializeArchitectureDefines():Void + { + var architecture:Architecture = null; + + if (targetFlags.exists("arm64")) + { + architecture = ARM64; + } + else if (targetFlags.exists("64") || targetFlags.exists("x86_64")) + { + architecture = X64; + } + else if (targetFlags.exists("32") || targetFlags.exists("x86_32")) + { + architecture = X86; + } + else if (defines.exists("native")) + { + architecture = switch (System.hostArchitecture) + { + case ARM64: ARM64; + case X64: X64; + case X86: X86; + default: null; + } + } + + switch (architecture) + { + case ARM64: + defines.set("64", "1"); + defines.set("arm64", "1"); + defines.set("HXCPP_ARM64", "1"); + case X64: + defines.set("64", "1"); + defines.set("x86_64", "1"); + defines.set("HXCPP_M64", "1"); + case X86: + defines.set("32", "1"); + defines.set("x86_32", "1"); + defines.set("HXCPP_M32", "1"); + default: + } + } + private static function initializeStatics():Void { if (!initialized) From 7bc3273c463cb49ec8aa726edb9dff60b30a5a59 Mon Sep 17 00:00:00 2001 From: "Enzo Persillet (Tutez)" Date: Sat, 8 Aug 2026 08:03:31 +0200 Subject: [PATCH 2/3] Handle non-native targets null architecture --- src/lime/tools/HXProject.hx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/lime/tools/HXProject.hx b/src/lime/tools/HXProject.hx index 0c35e22b96..a015a25a9b 100644 --- a/src/lime/tools/HXProject.hx +++ b/src/lime/tools/HXProject.hx @@ -877,6 +877,13 @@ class HXProject extends Script } } + // Non-native targets leave architecture unset. + // Switching on a null enum throws "Invalid field access : index". + if (architecture == null) + { + return; + } + switch (architecture) { case ARM64: From 1ac50ec5d8777bf21710bb0cf083c36c7932d9b0 Mon Sep 17 00:00:00 2001 From: "Enzo Persillet (Tutez)" Date: Sat, 8 Aug 2026 08:16:40 +0200 Subject: [PATCH 3/3] Expose only target-agnostic architecture defines Limit defines to x86_32, x86_64, arm64, and armv7. --- src/lime/tools/HXProject.hx | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/lime/tools/HXProject.hx b/src/lime/tools/HXProject.hx index a015a25a9b..907998a22e 100644 --- a/src/lime/tools/HXProject.hx +++ b/src/lime/tools/HXProject.hx @@ -866,6 +866,10 @@ class HXProject extends Script { architecture = X86; } + else if (targetFlags.exists("armv7")) + { + architecture = ARMV7; + } else if (defines.exists("native")) { architecture = switch (System.hostArchitecture) @@ -873,6 +877,7 @@ class HXProject extends Script case ARM64: ARM64; case X64: X64; case X86: X86; + case ARMV7: ARMV7; default: null; } } @@ -884,20 +889,17 @@ class HXProject extends Script return; } + // Target-agnostic architecture defines for include.xml conditions. switch (architecture) { case ARM64: - defines.set("64", "1"); defines.set("arm64", "1"); - defines.set("HXCPP_ARM64", "1"); case X64: - defines.set("64", "1"); defines.set("x86_64", "1"); - defines.set("HXCPP_M64", "1"); case X86: - defines.set("32", "1"); defines.set("x86_32", "1"); - defines.set("HXCPP_M32", "1"); + case ARMV7: + defines.set("armv7", "1"); default: } }