123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- //using HybridCLR.Editor;
- //using HybridCLR.Editor.Commands;
- //using HybridCLR.Editor.Installer;
- //using XGame.Editor.Framework.Compiler;
- //using Kailash.Framework.Definition;
- //using System;
- //using System.IO;
- //using System.Runtime.InteropServices;
- //using UnityEditor;
- //namespace XGame.Editor.Build
- //{
- // [BuildCommand((uint)BuildCommandPriority.BuildHybridclr)]
- // class CmdBuildHybridclr : BaseBuildCommand, ICommandExecuterAsync
- // {
- // public void Execute()
- // {
- // BuildErrorCode code = BuildErrorCode.CmdCompleted;
- // if (Context.config.scriptImpl != ScriptingImplementation.IL2CPP)
- // {
- // SettingsUtil.Enable = false;
- // this.Completed(code);
- // return;
- // }
- // try
- // {
- // BuildTarget target = EditorUserBuildSettings.activeBuildTarget;
- // DeleteKailashDir();
- // DeleteAOTRoot(target);
- // PrebuildCommand.GenerateAll();
- // CompilerHotfixDlls();
- // MergeAOTAssemblies(target);
- // DeleteTempProj(target);
- // }
- // catch (Exception e)
- // {
- // BuildLog.Error($"CmdBuildHybridclr failed. \nError: {e.Message}\nStackTrace: {e.StackTrace}");
- // code = BuildErrorCode.BuildHybridclrError;
- // }
- // finally
- // {
- // this.Completed(code);
- // }
- // }
- // void DeleteKailashDir()
- // {
- // string dir = FileDefine.KailashDirectory.StreamingPath;
- // if (Directory.Exists(dir))
- // Directory.Delete(dir, true);
- // Directory.CreateDirectory(dir);
- // }
- // void DeleteAOTRoot(BuildTarget target)
- // {
- // var root = Path.Combine(SettingsUtil.ProjectDir, SettingsUtil.GetAssembliesPostIl2CppStripDir(target));
- // if (Directory.Exists(root))
- // Directory.Delete(root, true);
- // Directory.CreateDirectory(root);
- // }
- // void CompilerHotfixDlls()
- // {
- // switch (Context.config.publishType)
- // {
- // case PublishType.Debug:
- // CompilerEntrance.CompileDebug();
- // break;
- // case PublishType.Release:
- // case PublishType.Profiler:
- // CompilerEntrance.CompileRelease();
- // break;
- // default:
- // break;
- // }
- // }
- // unsafe void MergeAOTAssemblies(BuildTarget target)
- // {
- // const int INT32_SIZE = 4;
- // var root = Path.Combine(SettingsUtil.ProjectDir, SettingsUtil.GetAssembliesPostIl2CppStripDir(target));
- // var files = Directory.GetFiles(root, "*.dll");
- // var totalSize = 0;
- // totalSize += INT32_SIZE;
- // foreach (var file in files)
- // {
- // totalSize += INT32_SIZE;
- // totalSize += (int)(new FileInfo(file).Length);
- // }
- // var count = files.Length;
- // var metadata = new byte[totalSize];
- // fixed (byte* ptr = metadata)
- // {
- // var pointer = ptr;
- // // write total count;
- // *(int*)pointer = count;
- // pointer += INT32_SIZE;
- // // write any file
- // foreach (var file in files)
- // {
- // var bytes = File.ReadAllBytes(file);
- // var length = bytes.Length;
- // *(int*)pointer = length;
- // pointer += INT32_SIZE;
- // Marshal.Copy(bytes, 0, new IntPtr(pointer), length);
- // pointer += length;
- // }
- // // write kailash.metadata file
- // File.WriteAllBytes(FileDefine.MetadataForAOTAssemblies.StreamingPath, metadata);
- // }
- // }
- // void DeleteTempProj(BuildTarget target)
- // {
- // string tempProject = $"{SettingsUtil.HybridCLRDataDir}/StrippedAOTDllsTempProj/{target}";
- // if (Directory.Exists(tempProject))
- // Directory.Delete(tempProject, true);
- // }
- // }
- //}
|