// Fill out your copyright notice in the Description page of Project Settings.
using System.IO;
using System.Collections.Generic;
using UnrealBuildTool;
namespace UnrealBuildTool.Rules
{
#if WITH_FORWARDED_MODULE_RULES_CTOR
using zTargetInfo = ReadOnlyTargetRules;
#else
using zTargetInfo = TargetInfo;
#endif
public class HeXrTransceiverLib : ModuleRules
{
public HeXrTransceiverLib(zTargetInfo Target)
#if WITH_FORWARDED_MODULE_RULES_CTOR
: base(Target)
#endif
{
Type = ModuleType.External;
PublicIncludePaths.AddRange(
new string[] {
// ... add public include paths required here ...
Path.Combine(ModuleDirectory, "include"),
}
);
// Add the import library
//PublicLibraryPaths.Add(Path.Combine(ModuleDirectory, "lib"));
PublicAdditionalLibraries.Add(Path.Combine(ModuleDirectory, "lib", "HeXrTransceiver.lib"));
// Delay-load the DLL, so we can load it from the right place first
PublicDelayLoadDLLs.Add("HeXrTransceiver.dll");
string dll_folder_path = Path.Combine(ModuleDirectory, "dll");
string[] dlls_fullpath = DFS_GetFilesRecursively(dll_folder_path, new string[] { ".dll" });
// Runtime Dependencies for Project Package
foreach(string dll in dlls_fullpath)
{
string target_output_path = "$(TargetOutputDir)/dll".Replace("dll", Path.GetFileName(dll));
RuntimeDependencies.Add(target_output_path, dll); // copy
// PublicDelayLoadDLLs.Add(Path.GetFileName(dll));
RuntimeDependencies.Add(target_output_path, StagedFileType.NonUFS);
}
}
/*
* Root: folder full path
* FileExts: dll,jpg,txt,etc.
* Return full path of files.
*/
public string[] DFS_GetFilesRecursively(string Root, string[] FileExts)
{
List<string> Ret = new List<string>();
DirectoryInfo DI = new DirectoryInfo(Root);
foreach(FileInfo FI in DI.GetFiles())
{
//System.Console.WriteLine("FI.Extension={0} FI.FullName={1}", FI.Extension, FI.FullName);
foreach(string Ext in FileExts)
{
if (Ext.Equals(FI.Extension, System.StringComparison.OrdinalIgnoreCase))
{
Ret.Add(FI.FullName);
break;
}
}
}
foreach(DirectoryInfo SubDI in DI.GetDirectories())
{
Ret.AddRange(DFS_GetFilesRecursively(SubDI.FullName, FileExts));
}
return Ret.ToArray();
}
/**
* Root: folder full path
* FileExts: dll,jpg,txt,etc.
* Return full path of files.
*/
public string[] GetFiles_NoRecur(string Root, string[] FileExts)
{
List<string> Ret = new List<string>();
DirectoryInfo DI = new DirectoryInfo(Root);
foreach (FileInfo FI in DI.GetFiles())
{
//System.Console.WriteLine("FI.Extension={0} FI.FullName={1}", FI.Extension, FI.FullName);
foreach (string Ext in FileExts)
{
if (Ext.Equals(FI.Extension, System.StringComparison.OrdinalIgnoreCase))
{
Ret.Add(FI.FullName);
break;
}
}
}
return Ret.ToArray();
}
}
}