WebView.Build.cs 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. // Copyright aXiuShen. All Rights Reserved.
  2. using UnrealBuildTool;
  3. using System;
  4. using System.IO;
  5. using System.Collections.Generic;
  6. using System.Security.Cryptography;
  7. using System.IO.Compression;
  8. using System.Text;
  9. // Tools.DotNETCommon ;
  10. // EpicGames.Core ;
  11. using EpicGames.Core;
  12. namespace UnrealBuildTool.Rules
  13. {
  14. public class WebView : ModuleRules
  15. {
  16. public struct PluginLoad {
  17. public PluginLoad(bool _Bridge, bool _WebBrowser, bool _WebView)
  18. {
  19. Bridge = _Bridge;
  20. WebBrowser = _WebBrowser;
  21. WebView = _WebView;
  22. }
  23. public bool Bridge ;
  24. public bool WebBrowser ;
  25. public bool WebView ;
  26. }
  27. public WebView(ReadOnlyTargetRules Target) : base(Target)
  28. {
  29. bool isUsingJson = false;
  30. string RootPath = ModuleDirectory;
  31. string subfix = ".template";
  32. foreach (string filePath in Directory.EnumerateFiles(RootPath, "*"+subfix, SearchOption.AllDirectories))
  33. {
  34. string FileName = Path.GetFileName(filePath);
  35. string pathDst = filePath.Replace(FileName, FileName.Replace(subfix, ""));
  36. string srcContent;
  37. srcContent = File.ReadAllText(filePath);
  38. if (isUsingJson) {// create new file
  39. srcContent = srcContent.Replace("//@TEMPLATE","");
  40. }
  41. if (!File.Exists(pathDst)) {// don't exists will write
  42. //FileStream stream=File.Open(pathDst, FileMode.Truncate);
  43. File.WriteAllText(pathDst, srcContent);
  44. continue;
  45. }
  46. // check content is eq
  47. string dstContent = File.ReadAllText(pathDst);
  48. if (srcContent.GetHashCode() == dstContent.GetHashCode()) {
  49. continue;
  50. }
  51. File.WriteAllText(pathDst, srcContent);
  52. }
  53. PublicDependencyModuleNames.AddRange(
  54. new string[]{
  55. "Slate",
  56. "SlateCore",
  57. "Core",
  58. "CoreUObject",
  59. "UMG",
  60. "Projects",
  61. "Engine",
  62. "ApplicationCore",
  63. "RHI",
  64. "RenderCore",
  65. "InputCore",
  66. "Serialization",
  67. "MediaUtils",
  68. "OpenSSL",
  69. "ImageWrapper"
  70. }
  71. );
  72. if (project_bridge_status())
  73. {
  74. PublicDefinitions.Add("USING_WEBBROWSER=1"); //
  75. PrivateDependencyModuleNames.Add("WebBrowser");
  76. Console.WriteLine("project_no_load_webview ...... ");
  77. }
  78. else if (!((Target.Platform == UnrealTargetPlatform.Linux ||
  79. Target.Platform == UnrealTargetPlatform.Win64)))
  80. {
  81. PublicDefinitions.Add("USING_WEBBROWSER=1"); //
  82. PrivateDependencyModuleNames.Add("WebBrowser");
  83. Console.WriteLine("UnrealTargetPlatform USING_WEBBROWSER ...... ");
  84. }
  85. else
  86. {//
  87. Console.WriteLine("WEBVIEW_CUSTOMIZED_CORE ");
  88. if (Target.Type != TargetType.Server && Target.Platform == UnrealTargetPlatform.Win64)
  89. {
  90. AddEngineThirdPartyPrivateStaticDependencies(Target, "DX12");
  91. PrivateIncludePathModuleNames.Add("SlateRHIRenderer");
  92. DynamicallyLoadedModuleNames.Add("SlateRHIRenderer");
  93. PublicSystemLibraries.AddRange(
  94. new string[] { "comsuppw.lib", "dxgi.lib", "d3d11.lib", "d3d12.lib" });
  95. PublicDependencyModuleNames.AddRange(
  96. new string[] { "DX11", "DX12", "D3D11RHI", "D3D12RHI" });
  97. }
  98. PublicDependencyModuleNames.Add("cefForUe");
  99. PublicDependencyModuleNames.Add("CefBase");
  100. PublicDependencyModuleNames.Add("CefBrowser");
  101. }
  102. if (Target.bBuildEditor == true)
  103. {
  104. PrivateIncludePathModuleNames.Add("UnrealEd");
  105. PrivateDependencyModuleNames.Add("UnrealEd");
  106. }
  107. }
  108. bool project_bridge_status()
  109. {
  110. ProjectDescriptor project_desc = ProjectDescriptor.FromFile(Target.ProjectFile);
  111. foreach (PluginReferenceDescriptor plugin in project_desc.Plugins)
  112. {
  113. if (plugin.Name == "Bridge")
  114. {
  115. return plugin.bEnabled;
  116. }
  117. }
  118. return bridge_defualt_status("Bridge");
  119. }
  120. bool bridge_defualt_status(string plugin_name)
  121. {//
  122. string PluginPath = Path.Combine(EngineDirectory,"Plugins");
  123. foreach (string FileName in Directory.EnumerateFiles(PluginPath, plugin_name + ".uplugin", SearchOption.TopDirectoryOnly))
  124. {
  125. FileReference pluginFile = new FileReference(FileName);
  126. PluginInfo Plugin = new PluginInfo(pluginFile, PluginType.Engine);
  127. if (!Plugin.Descriptor.bEnabledByDefault.HasValue) continue;
  128. if (Plugin.Descriptor.bEnabledByDefault == true) {
  129. return true;
  130. }
  131. }
  132. return false;
  133. }
  134. bool isDependPlugin(string plugin)
  135. {
  136. bool hasDep = false;
  137. FileReference pluginFile = new FileReference(Path.Combine(PluginDirectory, "WebView.uplugin"));
  138. PluginInfo Plugin = new PluginInfo(pluginFile, PluginType.Project);
  139. foreach (PluginReferenceDescriptor desc in Plugin.Descriptor.Plugins) {
  140. if (desc.Name != plugin) continue;
  141. hasDep = desc.bEnabled;
  142. break;
  143. }
  144. return hasDep;
  145. }
  146. }
  147. }