// Copyright 1998-2019 Epic Games, Inc. All Rights Reserved. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Tools.DotNETCommon; namespace UnrealBuildTool { /// /// Validates the various platforms to determine if they are ready for building /// [ToolMode("ValidatePlatforms", ToolModeOptions.XmlConfig | ToolModeOptions.BuildPlatformsForValidation | ToolModeOptions.SingleInstance)] class ValidatePlatformsMode : ToolMode { /// /// Platforms to validate /// [CommandLine("-Platforms=", ListSeparator = '+')] HashSet Platforms = new HashSet(); /// /// Whether to validate all platforms /// [CommandLine("-AllPlatforms")] bool bAllPlatforms = false; /// /// Executes the tool with the given arguments /// /// Command line arguments /// Exit code public override int Execute(CommandLineArguments Arguments) { // Output a message if there are any arguments that are still unused Arguments.ApplyTo(this); Arguments.CheckAllArgumentsUsed(); // If the -AllPlatforms argument is specified, add all the known platforms into the list if(bAllPlatforms) { Platforms.UnionWith(Enum.GetValues(typeof(UnrealTargetPlatform)).OfType().Where(x => x != UnrealTargetPlatform.Unknown)); } // Output a line for each registered platform foreach (UnrealTargetPlatform Platform in Platforms) { UEBuildPlatform BuildPlatform = UEBuildPlatform.GetBuildPlatform(Platform, true); if (BuildPlatform != null && BuildPlatform.HasRequiredSDKsInstalled() == SDKStatus.Valid) { Log.TraceInformation("##PlatformValidate: {0} VALID", Platform.ToString()); } else { Log.TraceInformation("##PlatformValidate: {0} INVALID", Platform.ToString()); } } return 0; } } }