From dfc7a60e8116a5e53ee88f658a2e49a1a034e87e Mon Sep 17 00:00:00 2001 From: Shai Almog <67850168+shai-almog@users.noreply.github.com> Date: Fri, 8 May 2026 11:29:47 +0300 Subject: [PATCH] Skip CN1MetalShaders.metal when ios.metal build hint is off The .metal shader file has no #ifdef CN1_USE_METAL guard (Metal Shading Language doesn't wrap the same way the companion .m files do), so it was always copied into the generated Xcode project. Xcode 26 ships the Metal Toolchain as a separately-downloaded component, so build servers without it failed compilation even when the build hint was off. Mirrors the existing MainWindowMETAL.xib / CodenameOne_METALViewController.xib cleanup in the !useMetal branch. Same fix already applied to BuildDaemon. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../src/main/java/com/codename1/builders/IPhoneBuilder.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/maven/codenameone-maven-plugin/src/main/java/com/codename1/builders/IPhoneBuilder.java b/maven/codenameone-maven-plugin/src/main/java/com/codename1/builders/IPhoneBuilder.java index ddb3e90687..bf82d8f330 100644 --- a/maven/codenameone-maven-plugin/src/main/java/com/codename1/builders/IPhoneBuilder.java +++ b/maven/codenameone-maven-plugin/src/main/java/com/codename1/builders/IPhoneBuilder.java @@ -718,6 +718,11 @@ public void usesClassMethod(String cls, String method) { } else { new File(buildinRes, "MainWindowMETAL.xib").delete(); new File(buildinRes, "CodenameOne_METALViewController.xib").delete(); + // The .metal shader file isn't guarded by an #ifdef like the + // companion .m files, so leaving it in the project forces Xcode + // to invoke the Metal toolchain — which Xcode 26 ships as a + // separately-downloaded component that build servers don't have. + new File(buildinRes, "CN1MetalShaders.metal").delete(); }