public void Run() { var outputDirectory = GetCppOutputDirectoryInStagingArea(); var managedDir = Path.GetFullPath(Path.Combine(m_StagingAreaData, "Managed")); // Make all assemblies in Staging/Managed writable for stripping. foreach (var file in Directory.GetFiles(managedDir)) { var fileInfo = new FileInfo(file); fileInfo.IsReadOnly = false; } var buildTargetGroup = BuildPipeline.GetBuildTargetGroup(m_PlatformProvider.target); var managedStrippingLevel = PlayerSettings.GetManagedStrippingLevel(buildTargetGroup); // IL2CPP does not support a managed stripping level of disabled. If the player settings // do try this (which should not be possible from the editor), use Low instead. if (managedStrippingLevel == ManagedStrippingLevel.Disabled) { managedStrippingLevel = ManagedStrippingLevel.Low; } AssemblyStripper.StripAssemblies(managedDir, m_PlatformProvider.CreateUnityLinkerPlatformProvider(), m_PlatformProvider, m_RuntimeClassRegistry, managedStrippingLevel); // The IL2CPP editor integration here is responsible to give il2cpp.exe an empty directory to use. FileUtil.CreateOrCleanDirectory(outputDirectory); if (m_ModifyOutputBeforeCompile != null) { m_ModifyOutputBeforeCompile(outputDirectory); } var pipelineData = new Il2CppBuildPipelineData(m_PlatformProvider.target, managedDir); ConvertPlayerDlltoCpp(pipelineData, outputDirectory, managedDir, m_PlatformProvider.supportsManagedDebugging); var compiler = m_PlatformProvider.CreateNativeCompiler(); if (compiler != null && m_PlatformProvider.CreateIl2CppNativeCodeBuilder() == null) { var nativeLibPath = OutputFileRelativePath(); var includePaths = new List <string>(m_PlatformProvider.includePaths); includePaths.Add(outputDirectory); m_PlatformProvider.CreateNativeCompiler().CompileDynamicLibrary( nativeLibPath, NativeCompiler.AllSourceFilesIn(outputDirectory), includePaths, m_PlatformProvider.libraryPaths, new string[0]); } }
public void Run() { var outputDirectory = GetCppOutputDirectoryInStagingArea(); var managedDir = Path.GetFullPath(Path.Combine(m_StagingAreaData, "Managed")); // Make all assemblies in Staging/Managed writable for stripping. foreach (var file in Directory.GetFiles(managedDir)) { var fileInfo = new FileInfo(file); fileInfo.IsReadOnly = false; } AssemblyStripper.StripAssemblies(managedDir, m_PlatformProvider, m_RuntimeClassRegistry); // The IL2CPP editor integration here is responsible to give il2cpp.exe an empty directory to use. FileUtil.CreateOrCleanDirectory(outputDirectory); if (m_ModifyOutputBeforeCompile != null) { m_ModifyOutputBeforeCompile(outputDirectory); } ConvertPlayerDlltoCpp(GetUserAssembliesToConvert(managedDir), outputDirectory, managedDir, m_PlatformProvider.supportsManagedDebugging); var compiler = m_PlatformProvider.CreateNativeCompiler(); if (compiler != null && m_PlatformProvider.CreateIl2CppNativeCodeBuilder() == null) { var nativeLibPath = OutputFileRelativePath(); var includePaths = new List <string>(m_PlatformProvider.includePaths); includePaths.Add(outputDirectory); m_PlatformProvider.CreateNativeCompiler().CompileDynamicLibrary( nativeLibPath, NativeCompiler.AllSourceFilesIn(outputDirectory), includePaths, m_PlatformProvider.libraryPaths, new string[0]); } }