195 AbsolutePath sourceFolder,
196 IEnumerable<RuntimeLibraryPath> runtimeLibraryPaths,
197 Func<AbsolutePath, RuntimeDependencyConfig>? determineConfig =
null,
198 Func<AbsolutePath, UnrealPlatform>? determinePlatform =
null,
199 string? moduleName =
null,
200 AbsolutePath? pluginFolder =
null,
201 ExportManifest? customManifest =
null,
202 string manifestFilePattern =
"RuntimeDeps.y*ml",
203 string binariesSubfolder =
"ThirdParty",
204 AbsolutePath? moduleRuleOutput =
null,
205 bool setFilterPlugin =
true,
208 pluginFolder ??= sourceFolder.GetOwningPlugin()!.Parent;
209 determineConfig ??= p => RuntimeDependencyConfig.All;
211 moduleName ??= sourceFolder.Name;
212 moduleRuleOutput ??= sourceFolder;
216 Preparing runtime dependencies:
221 Result .build.cs: {4}
223 pluginFolder.Name, pluginFolder,
224 moduleName, sourceFolder,
228 var dstFolder = pluginFolder /
"Binaries" / binariesSubfolder;
229 var options =
new ImportOptions(
233 customManifest ==
null
234 ?
self.ImportFolder((sourceFolder, dstFolder, manifestFilePattern), options)
235 :
self.ImportFolder((sourceFolder, dstFolder, customManifest, manifestFilePattern), options)
236 ).WithFilesExpanded().ToList();
245 Log.Debug(
"Generating FilterPlugin.ini for {0}", thisPlugin.Name);
246 thisPlugin.GenerateFilterPluginIni(
self);
252 var binaryPlumbingTemporary = pluginFolder
260 Log.Debug(
"For marketplace compatibility these binaries will be linked within the Source folder as well.");
261 Log.Debug(
"Plugin distribution will ship these binaries in the Source folder, not in Binaries folder for Fab compatibility.");
262 Log.Information(
"Binary-plumbing folder: {0}", binaryPlumbingTemporary);
263 self.ImportFolder((dstFolder / sourceFolder.Name, binaryPlumbingTemporary),
new(UseSubfolder:
false));
268 p => d.From.Extension.EqualsOrdinalIgnoreCase(
"." + p.DllExtension)
271 Log.Debug(
"DLL's handled: {0}", dllDeps.Select(d => d.To.Name));
275 ModuleName = moduleName,
278 Value = pluginFolder.GetRelativePathTo(d.To).ToUnixRelativePath(),
279 Origin = pluginFolder.GetRelativePathTo(d.From).ToUnixRelativePath(),
280 Config = determineConfig(d.From),
281 Platform = determinePlatform(d.From)
287 Config = determineConfig(d.From),
288 Platform = determinePlatform(d.From)
293 Value = $
"Binaries/{binariesSubfolder}/{p.Path.ToUnixRelativePath()}",
295 Platform = p.Platform