2021-03-09 21:05:18 -04:00
<?xml version='1.0' ?>
<BuildGraph xmlns= "http://www.epicgames.com/BuildGraph" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation= "http://www.epicgames.com/BuildGraph ../../Schema.xsd" >
<!--
This script exposes all supported platforms as options and turns the selected platforms
into three + separated lists.
1) EditorPlatforms - these are editor platforms the user requested directly or via WithWin64Editor=true
2) TargetPlatforms - these are cooked platforms the user requested directly or via WithPS4=true
3) RequiredEditorPlatforms - these are editor platforms that need to be build due to #2, but shouldn't be
used for tests etc because they weren't in #1
Both 1) and 2) can be specified directly for convenience. E.g. -set:TargetPlatforms=PS5+XSX
Downstream code can make the distinction of an editor to build but not test by the following
condition being true - ContainsItem('$(EditorName)', '$(EditorPlatforms)', '+')
If no platforms are found either by being specified directly or via the 'WithFoo' syntax, then
the DefaultEditorPlatforms and DefaultTargetPlatforms properties are returned. This allows scripts
to set defaults.
OutProperty: EditorPlatforms - Editor platforms to build and test, separated by +
OutProperty: TargetPlatforms - Target platforms to build and test, separated by +
OutProperty: RequiredEditorPlatforms - Editor platforms to build to cook targets
-->
2021-03-12 00:17:33 -04:00
<Property Name= "ShowExplicitFlags" Value= "true" />
2021-03-11 23:26:40 -04:00
<Property Name= "AllEditorPlatforms" Value= "Mac+Win64" />
<Property Name= "AllTargetPlatforms" Value= "Android+HoloLens+iOS+Lumin+Mac+PS4+PS5+Stadia+Switch+tvOS+Win64+WinGDK+XboxOneGDK+XSX" />
2021-03-09 21:05:18 -04:00
<Option Name= "EditorPlatforms" DefaultValue= "" Description= "Alternative to 'WithFooEditor', a list of editors to build and test. Win64+Mac etc" />
<Option Name= "TargetPlatforms" DefaultValue= "" Description= "Alternative to 'WithFoo', a list of Platforms to build and test. PS4+XSX etc" />
2021-03-11 23:26:40 -04:00
<!-- Support simple One+Two+Three style -->
<Option Name= "TargetConfigurations" DefaultValue= "" Description= "Configuration(s) to build" />
<Option Name= "PackageConfigurations" DefaultValue= "$(TargetConfigurations)" Description= "Configuration to package" />
<Option Name= "TestConfigurations" DefaultValue= "$(PackageConfigurations)" Description= "Configuration to test" />
2021-03-09 21:05:18 -04:00
2021-03-28 22:51:06 -04:00
<!-- No means of reliably running these tests atm -->
2021-05-13 20:20:15 -04:00
<Option Name= "EditorPlatformsToSkipTests" DefaultValue= "" Restrict= ".*" Description= "List of editor platforms that editor tests won't be run on" />
<Option Name= "TargetPlatformsToSkipTests" DefaultValue= "HoloLens+IOS+Linux+Lumin+Stadia+TVOS" Restrict= ".*" Description= "List of target platforms that target tests won't be run on" />
<Option Name= "PlatformsToSkipTests" DefaultValue= "" Restrict= ".*" Description= "List of platforms that all tests won't be run on. Overrides Editor/TargetPlatformsToSkipTests when non-empty." />
2021-03-28 22:51:06 -04:00
2021-03-11 23:26:40 -04:00
<!-- Support explicit flags for horde but hide them otherwise as the option list is overwhelming.. -->
<Do If= "$(ShowExplicitFlags)" >
<Option Name= "WithWin64Editor" DefaultValue= "false" Description= "Build and test Win64 Editor" />
<Option Name= "WithMacEditor" DefaultValue= "false" Description= "Build and test Mac Editor" />
2021-03-28 22:51:06 -04:00
<Option Name= "WithLinuxEditor" DefaultValue= "false" Description= "Build and test Linux Editor" />
2021-03-09 21:05:18 -04:00
2021-03-11 23:26:40 -04:00
<Option Name= "WithAndroid" DefaultValue= "false" Description= "Build and test Android" />
<Option Name= "WithHoloLens" DefaultValue= "false" Description= "Build and test HoloLens" />
<Option Name= "WithIOS" DefaultValue= "false" Description= "Build and test IOS" />
2021-03-28 22:51:06 -04:00
<Option Name= "WithLinux" DefaultValue= "false" Description= "Build and test Linux" />
2021-03-11 23:26:40 -04:00
<Option Name= "WithLumin" DefaultValue= "false" Description= "Build and test Lumin" />
<Option Name= "WithMac" DefaultValue= "false" Description= "Build and test Mac" />
<Option Name= "WithPS4" DefaultValue= "false" Description= "Build and test PS4" />
<Option Name= "WithPS5" DefaultValue= "false" Description= "Build and test PS5" />
<Option Name= "WithStadia" DefaultValue= "false" Description= "Build and test Stadia" />
<Option Name= "WithSwitch" DefaultValue= "false" Description= "Build and test Switch" />
<Option Name= "WithTvOS" DefaultValue= "false" Description= "Build and test TvOS" />
<Option Name= "WithWin64" DefaultValue= "false" Description= "Build and test Win64" />
<Option Name= "WithWinGDK" DefaultValue= "false" Description= "Build and test WinGDK" />
<Option Name= "WithXboxOneGDK" DefaultValue= "false" Description= "Build and test XboxOneGDK" />
<Option Name= "WithXSX" DefaultValue= "false" Description= "Build and test XSX" />
2021-03-09 21:05:18 -04:00
2021-03-11 23:26:40 -04:00
<Do If= "'$(EditorPlatforms)' == ''" >
<Property Name= "EditorPlatforms" Value= "" />
<Property Name= "EditorPlatforms" Value= "$(EditorPlatforms)Win64+" If= "$(WithWin64Editor)" />
<Property Name= "EditorPlatforms" Value= "$(EditorPlatforms)Mac+" If= "$(WithMacEditor)" />
2021-03-28 22:51:06 -04:00
<Property Name= "EditorPlatforms" Value= "$(EditorPlatforms)Linux+" If= "$(WithLinuxEditor)" />
2021-03-11 23:26:40 -04:00
</Do>
2021-03-09 21:05:18 -04:00
2021-03-11 23:26:40 -04:00
<Do If= "'$(TargetPlatforms)' == ''" >
<Property Name= "TargetPlatforms" Value= "" />
<Property Name= "TargetPlatforms" Value= "$(TargetPlatforms)Android+" If= "$(WithAndroid)" />
<Property Name= "TargetPlatforms" Value= "$(TargetPlatforms)HoloLens+" If= "$(WithHoloLens)" />
<Property Name= "TargetPlatforms" Value= "$(TargetPlatforms)IOS+" If= "$(WithIOS)" />
2021-03-28 22:51:06 -04:00
<Property Name= "TargetPlatforms" Value= "$(TargetPlatforms)Linux+" If= "$(WithLinux)" />
2021-03-11 23:26:40 -04:00
<Property Name= "TargetPlatforms" Value= "$(TargetPlatforms)Lumin+" If= "$(WithLumin)" />
<Property Name= "TargetPlatforms" Value= "$(TargetPlatforms)Mac+" If= "$(WithMac)" />
<Property Name= "TargetPlatforms" Value= "$(TargetPlatforms)PS4+" If= "$(WithPS4)" />
<Property Name= "TargetPlatforms" Value= "$(TargetPlatforms)PS5+" If= "$(WithPS5)" />
<Property Name= "TargetPlatforms" Value= "$(TargetPlatforms)Stadia+" If= "$(WithStadia)" />
<Property Name= "TargetPlatforms" Value= "$(TargetPlatforms)Switch+" If= "$(WithSwitch)" />
<Property Name= "TargetPlatforms" Value= "$(TargetPlatforms)TVOS+" If= "$(WithTVOS)" />
<Property Name= "TargetPlatforms" Value= "$(TargetPlatforms)Win64+" If= "$(WithWin64)" />
<Property Name= "TargetPlatforms" Value= "$(TargetPlatforms)WinGDK+" If= "$(WithWinGDK)" />
<Property Name= "TargetPlatforms" Value= "$(TargetPlatforms)XboxOneGDK+" If= "$(WithXboxOneGDK)" />
<Property Name= "TargetPlatforms" Value= "$(TargetPlatforms)XSX+" If= "$(WithXSX)" />
</Do>
2021-03-09 21:05:18 -04:00
</Do>
<!-- If still no platforms, pick the defaults that the script should have specified -->
<Do If= "'$(EditorPlatforms)' == ''" >
<Property Name= "EditorPlatforms" Value= "$(DefaultEditorPlatforms)" />
</Do>
<Do If= "'$(TargetPlatforms)' == ''" >
<Property Name= "TargetPlatforms" Value= "$(DefaultTargetPlatforms)" />
</Do>
<!-- 'None' means don't do any platforms. We need to do this because an empty string means use defaults.. -->
<Do If= "'$(EditorPlatforms)' == 'None'" >
<Property Name= "EditorPlatforms" Value= "" />
</Do>
<Do If= "'$(TargetPlatforms)' == 'None'" >
<Property Name= "TargetPlatforms" Value= "" />
</Do>
2021-03-11 23:26:40 -04:00
<!-- 'None' means don't do any platforms. We need to do this because an empty string means use defaults.. -->
<Do If= "'$(EditorPlatforms)' == 'All'" >
<Property Name= "EditorPlatforms" Value= "$(AllEditorPlatforms)" />
</Do>
<Do If= "'$(TargetPlatforms)' == 'All'" >
<Property Name= "TargetPlatforms" Value= "$(AllTargetPlatforms)" />
</Do>
2021-03-09 21:05:18 -04:00
<Property Name= "RequiredEditorPlatforms" Value= "$(EditorPlatforms)" />
<ForEach Name= "TargetPlatform" Values= "$(TargetPlatforms)" Separator= "+" >
2021-03-11 23:26:40 -04:00
<!-- Check the platform is valid -->
<Do If= "!ContainsItem('$(AllTargetPlatforms)','$(TargetPlatform)','+')" >
<Error Message= "Platform $(TargetPlatform) is not a recognized platform!" />
</Do>
2021-03-09 21:05:18 -04:00
<!-- Declare type of host required to build & cook this platform -->
<Property Name= "HostAgentType" Value= "Win64" />
2021-03-11 23:26:40 -04:00
<Property Name= "HostAgentType" Value= "Mac" If= "'$(TargetPlatform)' == 'Mac' or '$(TargetPlatform)' == 'IOS' or '$(TargetPlatform)' == 'tvOS'" />
2021-03-09 21:05:18 -04:00
<Do If= "!ContainsItem('$(RequiredEditorPlatforms)','$(HostAgentType)', '+')" >
<Property Name= "RequiredEditorPlatforms" Value= "$(RequiredEditorPlatforms)+$(HostAgentType)" />
</Do>
</ForEach>
<!-- PS5 packaging isn't supported by Gauntlet yet :( ) -->
2021-04-19 12:47:16 -04:00
<Property Name= "PlatformsToSkipPackaging" Value= "Win64+Linux" />
2021-03-09 21:05:18 -04:00
2021-03-23 13:53:51 -04:00
<!-- These platforms can't run from loose staged content -->
<Property Name= "PlatformsThatRequirePackaging" Value= "Android+iOS" />
2021-03-11 23:26:40 -04:00
<!-- Support explicit flags for horde but hide them otherwise as the option list is overwhelming.. -->
<Do If= "$(ShowExplicitFlags)" >
<Option Name= "WithDebugTargets" DefaultValue= "false" Description= "Build Debug configurations" />
<Option Name= "WithDevelopmentTargets" DefaultValue= "false" Description= "Build Development configurations" />
<Option Name= "WithTestTargets" DefaultValue= "false" Description= "Build Test configurations" />
<Option Name= "WithShippingTargets" DefaultValue= "false" Description= "Build Shipping configurations" />
<Option Name= "WithDebugPackages" DefaultValue= "false" Description= "Build Debug packages" />
<Option Name= "WithDevelopmentPackages" DefaultValue= "false" Description= "Build Development packages" />
<Option Name= "WithTestPackages" DefaultValue= "false" Description= "Build Test packages" />
<Option Name= "WithShippingPackages" DefaultValue= "false" Description= "Build Shipping packages" />
<Option Name= "WithDebugTests" DefaultValue= "false" Description= "Run tests on Debug builds" />
<Option Name= "WithDevelopmentTests" DefaultValue= "false" Description= "Run tests on Development builds" />
<Option Name= "WithTestTests" DefaultValue= "false" Description= "Run tests on Test builds" />
<Option Name= "WithShippingTests" DefaultValue= "false" Description= "Run tests on Shipping builds" />
<Do If= "'$(TargetConfigurations)' == ''" >
<Property Name= "TargetConfigurations" Value= "" />
<Property Name= "TargetConfigurations" Value= "$(TargetConfigurations)Debug+" If= "$(WithDebugTargets)" />
<Property Name= "TargetConfigurations" Value= "$(TargetConfigurations)Development+" If= "$(WithDevelopmentTargets)" />
<Property Name= "TargetConfigurations" Value= "$(TargetConfigurations)Test+" If= "$(WithTestTargets)" />
<Property Name= "TargetConfigurations" Value= "$(TargetConfigurations)Shipping+" If= "$(WithShippingTargets)" />
</Do>
<Do If= "'$(PackageConfigurations)' == ''" >
<Property Name= "PackageConfigurations" Value= "" />
<Property Name= "PackageConfigurations" Value= "$(PackageConfigurations)Debug+" If= "$(WithDebugPackages)" />
<Property Name= "PackageConfigurations" Value= "$(PackageConfigurations)Development+" If= "$(WithDevelopmentPackages)" />
<Property Name= "PackageConfigurations" Value= "$(PackageConfigurations)Test+" If= "$(WithTestPackages)" />
<Property Name= "PackageConfigurations" Value= "$(PackageConfigurations)Shipping+" If= "$(WithShippingPackages)" />
</Do>
<Do If= "'$(TestConfigurations)' == ''" >
<Property Name= "TestConfigurations" Value= "" />
<Property Name= "TestConfigurations" Value= "$(TestConfigurations)Debug+" If= "$(WithDebugTests)" />
<Property Name= "TestConfigurations" Value= "$(TestConfigurations)Development+" If= "$(WithDevelopmentTests)" />
<Property Name= "TestConfigurations" Value= "$(TestConfigurations)Test+" If= "$(WithTestTests)" />
<Property Name= "TestConfigurations" Value= "$(TestConfigurations)Shipping+" If= "$(WithShippingTests)" />
</Do>
</Do>
<Do If= "'$(TargetConfigurations)' == ''" >
<Property Name= "TargetConfigurations" Value= "$(DefaultTargetConfigurations)" />
2021-03-15 20:11:03 -04:00
<Property Name= "TargetConfigurations" Value= "Development" If= "'$(TargetConfigurations)' == ''" />
2021-03-11 23:26:40 -04:00
</Do>
<Do If= "'$(PackageConfigurations)' == ''" >
<Property Name= "PackageConfigurations" Value= "$(TargetConfigurations)" />
</Do>
<Do If= "'$(TestConfigurations)' == ''" >
<Property Name= "TestConfigurations" Value= "$(PackageConfigurations)" />
</Do>
2021-03-12 00:17:33 -04:00
<!-- add up any package configurations that are needed by test configurations.. -->
<ForEach Name= "TestConfiguration" Values= "$(TestConfigurations)" Separator= "+" >
<Do If= "!ContainsItem('$(PackageConfigurations)','$(TestConfiguration)', '+')" >
2021-03-12 15:39:07 -04:00
<Trace Message= "Adding package configuration for $(TestConfiguration) due to the config being set for testing" />
2021-03-12 00:17:33 -04:00
<Property Name= "PackageConfigurations" Value= "$(PackageConfigurations)+$(TestConfiguration)" />
</Do>
</ForEach>
2021-03-11 23:26:40 -04:00
2021-03-12 00:17:33 -04:00
<!-- add up any target configurations that are needed by package configurations.. -->
<ForEach Name= "PackageConfiguration" Values= "$(PackageConfigurations)" Separator= "+" >
<Do If= "!ContainsItem('$(TargetConfigurations)','$(PackageConfiguration)', '+')" >
2021-03-12 15:39:07 -04:00
<Trace Message= "Adding target configuration for $(PackageConfiguration) due to the config being set for packaging" />
2021-03-12 00:17:33 -04:00
<Property Name= "TargetConfigurations" Value= "$(TargetConfigurations)+$(PackageConfiguration)" />
</Do>
</ForEach>
2021-03-11 23:26:40 -04:00
2021-03-09 21:05:18 -04:00
</BuildGraph>