using System;
using UnrealBuildTool;
public partial class TpModule : ModuleRules
{
void HandleRuntimeLibraryPath(string path)
{
PublicRuntimeLibraryPaths.Add($"{PluginDirectory}/{path}");
PublicDefinitions.Add($"TPMODULE_DLL_PATH=TEXT(\"{path}\")");
}
void HandleRuntimeDependency(string from, string to) =>
RuntimeDependencies.Add(
$"{PluginDirectory}/{from}", $"{PluginDirectory}/{to}",
StagedFileType.SystemNonUFS
);
partial void SetupRuntimeDependencies(ReadOnlyTargetRules target)
{
var Win64 = target.Platform == UnrealTargetPlatform.Win64;
var Mac = target.Platform == UnrealTargetPlatform.Mac;
var Linux = target.Platform == UnrealTargetPlatform.Linux;
var LinuxArm64 = target.Platform == UnrealTargetPlatform.LinuxArm64;
var Android = target.Platform == UnrealTargetPlatform.Android;
var IOS = target.Platform == UnrealTargetPlatform.IOS;
var TVOS = target.Platform == UnrealTargetPlatform.TVOS;
var VisionOS = target.Platform == UnrealTargetPlatform.VisionOS;
var Independent = true;
var Debug = Target.Configuration <= UnrealTargetConfiguration.DebugGame;
var Release = !Debug;
var All = true;
if (Release && Win64) HandleRuntimeLibraryPath("Binaries/ThirdParty/TpModule/Win64/Release");
if (Debug && Win64) HandleRuntimeLibraryPath("Binaries/ThirdParty/TpModule/Win64/Debug");
if (Release && Linux) HandleRuntimeLibraryPath("Binaries/ThirdParty/TpModule/Linux/Release");
if (Debug && Linux) HandleRuntimeLibraryPath("Binaries/ThirdParty/TpModule/Linux/Debug");
if (Release && Win64) HandleRuntimeDependency("Source/ThirdParty/TpModule/LibraryFiles/lib/win_amd64/rel/foo.dll", "Binaries/ThirdParty/TpModule/Win64/Release/foo.dll");
if (Release && Win64) HandleRuntimeDependency("Source/ThirdParty/TpModule/LibraryFiles/lib/win_amd64/rel/bar.dll", "Binaries/ThirdParty/TpModule/Win64/Release/bar.dll");
if (Release && Win64) HandleRuntimeDependency("Source/ThirdParty/TpModule/LibraryFiles/lib/win_amd64/rel/etc.dll", "Binaries/ThirdParty/TpModule/Win64/Release/etc.dll");
if (Debug && Win64) HandleRuntimeDependency("Source/ThirdParty/TpModule/LibraryFiles/lib/win_amd64/debug/foo.dll", "Binaries/ThirdParty/TpModule/Win64/Debug/foo.dll");
if (Debug && Win64) HandleRuntimeDependency("Source/ThirdParty/TpModule/LibraryFiles/lib/win_amd64/debug/bar.dll", "Binaries/ThirdParty/TpModule/Win64/Debug/bar.dll");
if (Debug && Win64) HandleRuntimeDependency("Source/ThirdParty/TpModule/LibraryFiles/lib/win_amd64/debug/etc.dll", "Binaries/ThirdParty/TpModule/Win64/Debug/etc.dll");
if (Release && Linux) HandleRuntimeDependency("Source/ThirdParty/TpModule/LibraryFiles/lib/linux_x86_64/rel/foo.so", "Binaries/ThirdParty/TpModule/Linux/Release/foo.so");
if (Release && Linux) HandleRuntimeDependency("Source/ThirdParty/TpModule/LibraryFiles/lib/linux_x86_64/rel/bar.so", "Binaries/ThirdParty/TpModule/Linux/Release/bar.so");
if (Release && Linux) HandleRuntimeDependency("Source/ThirdParty/TpModule/LibraryFiles/lib/linux_x86_64/rel/etc.so", "Binaries/ThirdParty/TpModule/Linux/Release/etc.so");
if (Debug && Linux) HandleRuntimeDependency("Source/ThirdParty/TpModule/LibraryFiles/lib/linux_x86_64/debug/foo.so", "Binaries/ThirdParty/TpModule/Linux/Debug/foo.so");
if (Debug && Linux) HandleRuntimeDependency("Source/ThirdParty/TpModule/LibraryFiles/lib/linux_x86_64/debug/bar.so", "Binaries/ThirdParty/TpModule/Linux/Debug/bar.so");
if (Debug && Linux) HandleRuntimeDependency("Source/ThirdParty/TpModule/LibraryFiles/lib/linux_x86_64/debug/etc.so", "Binaries/ThirdParty/TpModule/Linux/Debug/etc.so");
if (Release && Win64) PublicDelayLoadDLLs.Add("foo.dll");
if (Release && Win64) PublicDelayLoadDLLs.Add("bar.dll");
if (Release && Win64) PublicDelayLoadDLLs.Add("etc.dll");
if (Debug && Win64) PublicDelayLoadDLLs.Add("foo.dll");
if (Debug && Win64) PublicDelayLoadDLLs.Add("bar.dll");
if (Debug && Win64) PublicDelayLoadDLLs.Add("etc.dll");
if (Release && Linux) PublicDelayLoadDLLs.Add("foo.so");
if (Release && Linux) PublicDelayLoadDLLs.Add("bar.so");
if (Release && Linux) PublicDelayLoadDLLs.Add("etc.so");
if (Debug && Linux) PublicDelayLoadDLLs.Add("foo.so");
if (Debug && Linux) PublicDelayLoadDLLs.Add("bar.so");
if (Debug && Linux) PublicDelayLoadDLLs.Add("etc.so");
var dllList = string.Join(',', PublicDelayLoadDLLs.Select(d => $"TEXT(\"{d}\")"));
PublicDefinitions.Add($"TPMODULE_DLL_FILES={dllList}");
}
}