MacOS Unity Build IL2CPP exception

Windows 10 Pro 19042.685
MacOS 10.15.6

Unity LTS 2019.4.15f1
FMOD Integration 2.01.07

[We are developing the project on Windows (tech) and Mac (assets) platforms]

When we bake Build on Windows to ProjectSettings.asset file FMOD add additional CPP arguments with absolute path:

777:  additionalIl2CppArgs: --additional-cpp="c:/xxx/Assets/../Temp/fmod_register_static_plugins.cpp"
778:    --additional-cpp="c:/xxx/Assets/Plugins/FMOD/src/Runtime/fmod_static_plugin_support.h"

This impacts the Mac Build with the exception (on IL2CPP):

Exception: /Applications/Unity/Hub/Editor/2019.4.15f1/Unity.app/Contents/il2cpp/build/deploy/il2cppcore/il2cppcore.dll did not run properly!

Failed running "/Applications/Unity/Hub/Editor/2019.4.15f1/Unity.app/Contents/il2cpp/build/deploy/il2cppcore/il2cppcore.dll" --convert-to-cpp --emit-null-checks --enable-array-bounds-check --dotnetprofile="unityaot" --compile-cpp --libil2cpp-static --platform="MacOSX" --architecture="x64" --configuration="Debug" --outputpath="xxx/Temp/StagingArea/Data/Native/GameAssembly.dylib" --cachedirectory="xxx/Assets/../Library/il2cpp_cache" --profiler-report --map-file-parser="/Applications/Unity/Hub/Editor/2019.4.15f1/Unity.app/Contents/Tools/MapFileParser/MapFileParser" --additional-cpp="xxx/Assets/../Temp/fmod_register_static_plugins.cpp" --additional-cpp="xxx/Assets/Plugins/FMOD/src/Runtime/fmod_static_plugin_support.h"  --directory="xxx/Temp/StagingArea/Data/Managed" --generatedcppdir="xxx/Temp/StagingArea/Data/il2cppOutput"  

stdout:
il2cpp.exe didn't catch exception: System.ArgumentException: Copy() called on path that doesnt exist: xxx/Temp/fmod_register_static_plugins.cpp
   at NiceIO.NPath.CopyWithDeterminedDestination(NPath absoluteDestination, Func`2 fileFilter)
   at il2cpp.Program.DoRun(String[] args, List`1 foundAssemblies)
   at il2cpp.Program.Run(String[] args, Boolean setInvariantCulture)
   at il2cpp.Program.Main(String[] args)
stderr:

Unhandled Exception: System.ArgumentException: Copy() called on path that doesnt exist: xxx/Temp/fmod_register_static_plugins.cpp
   at NiceIO.NPath.CopyWithDeterminedDestination(NPath absoluteDestination, Func`2 fileFilter)
   at il2cpp.Program.DoRun(String[] args, List`1 foundAssemblies)
   at il2cpp.Program.Run(String[] args, Boolean setInvariantCulture)
   at il2cpp.Program.Main(String[] args)
   at Program.Main(String[] args) in /Users/bokken/buildslave/unity/build/External/il2cpp/il2cpp/il2cppcore/Program.cs:line 24

UnityEditorInternal.Runner.RunProgram (UnityEditor.Utils.Program p, System.String exe, System.String args, System.String workingDirectory, UnityEditor.Scripting.Compilers.CompilerOutputParserBase parser) (at /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/BuildUtils.cs:126)
UnityEditorInternal.Runner.RunNetCoreProgram (System.String exe, System.String args, System.String workingDirectory, UnityEditor.Scripting.Compilers.CompilerOutputParserBase parser, System.Action`1[T] setupStartInfo) (at /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/BuildUtils.cs:77)
UnityEditorInternal.IL2CPPBuilder.RunIl2CppWithArguments (System.Collections.Generic.List`1[T] arguments, System.Action`1[T] setupStartInfo, System.String workingDirectory) (at /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:680)
UnityEditorInternal.IL2CPPBuilder.ConvertPlayerDlltoCpp (UnityEditor.Il2Cpp.Il2CppBuildPipelineData data, System.String outputDirectory, System.String workingDirectory, System.Boolean platformSupportsManagedDebugging) (at /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:663)
UnityEditorInternal.IL2CPPBuilder.Run () (at /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:500)
UnityEditorInternal.IL2CPPUtils.RunIl2Cpp (System.String stagingAreaData, UnityEditorInternal.IIl2CppPlatformProvider platformProvider, System.Action`1[T] modifyOutputBeforeCompile, UnityEditor.RuntimeClassRegistry runtimeClassRegistry) (at /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:235)
DesktopStandalonePostProcessor.SetupStagingArea (UnityEditor.Modules.BuildPostProcessArgs args, System.Collections.Generic.HashSet`1[T] filesToNotOverwrite) (at /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/DesktopStandalonePostProcessor.cs:223)
DesktopStandalonePostProcessor.PostProcess (UnityEditor.Modules.BuildPostProcessArgs args) (at /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/DesktopStandalonePostProcessor.cs:42)
Rethrow as BuildFailedException: Exception of type 'UnityEditor.Build.BuildFailedException' was thrown.
DesktopStandalonePostProcessor.PostProcess (UnityEditor.Modules.BuildPostProcessArgs args) (at /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/DesktopStandalonePostProcessor.cs:60)
UnityEditor.OSXStandalone.OSXDesktopStandalonePostProcessor.PostProcess (UnityEditor.Modules.BuildPostProcessArgs args) (at /Users/bokken/buildslave/unity/build/PlatformDependent/OSXPlayer/Extensions/Managed/OSXDesktopStandalonePostProcessor.cs:410)
UnityEditor.Modules.DefaultBuildPostprocessor.PostProcess (UnityEditor.Modules.BuildPostProcessArgs args, UnityEditor.BuildProperties& outProperties) (at /Users/bokken/buildslave/unity/build/Editor/Mono/Modules/DefaultBuildPostprocessor.cs:29)
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) (at /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/PostprocessBuildPlayer.cs:340)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr) (at /Users/bokken/buildslave/unity/build/Modules/IMGUI/GUIUtility.cs:197)

For FIX this situation you need to remove/don’t commit all additional args and have clean 777 line (in ProjectSettings.asset):

777: additionalIl2CppArgs:

I hope this info helps as temporary FIX for developers and future official fix in FMOD patch.

Cheers!

Thanks for letting us know about this. We are planning to include a fix in the next release, which should be available soon.