private void RunIl2CppWithArguments(List <string> arguments, Action <ProcessStartInfo> setupStartInfo, string workingDirectory) { var args = arguments.Aggregate(String.Empty, (current, arg) => current + arg + " "); var useNetCore = ShouldUseIl2CppCore(); string il2CppPath = useNetCore ? GetIl2CppCoreExe() : GetIl2CppExe(); Console.WriteLine("Invoking il2cpp with arguments: " + args); CompilerOutputParserBase il2cppOutputParser = m_PlatformProvider.CreateIl2CppOutputParser(); if (il2cppOutputParser == null) { il2cppOutputParser = new Il2CppOutputParser(); } if (useNetCore) { Runner.RunNetCoreProgram(il2CppPath, args, workingDirectory, il2cppOutputParser, setupStartInfo); } else { Runner.RunManagedProgram(il2CppPath, args, workingDirectory, il2cppOutputParser, setupStartInfo); } }
private void RunIl2CppWithArguments(List <string> arguments, Action <ProcessStartInfo> setupStartInfo) { var cppOutputDirectoryInBuildCache = GetCppOutputDirectory(m_PlatformProvider.il2cppBuildCacheDirectory); var cppOutputDirectoryInStagingArea = GetCppOutputDirectory(m_TempFolder); var nativeOutputDirectoryInBuildCache = GetNativeOutputRelativeDirectory(m_PlatformProvider.il2cppBuildCacheDirectory); var nativeOutputDirectoryInStagingArea = GetNativeOutputRelativeDirectory(m_StagingAreaData); var il2cppOutputParser = new Il2CppOutputParser(Path.Combine(cppOutputDirectoryInBuildCache, "Il2CppToEditorData.json")); arguments.Add("--convert-in-graph"); var args = arguments.Aggregate(String.Empty, (current, arg) => current + arg + " "); Console.WriteLine("Invoking il2cpp with arguments: " + args); Runner.RunNetCoreProgram(GetIl2CppExe(), args, m_PlatformProvider.il2cppBuildCacheDirectory, il2cppOutputParser, setupStartInfo); // Copy IL2CPP outputs to StagingArea if (Directory.Exists(nativeOutputDirectoryInBuildCache)) { FileUtil.CopyDirectoryRecursive(nativeOutputDirectoryInBuildCache, nativeOutputDirectoryInStagingArea, true); } // Copy Generated C++ files and Data directory to StagingArea. // This directory will only be present when using "--convert-to-cpp" with IL2CPP. if (Directory.Exists(cppOutputDirectoryInBuildCache)) { FileUtil.CreateOrCleanDirectory(cppOutputDirectoryInStagingArea); FileUtil.CopyDirectoryRecursive(cppOutputDirectoryInBuildCache, cppOutputDirectoryInStagingArea); } }
private static bool RunAssemblyLinker(IEnumerable <string> args, out string @out, out string err, string linkerPath, string workingDirectory) { var argString = args.Aggregate((buff, s) => buff + " " + s); var responseFile = Path.Combine(workingDirectory, "response.rsp"); File.WriteAllText(responseFile, argString); UnityLogWriter.WriteStringToUnityLog($"Invoking UnityLinker with response file. response.rsp contents: {argString}\n"); Runner.RunNetCoreProgram(linkerPath, $"@{CommandLineFormatter.PrepareFileName(responseFile)}", workingDirectory, null, null); @out = ""; err = ""; return(true); }
private void RunIl2CppWithArguments(List <string> arguments, Action <ProcessStartInfo> setupStartInfo, string workingDirectory) { string text = arguments.Aggregate(string.Empty, (string current, string arg) => current + arg + " "); bool flag = this.ShouldUseIl2CppCore(); string exe = (!flag) ? this.GetIl2CppExe() : this.GetIl2CppCoreExe(); Console.WriteLine("Invoking il2cpp with arguments: " + text); CompilerOutputParserBase compilerOutputParserBase = this.m_PlatformProvider.CreateIl2CppOutputParser(); if (compilerOutputParserBase == null) { compilerOutputParserBase = new Il2CppOutputParser(); } if (flag) { Runner.RunNetCoreProgram(exe, text, workingDirectory, compilerOutputParserBase, setupStartInfo); } else { Runner.RunManagedProgram(exe, text, workingDirectory, compilerOutputParserBase, setupStartInfo); } }