private static void CrossCompileAOT(BuildTarget target, string crossCompilerAbsolutePath, string assembliesAbsoluteDirectory, CrossCompileOptions crossCompileOptions, string input, string output, string additionalOptions)
{
string str = "";
if (!IsDebugableAssembly(input))
{
crossCompileOptions &= ~CrossCompileOptions.Debugging;
crossCompileOptions &= ~CrossCompileOptions.LoadSymbols;
}
bool flag = (crossCompileOptions & CrossCompileOptions.Debugging) != CrossCompileOptions.Dynamic;
bool flag2 = (crossCompileOptions & CrossCompileOptions.LoadSymbols) != CrossCompileOptions.Dynamic;
bool flag3 = flag || flag2;
if (flag3)
{
str = str + "--debug ";
}
if (flag)
{
str = str + "--optimize=-linears ";
}
str = str + "--aot=full,asmonly,";
if (flag3)
{
str = str + "write-symbols,";
}
if ((crossCompileOptions & CrossCompileOptions.Debugging) != CrossCompileOptions.Dynamic)
{
str = str + "soft-debug,";
}
else if (!flag3)
{
str = str + "nodebug,";
}
if (target != BuildTarget.iOS)
{
str = str + "print-skipped,";
}
if ((additionalOptions != null) & (additionalOptions.Trim().Length > 0))
{
str = str + additionalOptions.Trim() + ",";
}
string fileName = Path.GetFileName(output);
string resultingFile = Path.Combine(assembliesAbsoluteDirectory, fileName);
if ((crossCompileOptions & CrossCompileOptions.FastICall) != CrossCompileOptions.Dynamic)
{
str = str + "ficall,";
}
if ((crossCompileOptions & CrossCompileOptions.Static) != CrossCompileOptions.Dynamic)
{
str = str + "static,";
}
string str4 = str;
string[] textArray1 = new string[] { str4, "outfile=\"", fileName, "\" \"", input, "\" " };
str = string.Concat(textArray1);
Process process = new Process {
StartInfo = {
FileName = crossCompilerAbsolutePath,
Arguments = str
}
};
process.StartInfo.EnvironmentVariables["MONO_PATH"] = assembliesAbsoluteDirectory;
process.StartInfo.EnvironmentVariables["GAC_PATH"] = assembliesAbsoluteDirectory;
process.StartInfo.EnvironmentVariables["GC_DONT_GC"] = "yes please";
if ((crossCompileOptions & CrossCompileOptions.ExplicitNullChecks) != CrossCompileOptions.Dynamic)
{
process.StartInfo.EnvironmentVariables["MONO_DEBUG"] = "explicit-null-checks";
}
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.RedirectStandardOutput = true;
if (ArtifactsPath != null)
{
if (!Directory.Exists(ArtifactsPath))
{
Directory.CreateDirectory(ArtifactsPath);
}
File.AppendAllText(ArtifactsPath + "output.txt", process.StartInfo.FileName + "\n");
File.AppendAllText(ArtifactsPath + "output.txt", process.StartInfo.Arguments + "\n");
File.AppendAllText(ArtifactsPath + "output.txt", assembliesAbsoluteDirectory + "\n");
File.AppendAllText(ArtifactsPath + "output.txt", resultingFile + "\n");
File.AppendAllText(ArtifactsPath + "output.txt", input + "\n");
File.AppendAllText(ArtifactsPath + "houtput.txt", fileName + "\n\n");
File.Copy(assembliesAbsoluteDirectory + @"\" + input, ArtifactsPath + @"\" + input, true);
}
process.StartInfo.WorkingDirectory = assembliesAbsoluteDirectory;
MonoProcessUtility.RunMonoProcess(process, "AOT cross compiler", resultingFile);
File.Move(resultingFile, output);
if ((crossCompileOptions & CrossCompileOptions.Static) == CrossCompileOptions.Dynamic)
{
string path = Path.Combine(assembliesAbsoluteDirectory, fileName + ".def");
if (File.Exists(path))
{
File.Move(path, output + ".def");
}
}
}