1
\$\begingroup\$

I am trying to build an AR game for iOS, using a custom build of Unreal Engine 5.1.1, on an Apple Silicon (M1 Max) Macbook Pro.

(I have to use a custom branch of UE5 because there is a problem with using AR and Scene Capture.)

Everything was going fine until I (stupidly) let my iPhone 14 update itself to iOS 17.

Now I cannot build for it anymore, because 17 requires using Xcode 15. But when I build our project in Xcode 15, for packaging in UE, it fails with some low level assembly/machine language instruction.

It works fine with Xcode 14, but I cannot install to my phone for testing. And obviously I cannot downgrade my phone.

Can anyone shed any light here?

\$\endgroup\$

1 Answer 1

1
\$\begingroup\$

I would say that the best path is to rebase your custom build of Unreal Engine to 5.3. I could build Unreal Engine 5.1 for Mac by applying the patches:

--- a/Engine/Source/Programs/UnrealBuildTool/Platform/Mac/ApplePlatformSDK.Versions.cs
+++ b/Engine/Source/Programs/UnrealBuildTool/Platform/Mac/ApplePlatformSDK.Versions.cs
@@ -22,13 +22,13 @@
 namespace UnrealBuildTool
                        if (RuntimePlatform.IsMac)
                        {
                                MinVersion = "13.4.0";
-                               MaxVersion = "14.9.9";
+                               MaxVersion = "15.9.9";
                        }
                        else
                        {
                                // @todo turnkey: these are MobileDevice .dll versions in Windows - to get the iTunes app version (12.3.4.1 etc) would need to hunt down the .exe
                                MinVersion = "1100.0.0.0";
-                               MaxVersion = "1499.0";
+                               MaxVersion = "1599.0";
                        }
                }

and

--- a/Engine/Source/Runtime/Core/Public/Apple/ApplePlatformCompilerPreSetup.h
+++ b/Engine/Source/Runtime/Core/Public/Apple/ApplePlatformCompilerPreSetup.h
@@ -37,6 +37,11 @@
 #else
        #pragma clang diagnostic warning "-Wparentheses-equality"
 #endif
+#if (__clang_major__ >= 15)
+#define unary_function __unary_function
+#pragma clang diagnostic ignored "-Wdeprecated-builtins"
+#pragma clang diagnostic ignored "-Wsingle-bit-bitfield-constant-conversion"
+#endif
 #pragma clang diagnostic ignored "-Winconsistent-missing-override"
 #pragma clang diagnostic ignored "-Wundefined-bool-conversion"
 #pragma clang diagnostic ignored "-Wunused-local-typedef"

and

--- a/Engine/Source/Programs/UnrealBuildTool/Platform/Mac/MacToolChain.cs
+++ b/Engine/Source/Programs/UnrealBuildTool/Platform/Mac/MacToolChain.cs
@@ -294,8 +294,6 @@
 namespace UnrealBuildTool

                        // Needed to make sure install_name_tool will be able to update paths in Mach-O headers
                        Arguments.Add("-headerpad_max_install_names");
-
-                       Arguments.Add("-lc++");
                }

and finally

--- a/Engine/Plugins/Experimental/NNI/Source/ThirdParty/ORT_4_1/Private/core/session/provider_stubs.cc
+++ b/Engine/Plugins/Experimental/NNI/Source/ThirdParty/ORT_4_1/Private/core/session/provider_stubs.cc
@@ -30,7 +30,7 @@ ORT_API_STATUS_IMPL(OrtSessionOptionsAppendExecutionProvider_DML, _In_ OrtSessio
 }
 #endif

-#ifndef USE_MIGRAPHX
+#if 0 // ndef USE_MIGRAPHX
 ORT_API_STATUS_IMPL(OrtSessionOptionsAppendExecutionProvider_MIGraphX,
                     _In_ OrtSessionOptions* options, int device_id) {
   ORT_UNUSED_PARAMETER(options);

This still produces some warnings, not sure if some of them are really critical.

\$\endgroup\$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .