ILCPP on Apple Silicon fails with GameAssembly.dylib (No such file or directory)

Trying to build my project created on windows on my M1 Mac Mini with Xcode 12.4, Unity 2020.3.0f1, running on Big Sur 11.2

I’m not sure if this is already a known issue but I could not find anything on it so I’m asking here. When generating the Xcode project and building with automatic signing or building without generating the Xcode project the build fails with

fatal error fatal error: lipo: can’t open input file: /Users/nevercode/Library/Developer/Xcode/DerivedData/Mac-aweffplarrgmgaaekhyoznoerxaf/Build/Intermediates.noindex/Mac.build/Debug/x64/GameAssembly.dylib (No such file or directory)

And when building from Unity without generating the Xcode project it fails with
Exception

Exception: Unity.IL2CPP.Building.BuilderFailedException: /usr/bin/clang -o “/Users/nevercode/Desktop/cyj2021-alt/Library/macOS/x64/il2cpp_cache/linkresult_B3798AAF9DC9C225E881CA013E6BF1D7/GameAssembly.dylib” -shared -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk -Xlinker -arch -Xlinker x86_64 -Xlinker -macosx_version_min -Xlinker 10.12 -Xlinker -lSystem -Xlinker -lc++ -Xlinker -lpthread -Xlinker -dead_strip -Xlinker -liconv -Xlinker -framework -Xlinker Foundation -Xlinker -framework -Xlinker Security -Xlinker -framework -Xlinker CoreFoundation “/Applications/Unity/Hub/Editor/2020.3.0f1/Unity.app/Contents/PlaybackEngines/MacStandaloneSupport/Variations/macos_x64_nondevelopment_il2cpp/baselib.a” “/Users/nevercode/Desktop/cyj2021-alt/Library/macOS/x64/il2cpp_cache/A2326F3F56F05A75752D1F77EC9D78C9.o” “/Users/nevercode/Desktop/cyj2021-alt/Library/macOS/x64/il2cpp_cache/3053CBD791874DFD906BF5FB12E29977.o” “/Users/nevercode/Desktop/cyj2021-alt/Library/macOS/x64/il2cpp_cache/4A7434930A0BC2AFC445C4757A3A38F8.o” “/Users/nevercode/Desktop/cyj2021-alt/Library/macOS/x64/il2cpp_cache/1E81280FE3ADB61EAD889B2F75CD54EF.o” “/Users/nevercode/Desktop/cyj2021-alt/Library/macOS/x64/il2cpp_cache/4E721E84F1CA90DE31A93F6F0F349914.o” “/Users/nevercode/Desktop/cyj2021-alt/Library/macOS/x64/il2cpp_cache/7660EF817C923A3DCE0E628CE192A040.o” “/Users/nevercode/Desktop/cyj2021-alt/Library/macOS/x64/il2cpp_cache/BB089B2132C789A372AC601A8DDBCD82.o” “/Users/nevercode/Desktop/cyj2021-alt/Library/macOS/x64/il2cpp_cache/E0C87CE758793F79390AAA4A7045C4EB.o” “/Users/nevercode/Desktop/cyj2021-alt/Library/macOS/x64/il2cpp_cache/7B3B689B28F22A10437CC43110207754.o” “/Users/nevercode/Desktop/cyj2021-alt/Library/macOS/x64/il2cpp_cache/4B3D90B191224ACFA2ED1FB386D7EA78.o” “/Users/nevercode/Desktop/cyj2021-alt/Library/macOS/x64/il2cpp_cache/F02928EC989C4B2461C1A79B4160D73E.o” “/Users/nevercode/Desktop/cyj2021-alt/Library/macOS/x64/il2cpp_cache/1AE65B93C0CEA27CF70E843DCD27D599.o” “/Users/nevercode/Desktop/cyj2021-alt/Library/macOS/x64/il2cpp_cache/A93618BA276E4ED0AF243BC9A1A94B4C.o” “/Users/nevercode/Desktop/cyj2021-alt/Library/macOS/x64/il2cpp_cache/D3F0630FDBA690992A3508C4D604D2BC.o” “/Users/nevercode/Desktop/cyj2021-alt/Library/macOS/x64/il2cpp_cache/39B5F11B84C4D267583798E576A46BB4.o” “/Users/nevercode/Desktop/cyj2021-alt/Library/macOS/x64/il2cpp_cache/273A5B0F236933CB477A956183DFD44E.o”
…(this goes on)

I thought this was an issue with the arch being only arm64 since I saw some could not find symbols for x86_64 messages so I tried opening up Xcode with Rosetta but that did nothing. I’m fresh out of ideas.

On Mono, I was able to build successfully and am figuring out codesigning

Can you post the full editor log? The error is somewhere inside “this goes on”.

It ends with a message saying the logs were truncated so I didn’t see anything but those repeated .o file references. Is there a log file somewhere with the full logs?

Yeah, see Unity - Manual: Log files

This is what was at the end

Logs

ld: warning: passed two min versions (11.0, 10.12) for platform macOS. Using 10.12.
ld: warning: object file (/Applications/Unity/Hub/Editor/2020.3.0f1/Unity.app/Contents/PlaybackEngines/MacStandaloneSupport/Variations/macos_x64_nondevelopment_il2cpp/baselib.a(External_il2cpp_builds_external_baselib_Source_0.o)) was built for newer macOS version (10.13) than being linked (10.12)
ld: warning: object file (/Applications/Unity/Hub/Editor/2020.3.0f1/Unity.app/Contents/PlaybackEngines/MacStandaloneSupport/Variations/macos_x64_nondevelopment_il2cpp/baselib.a(Baselib_PlatformConfig_OSX.o)) was built for newer macOS version (10.13) than being linked (10.12)
ld: warning: object file (/Applications/Unity/Hub/Editor/2020.3.0f1/Unity.app/Contents/PlaybackEngines/MacStandaloneSupport/Variations/macos_x64_nondevelopment_il2cpp/baselib.a(External_il2cpp_builds_external_baselib_Source_1.o)) was built for newer macOS version (10.13) than being linked (10.12)
Undefined symbols for architecture x86_64:
“_FMOD_Unity_RegisterStaticPlugins”, referenced from:
_Platform_LoadStaticPlugins_m4265C0F1EF38890E6BCD282D906664E9B531E4BB in 273A5B0F236933CB477A956183DFD44E.o
_Platform_FMOD_Unity_RegisterStaticPlugins_m60DD98D44188F595FE6C6D0BE621435FD6A79A45 in 273A5B0F236933CB477A956183DFD44E.o
(maybe you meant: _Platform_FMOD_Unity_RegisterStaticPlugins_m60DD98D44188F595FE6C6D0BE621435FD6A79A45)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

at Unity.IL2CPP.Building.CppProgramBuilder.PostprocessObjectFiles(HashSet1 objectFiles, CppToolChainContext toolChainContext) in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP.Building/CppProgramBuilder.cs:line 363 at Unity.IL2CPP.Building.CppProgramBuilder.Build(IBuildStatistics& statistics) in /Users/bokken/build/output/unity/il2cpp/Unity.IL2CPP.Building/CppProgramBuilder.cs:line 160 at il2cpp.Compilation.CompilationDriver.Run(RuntimePlatform platform, BuildingOptions buildingOptions, ReadOnlyCollection1 matchedAssemblyMethodSourceFiles) in /Users/bokken/build/output/unity/il2cpp/il2cpp/Compilation/CompilationDriver.cs:line 65
at il2cpp.Program.DoRun(String[ ] args, RuntimePlatform platform, BuildingOptions buildingOptions, Boolean throwExceptions) in /Users/bokken/build/output/unity/il2cpp/il2cpp/Program.cs:line 74
at UnityEditorInternal.Runner.RunProgram (UnityEditor.Utils.Program p, System.String exe, System.String args, System.String workingDirectory, UnityEditor.Scripting.Compilers.CompilerOutputParserBase parser) [0x0014f] in /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/BuildUtils.cs:129
at UnityEditorInternal.Runner.RunManagedProgram (System.String exe, System.String args, System.String workingDirectory, UnityEditor.Scripting.Compilers.CompilerOutputParserBase parser, System.Action1[T] setupStartInfo) [0x00060] in /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/BuildUtils.cs:65 at UnityEditorInternal.IL2CPPBuilder.RunIl2CppWithArguments (System.Collections.Generic.List1[T] arguments, System.Action1[T] setupStartInfo, System.String generatedCppOutputDirectory) [0x000c6] in /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:793 at UnityEditorInternal.IL2CPPBuilder.ConvertPlayerDlltoCpp (UnityEditor.Il2Cpp.Il2CppBuildPipelineData data, System.String outputDirectory, System.Boolean platformSupportsManagedDebugging) [0x0039a] in /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:765 at UnityEditorInternal.IL2CPPBuilder.Run () [0x00114] in /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:598 at UnityEditorInternal.IL2CPPUtils.RunIl2Cpp (System.String stagingAreaData, UnityEditorInternal.IIl2CppPlatformProvider platformProvider, System.Action1[T] modifyOutputBeforeCompile, UnityEditor.RuntimeClassRegistry runtimeClassRegistry) [0x0001c] in /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:276
at DesktopStandalonePostProcessor.RunIL2CPP (UnityEditor.Modules.BuildPostProcessArgs args, UnityEditorInternal.IIl2CppPlatformProvider il2cppPlatformProvider, System.Collections.Generic.List1[T] cppPlugins) [0x0001c] in /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/DesktopStandalonePostProcessor.cs:256 at UnityEditor.OSXStandalone.OSXDesktopStandalonePostProcessor.RunIL2CPP (UnityEditor.Modules.BuildPostProcessArgs args, UnityEditorInternal.IIl2CppPlatformProvider il2cppPlatformProvider, System.Collections.Generic.List1[T] cppPlugins) [0x00001] in /Users/bokken/buildslave/unity/build/PlatformDependent/OSXPlayer/Extensions/Managed/OSXDesktopStandalonePostProcessor.cs:602
at DesktopStandalonePostProcessor.SetupStagingArea (UnityEditor.Modules.BuildPostProcessArgs args, System.Collections.Generic.HashSet`1[T] filesToNotOverwrite) [0x000a4] in /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/DesktopStandalonePostProcessor.cs:232
at DesktopStandalonePostProcessor.PostProcess (UnityEditor.Modules.BuildPostProcessArgs args) [0x00015] in /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/DesktopStandalonePostProcessor.cs:42
Rethrow as BuildFailedException: Exception of type ‘UnityEditor.Build.BuildFailedException’ was thrown.
at DesktopStandalonePostProcessor.PostProcess (UnityEditor.Modules.BuildPostProcessArgs args) [0x0006a] in /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/DesktopStandalonePostProcessor.cs:60
at UnityEditor.OSXStandalone.OSXDesktopStandalonePostProcessor.PostProcess (UnityEditor.Modules.BuildPostProcessArgs args) [0x00009] in /Users/bokken/buildslave/unity/build/PlatformDependent/OSXPlayer/Extensions/Managed/OSXDesktopStandalonePostProcessor.cs:649
at UnityEditor.Modules.DefaultBuildPostprocessor.PostProcess (UnityEditor.Modules.BuildPostProcessArgs args, UnityEditor.BuildProperties& outProperties) [0x00001] in /Users/bokken/buildslave/unity/build/Editor/Mono/Modules/DefaultBuildPostprocessor.cs:29
at UnityEditor.PostprocessBuildPlayer.Postprocess (UnityEditor.BuildTargetGroup targetGroup, UnityEditor.BuildTarget target, System.String installPath, System.String companyName, System.String productName, System.Int32 width, System.Int32 height, UnityEditor.BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.Build.Reporting.BuildReport report) [0x000dc] in /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/PostprocessBuildPlayer.cs:337
UnityEditor.BuildPipeline:BuildPlayerInternalNoCheck(String[ ], String, String, BuildTargetGroup, BuildTarget, BuildOptions, String[ ], Boolean)
UnityEditor.DefaultBuildMethods:BuildPlayer(BuildPlayerOptions) (at /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPlayerWindowBuildMethods.cs:170)
UnityEditor.BuildPlayerWindow:CallBuildMethods(Boolean, BuildOptions) (at /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPlayerWindowBuildMethods.cs:95)
UnityEditor.BuildPlayerWindow:GUIBuildButtons(IBuildWindowExtension, Boolean, Boolean, Boolean, BuildPlatform) (at /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPlayerWindow.cs:986)
UnityEditor.BuildPlayerWindow:ShowBuildTargetSettings() (at /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPlayerWindow.cs:864)
UnityEditor.BuildPlayerWindow:OnGUI() (at /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPlayerWindow.cs:366)
UnityEditor.HostView:InvokeOnGUI(Rect, Rect) (at /Users/bokken/buildslave/unity/build/Editor/Mono/HostView.cs:403)
UnityEditor.DockArea:smile:rawView(Rect, Rect) (at /Users/bokken/buildslave/unity/build/Editor/Mono/GUI/DockArea.cs:382)
UnityEditor.DockArea:OldOnGUI() (at /Users/bokken/buildslave/unity/build/Editor/Mono/GUI/DockArea.cs:372)
UnityEngine.UIElements.IMGUIContainer:smile:oOnGUI(Event, Matrix4x4, Rect, Boolean, Rect, Action, Boolean) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/IMGUIContainer.cs:333)
UnityEngine.UIElements.IMGUIContainer:HandleIMGUIEvent(Event, Matrix4x4, Rect, Action, Boolean) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/IMGUIContainer.cs:663)
UnityEngine.UIElements.IMGUIContainer:HandleIMGUIEvent(Event, Action, Boolean) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/IMGUIContainer.cs:635)
UnityEngine.UIElements.IMGUIContainer:HandleIMGUIEvent(Event, Boolean) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/IMGUIContainer.cs:628)
UnityEngine.UIElements.IMGUIContainer:SendEventToIMGUIRaw(EventBase, Boolean, Boolean) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/IMGUIContainer.cs:594)
UnityEngine.UIElements.IMGUIContainer:SendEventToIMGUI(EventBase, Boolean, Boolean) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/IMGUIContainer.cs:583)
UnityEngine.UIElements.IMGUIContainer:HandleEvent(EventBase) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/IMGUIContainer.cs:516)
UnityEngine.UIElements.CallbackEventHandler:HandleEventAtTargetPhase(EventBase) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/Events/EventHandler.cs:125)
UnityEngine.UIElements.MouseCaptureDispatchingStrategy:smile:ispatchEvent(EventBase, IPanel) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/Events/MouseCaptureDispatchingStrategy.cs:83)
UnityEngine.UIElements.EventDispatcher:ApplyDispatchingStrategies(EventBase, IPanel, Boolean) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/EventDispatcher.cs:373)
UnityEngine.UIElements.EventDispatcher:ProcessEvent(EventBase, IPanel) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/EventDispatcher.cs:336)
UnityEngine.UIElements.EventDispatcher:ProcessEventQueue() (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/EventDispatcher.cs:299)
UnityEngine.UIElements.EventDispatcher:OpenGate() (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/EventDispatcher.cs:264)
UnityEngine.UIElements.EventDispatcherGate:smile:ispose() (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/EventDispatcher.cs:75)
UnityEngine.UIElements.EventDispatcher:ProcessEvent(EventBase, IPanel) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/EventDispatcher.cs:364)
UnityEngine.UIElements.EventDispatcher:smile:ispatch(EventBase, IPanel, DispatchMode) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/EventDispatcher.cs:216)
UnityEngine.UIElements.BaseVisualElementPanel:SendEvent(EventBase, DispatchMode) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/Panel.cs:372)
UnityEngine.UIElements.UIElementsUtility:smile:oDispatch(BaseVisualElementPanel) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/UIElementsUtility.cs:461)
UnityEngine.UIElements.UIElementsUtility:UnityEngine.UIElements.IUIElementsUtility.ProcessEvent(Int32, IntPtr, Boolean&) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/UIElementsUtility.cs:209)
UnityEngine.UIElements.UIEventRegistration:ProcessEvent(Int32, IntPtr) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/UIElementsUtility.cs:74)
UnityEngine.UIElements.<>c:<.cctor>b__1_2(Int32, IntPtr) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/UIElementsUtility.cs:28)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&) (at /Users/bokken/buildslave/unity/build/Modules/IMGUI/GUIUtility.cs:189)

(Filename: /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/BuildUtils.cs Line: 129)

Is Platform.FMOD a native plugin you have in your project? Perhaps it doesn’t support Apple silicon?

The root cause of the issue was this. Applied the workaround and was able to build successfully.

Thanks for the help!