Files
UnrealEngineUWP/Engine/Source/Programs/AutomationTool/AutomationUtils/HostPlatform.cs
jonathan adamczewski 3d5833e02f Add a common C# method for detecting the current host platform to EpicGames.Core, and move many a test to use that code.
#jira none
#rb joe.kirchoff

#ROBOMERGE-SOURCE: CL 16593582 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v828-16531559)

[CL 16593589 by jonathan adamczewski in ue5-release-engine-test branch]
2021-06-08 17:01:47 -04:00

141 lines
3.8 KiB
C#

// Copyright Epic Games, Inc. All Rights Reserved.
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Diagnostics;
using EpicGames.Core;
namespace AutomationTool
{
/// <summary>
/// Host platform abstraction
/// </summary>
public abstract class HostPlatform
{
private static HostPlatform RunningPlatform;
/// <summary>
/// Current running host platform.
/// </summary>
public static HostPlatform Current
{
get
{
if (RunningPlatform == null)
{
throw new AutomationException("UnrealAutomationTool host platform not initialized.");
}
return RunningPlatform;
}
}
/// <summary>
/// Initializes the current platform.
/// </summary>
public static void Initialize()
{
if (RuntimePlatform.IsWindows)
{
RunningPlatform = new WindowsHostPlatform();
}
else if (RuntimePlatform.IsMac)
{
RunningPlatform = new MacHostPlatform();
}
else if (RuntimePlatform.IsLinux)
{
RunningPlatform = new LinuxHostPlatform();
}
else
{
throw new Exception ("Unhandled runtime platform " + Environment.OSVersion.Platform);
}
}
/// <summary>
/// Gets the build executable filename for NET Framework projects e.g. msbuild, or xbuild
/// </summary>
/// <returns></returns>
abstract public string GetFrameworkMsbuildExe();
/// <summary>
/// Gets the path to dotnet
/// </summary>
/// <returns></returns>
abstract public FileReference GetDotnetExe();
/// <summary>
/// Gets the build executable filename for NET Core projects. Typically, the path to the bundled dotnet executable.
/// </summary>
/// <returns></returns>
abstract public string GetDotnetMsbuildExe();
/// <summary>
/// Folder under UE4/ to the platform's binaries.
/// </summary>
abstract public string RelativeBinariesFolder { get; }
/// <summary>
/// Full path to the UE4 Editor executable for the current platform.
/// </summary>
/// <param name="UE4Exe"></param>
/// <returns></returns>
abstract public string GetUE4ExePath(string UE4Exe);
/// <summary>
/// Log folder for local builds.
/// </summary>
abstract public string LocalBuildsLogFolder { get; }
/// <summary>
/// Name of the p4 executable.
/// </summary>
abstract public string P4Exe { get; }
/// <summary>
/// Creates a process and sets it up for the current platform.
/// </summary>
/// <param name="LogName"></param>
/// <returns></returns>
abstract public Process CreateProcess(string AppName);
/// <summary>
/// Sets any additional options for running an executable.
/// </summary>
/// <param name="AppName"></param>
/// <param name="Options"></param>
/// <param name="CommandLine"></param>
abstract public void SetupOptionsForRun(ref string AppName, ref CommandUtils.ERunOptions Options, ref string CommandLine);
/// <summary>
/// Sets the console control handler for the current platform.
/// </summary>
/// <param name="Handler"></param>
abstract public void SetConsoleCtrlHandler(ProcessManager.CtrlHandlerDelegate Handler);
/// <summary>
/// Platform specific override to skip loading/compiling unsupported modules
/// </summary>
/// <param name="ModuleName">Module name</param>
/// <returns>True if module should be compiled or loaded</returns>
abstract public bool IsScriptModuleSupported(string ModuleName);
/// <summary>
/// Returns the type of the host editor platform.
/// </summary>
abstract public UnrealBuildTool.UnrealTargetPlatform HostEditorPlatform { get; }
/// <summary>
/// Returns the pdb file extenstion for the host platform.
/// </summary>
abstract public string PdbExtension { get; }
/// <summary>
/// List of processes that can't not be killed
/// </summary>
abstract public string[] DontKillProcessList { get; }
}
}