@@ -34,21 +34,21 @@ internal static IIl2CppPlatformProvider PlatformProviderForNotModularPlatform(Bu
3434
3535 internal static IL2CPPBuilder RunIl2Cpp ( string tempFolder , string stagingAreaData , IIl2CppPlatformProvider platformProvider , Action < string > modifyOutputBeforeCompile , RuntimeClassRegistry runtimeClassRegistry , bool debugBuild )
3636 {
37- var builder = new IL2CPPBuilder ( tempFolder , stagingAreaData , platformProvider , modifyOutputBeforeCompile , runtimeClassRegistry , debugBuild ) ;
37+ var builder = new IL2CPPBuilder ( tempFolder , stagingAreaData , platformProvider , modifyOutputBeforeCompile , runtimeClassRegistry , debugBuild , IL2CPPUtils . UseIl2CppCodegenWithMonoBackend ( BuildPipeline . GetBuildTargetGroup ( platformProvider . target ) ) ) ;
3838 builder . Run ( ) ;
3939 return builder ;
4040 }
4141
4242 internal static IL2CPPBuilder RunIl2Cpp ( string stagingAreaData , IIl2CppPlatformProvider platformProvider , Action < string > modifyOutputBeforeCompile , RuntimeClassRegistry runtimeClassRegistry , bool debugBuild )
4343 {
44- var builder = new IL2CPPBuilder ( stagingAreaData , stagingAreaData , platformProvider , modifyOutputBeforeCompile , runtimeClassRegistry , debugBuild ) ;
44+ var builder = new IL2CPPBuilder ( stagingAreaData , stagingAreaData , platformProvider , modifyOutputBeforeCompile , runtimeClassRegistry , debugBuild , IL2CPPUtils . UseIl2CppCodegenWithMonoBackend ( BuildPipeline . GetBuildTargetGroup ( platformProvider . target ) ) ) ;
4545 builder . Run ( ) ;
4646 return builder ;
4747 }
4848
4949 internal static IL2CPPBuilder RunCompileAndLink ( string tempFolder , string stagingAreaData , IIl2CppPlatformProvider platformProvider , Action < string > modifyOutputBeforeCompile , RuntimeClassRegistry runtimeClassRegistry , bool debugBuild )
5050 {
51- var builder = new IL2CPPBuilder ( tempFolder , stagingAreaData , platformProvider , modifyOutputBeforeCompile , runtimeClassRegistry , debugBuild ) ;
51+ var builder = new IL2CPPBuilder ( tempFolder , stagingAreaData , platformProvider , modifyOutputBeforeCompile , runtimeClassRegistry , debugBuild , IL2CPPUtils . UseIl2CppCodegenWithMonoBackend ( BuildPipeline . GetBuildTargetGroup ( platformProvider . target ) ) ) ;
5252 builder . RunCompileAndLink ( ) ;
5353 return builder ;
5454 }
@@ -110,6 +110,13 @@ internal static string ApiCompatibilityLevelToDotNetProfileArgument(ApiCompatibi
110110 throw new NotSupportedException ( string . Format ( "ApiCompatibilityLevel.{0} is not supported by IL2CPP!" , compatibilityLevel ) ) ;
111111 }
112112 }
113+
114+ internal static bool UseIl2CppCodegenWithMonoBackend ( BuildTargetGroup targetGroup )
115+ {
116+ return EditorApplication . scriptingRuntimeVersion == ScriptingRuntimeVersion . Latest &&
117+ EditorApplication . useLibmonoBackendForIl2cpp &&
118+ PlayerSettings . GetScriptingBackend ( targetGroup ) == ScriptingImplementation . IL2CPP ;
119+ }
113120 }
114121
115122 internal class IL2CPPBuilder
@@ -121,15 +128,17 @@ internal class IL2CPPBuilder
121128 private readonly RuntimeClassRegistry m_RuntimeClassRegistry ;
122129 private readonly bool m_DebugBuild ;
123130 private readonly LinkXmlReader m_linkXmlReader = new LinkXmlReader ( ) ;
131+ private readonly bool m_BuildForMonoRuntime ;
124132
125- public IL2CPPBuilder ( string tempFolder , string stagingAreaData , IIl2CppPlatformProvider platformProvider , Action < string > modifyOutputBeforeCompile , RuntimeClassRegistry runtimeClassRegistry , bool debugBuild )
133+ public IL2CPPBuilder ( string tempFolder , string stagingAreaData , IIl2CppPlatformProvider platformProvider , Action < string > modifyOutputBeforeCompile , RuntimeClassRegistry runtimeClassRegistry , bool debugBuild , bool buildForMonoRuntime )
126134 {
127135 m_TempFolder = tempFolder ;
128136 m_StagingAreaData = stagingAreaData ;
129137 m_PlatformProvider = platformProvider ;
130138 m_ModifyOutputBeforeCompile = modifyOutputBeforeCompile ;
131139 m_RuntimeClassRegistry = runtimeClassRegistry ;
132140 m_DebugBuild = debugBuild ;
141+ m_BuildForMonoRuntime = buildForMonoRuntime ;
133142 }
134143
135144 public void Run ( )
@@ -265,6 +274,9 @@ private void ConvertPlayerDlltoCpp(ICollection<string> userAssemblies, string ou
265274 if ( m_PlatformProvider . developmentMode )
266275 arguments . Add ( "--development-mode" ) ;
267276
277+ if ( m_BuildForMonoRuntime )
278+ arguments . Add ( "--mono-runtime" ) ;
279+
268280 var buildTargetGroup = BuildPipeline . GetBuildTargetGroup ( m_PlatformProvider . target ) ;
269281 if ( PlayerSettings . GetApiCompatibilityLevel ( buildTargetGroup ) == ApiCompatibilityLevel . NET_4_6 )
270282 arguments . Add ( "--dotnetprofile=\" net45\" " ) ;
0 commit comments