2023-07-19 12:02:37 -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" >
<!-- Project Options -->
2023-07-21 16:27:48 -04:00
<Option Name= "ProjectFile" DefaultValue= "_Unknown_" Restrict= ".+" Description= "The projects to cook" />
<Option Name= "ProjectName" DefaultValue= "_Unknown_" Restrict= ".+" Description= "The projects to cook" />
<Option Name= "EditorTarget" DefaultValue= "$(ProjectName)Editor" Description= "Compile name of the editor target" />
2023-07-19 12:02:37 -04:00
<!-- Note we can not make the default='', because the default is used for some validation. -->
2023-07-21 16:27:48 -04:00
<Error Message= "No project file specified" If= "'$(ProjectFile)' == '_Unknown_'" />
<Error Message= "No project name specified" If= "'$(ProjectName)' == '_Unknown_'" />
2023-07-19 12:02:37 -04:00
<!-- Platform Options -->
<Option Name= "TargetPlatform" DefaultValue= "Windows" Restrict= ".+" Description= "The platform to cook" />
2023-07-25 13:11:47 -04:00
<!-- Agent Options -->
<Option Name= "AgentType" DefaultValue= "" Description= "The platform to cook" />
<Property Name= "AgentType" Value= "IterativeValidateAgent_$(ProjectName)_$(TargetPlatform)" If= "'$(AgentType)' == ''" />
2023-07-19 12:02:37 -04:00
<!-- Iterative Options -->
<Option Name= "IterativeMode" DefaultValue= "incremental" Restrict= "iterative|incremental" Description= "Whether to iteratively cook using Incremental or using the legacy iterative" />
2024-01-12 14:28:27 -05:00
<Option Name= "ValidateMode" DefaultValue= "onephase" Restrict= "onephase|twophase" Description= "Whether to validate results in onephase (which reports indeterminism as an iterativefalseskip error) or two phase (which detects indeterminism and downgrades it to a display message)" />
2023-07-19 12:02:37 -04:00
<Property Name= "IterativeArgs" Value= "-zenstore -ini:Editor:[CookSettings]:HybridIterativeEnabled=true" If= "'$(IterativeMode)' == 'incremental'" />
<Property Name= "IterativeArgs" Value= "-iterate -ini:Editor:[CookSettings]:HybridIterativeEnabled=false -ini:Editor:[CookSettings]:IterativeUseClassFilters=true" If= "'$(IterativeMode)' == 'iterative'" />
<!-- Agent=IterativeValidate variables -->
<Property Name= "EditorPlatform" Value= "Win64" />
2023-07-26 14:31:59 -04:00
<Property Name= "CommonCookArgs" Value= "-targetplatform=$(TargetPlatform) $(IterativeArgs) -skiponlyeditoronly=true" />
<!-- Force singleprocess cook because IterativeValidatePackageWriter includes data that is not replicated -->
<Property Name= "CommonCookArgs" Value= "$(CommonCookArgs) -cookprocesscount=1" />
2023-07-21 16:27:48 -04:00
<Property Name= "CompileNodeName" Value= "Compile $(EditorPlatform) $(ProjectName)" />
2024-01-12 14:28:27 -05:00
<Property Name= "CookIterativeValidateSinglePhaseName" Value= "Cook InteraveValidateSinglePhase $(ProjectName) $(TargetPlatform)" />
<Property Name= "CookIterativeValidatePhase1Name" Value= "Cook IterativeValidatePhase1 $(ProjectName) $(TargetPlatform)" />
<Property Name= "CookIterativeValidatePhase2Name" Value= "Cook IterativeValidatePhase2 $(ProjectName) $(TargetPlatform)" />
2023-07-19 12:02:37 -04:00
2023-07-25 13:11:47 -04:00
<Agent Name= "IterativeValidateAgent" Type= "$(AgentType)" >
2023-07-19 12:02:37 -04:00
<Node Name= "$(CompileNodeName)" >
2023-07-26 08:42:38 -04:00
<Compile Target= "ShaderCompileWorker" Platform= "$(EditorPlatform)" Project= "$(ProjectFile)" Configuration= "Development" />
2023-07-21 16:27:48 -04:00
<Compile Target= "$(EditorTarget)" Platform= "$(EditorPlatform)" Project= "$(ProjectFile)" Configuration= "Development" />
2023-07-19 12:02:37 -04:00
</Node>
2024-01-12 14:28:27 -05:00
<Node Name= "$(CookIterativeValidateSinglePhaseName)" >
<Commandlet Name= "Cook" Project= "$(ProjectFile)" Arguments= "$(CommonCookArgs) -IterativeValidate -IterativeValidateAllowWrite" />
2023-07-19 12:02:37 -04:00
</Node>
2024-01-12 14:28:27 -05:00
<Node Name= "$(CookIterativeValidatePhase1Name)" Requires= "$(CompileNodeName)" If= "'$(ValidateMode)' == 'twophase'" >
<Commandlet Name= "Cook" Project= "$(ProjectFile)" Arguments= "$(CommonCookArgs) -IterativeValidatePhase1 -IterativeValidateAllowWrite" />
</Node>
<Node Name= "$(CookIterativeValidatePhase2Name)" Requires= "$(CookIterativeValidatePhase1Name)" If= "'$(ValidateMode)' == 'twophase'" >
<Commandlet Name= "Cook" Project= "$(ProjectFile)" Arguments= "$(CommonCookArgs) -IterativeValidatePhase2 -IterativeValidateAllowWrite" />
2023-07-19 12:02:37 -04:00
</Node>
</Agent>
2024-01-12 14:28:27 -05:00
<Aggregate Name= "IterativeValidate" Requires= "$(CookIterativeValidateSinglePhaseName)" If= "'$(ValidateMode)' == 'onephase'" />
<Aggregate Name= "IterativeValidate" Requires= "$(CookIterativeValidatePhase2Name)" If= "'$(ValidateMode)' == 'twophase'" />
2023-07-19 12:02:37 -04:00
</BuildGraph>