Files
UnrealEngineUWP/Engine/Build/InstalledEngineBuild.xml
Ben Marsh 398d16ab8a Copying //UE4/Dev-Core to //UE4/Dev-Main (Source: //UE4/Dev-Core @ 3491552)
#lockdown Nick.Penwarden
#rb none

==========================
MAJOR FEATURES + CHANGES
==========================

Change 3421703 on 2017/05/03 by Ben.Marsh

	Surround invalid character message in quotes, so it's clear when a space is listed.

	#jira UE-44606

Change 3422644 on 2017/05/04 by Steve.Robb

	Ranged-for support for TChunkedArray.

Change 3422754 on 2017/05/04 by Steve.Robb

	IAsyncReadFileHandle made non-copyable to prevent accidental wrong stat calculation.

Change 3422758 on 2017/05/04 by Steve.Robb

	Misc readability/standards improvements in stats code.

Change 3427955 on 2017/05/08 by Steve.Robb

	Version fix for IOS optimization pragmas, copied from equivalent Mac code.

Change 3428017 on 2017/05/08 by Steve.Robb

	Unused property types removed.

Change 3428641 on 2017/05/08 by Ben.Marsh

	UAT: Remove failed attempt to separate out BuildCookRun into separate commands, which have since rotted.

Change 3430407 on 2017/05/09 by Ben.Marsh

	UBT: Define UE_4_X_OR_LATER macros for every UE4 version greater than 4.17 (eg. UE_4_17_OR_LATER, etc...).

Change 3430682 on 2017/05/09 by Gil.Gribb

	UE4 - Added a fatal error for asking for very large alignments from MallocBinned2 and also return the true size of the memory block in GetAllocationSize().

Change 3430685 on 2017/05/09 by Gil.Gribb

	UE4 - Fixed a bug with the windows async IO stuff related to an unsafe pointer cast to LPDWORD from int64*.

Change 3430756 on 2017/05/09 by Ben.Marsh

	UBT: Switch some receipt stuff to use FileReference/DirectoryReference objects rather than raw paths.

Change 3431157 on 2017/05/09 by Ben.Marsh

	UBT: Store absolute paths when receipts are in memory; only insert pseudo-variables for $(EngineDir) and $(ProjectDir) when saved to disk.

Change 3432334 on 2017/05/10 by Graeme.Thornton

	Include project name in the UBT error message which appears when a plugin is missing

Change 3432481 on 2017/05/10 by Gil.Gribb

	UE4 - Fixed code to detect cycles in parallel tick sorting.

Change 3432485 on 2017/05/10 by Steve.Robb

	Simplified templating around bitfield offset calculation.

Change 3432608 on 2017/05/10 by Steve.Robb

	'bool == byte' static_assert restored after being removed in CL# 3432485.

Change 3432767 on 2017/05/10 by Ben.Marsh

	UBT: Fix exception when a missing plugin is encountered if the target does not have a project.

Change 3433031 on 2017/05/10 by Ben.Marsh

	UAT: Add classes to allow safer manipulation of paths within the staging directory (StagedFileReference, StagedDirectoryReference), and convert staging code over to using those and their regular filesystem counterparts (FileReference/DirectoryReference). Lots of cleanup and refactoring of staging code.

Change 3433049 on 2017/05/10 by Ben.Marsh

	Add more diagnostic information to asserts in TStaticIndirectArrayThreadSafeRead, to try and shed light on what sort of corrupted data is being passed in from the cooker.

	#jira UE-44336

Change 3433097 on 2017/05/10 by Steve.Robb

	Value initialization fix for MakeUnique<T[]>().

Change 3433972 on 2017/05/10 by Daniel.Lamb

	Stop unrealpak from crashing if generating a patch with more pak files then the original game.

Change 3434124 on 2017/05/10 by Ben.Marsh

	UAT: Remove hacky bUseWebSocketNetDriver option.

Change 3434824 on 2017/05/11 by Gil.Gribb

	UE4 - Printed an error instead of asserting when there are missing native classes.

Change 3434916 on 2017/05/11 by Ben.Marsh

	UAT: Separate the list of files to be staged into a separate class.

Change 3435427 on 2017/05/11 by Gil.Gribb

	UE4 - Fixed attempts to load compiled in packages, which produces warnings and is slow.

Change 3436240 on 2017/05/11 by Ben.Marsh

	UAT: Add a command to search for restricted folders under a given base directory.

Change 3438068 on 2017/05/12 by James.Fox

	Checking in Phase 1 of the Dev-Core test map for repro purposes. UE-44996 #rb none

Change 3438855 on 2017/05/15 by Robert.Manuszewski

	When verbose cluster logging is enabled and new object is added to an already existing cluster, the cluster will be dumped to log.

Change 3438929 on 2017/05/15 by Robert.Manuszewski

	Merging CL # 3436939 using Dev-Core_To_Dev-LoadTimes:

	Fix for potential crashes caused by levels staying in memory through material references.

Change 3439021 on 2017/05/15 by Ben.Marsh

	PR #3566: fix non-ascii characters in help command HTML converted to "?" (Contributed by kayama-shift)


Change 3439079 on 2017/05/15 by Ben.Marsh

	PR #2832: Implement missing MessageBox (Contributed by projectgheist)


Change 3439258 on 2017/05/15 by Ben.Marsh

	Highlight lines containing the strings "Error:" or "Warning:" in the output log, so that diagnostics from child processes are highlighted appropriately. The build system already relies similar logic for scraping diagnostics from logs, so it should be safe and predictable to check for messages in this way.

	#jira UE-43673

Change 3439358 on 2017/05/15 by Ben.Marsh

	UBT: Fix Visual Studio solution referencing the incorrect platform for existing C# project ("Any CPU" instead of "AnyCPU"). Was causing prompt to save the solution the first time it is opened.

Change 3439665 on 2017/05/15 by Ben.Marsh

	UAT: Remove DeployPakInternalLowerCaseFilenames(). No platforms require this to be true.

Change 3440735 on 2017/05/16 by Robert.Manuszewski

	UBT compile fix after the last merge

Change 3440889 on 2017/05/16 by Ben.Marsh

	EC: Fix regex for matching path to source files included in error messages from the Linux toolchain.

Change 3442776 on 2017/05/17 by Steve.Robb

	Platform fix for FPaths::IsSamePath.

Change 3445411 on 2017/05/17 by Ben.Marsh

	UBT: Fix typo in makefile diagnostic string.

Change 3446070 on 2017/05/18 by Steve.Robb

	Fix to array sizes in generated UFunction code, which should now handle editor-only functions.

Change 3446091 on 2017/05/18 by Steve.Robb

	Another array size fix for generated code.

Change 3446605 on 2017/05/18 by Steve.Robb

	BuildConfiguration option for static analysis.

Change 3448601 on 2017/05/19 by Richard.Fawcett

	Change FWindowsPlatformProcess::ApplicationSettingsDir() so that it no longer returns a path with a mixture of "\" and "/" characters, and only contains "/" characters.

	This makes it consistent with other related functions like FWindowsPlatformProcess::UserSettingsDir().

Change 3449026 on 2017/05/19 by Ben.Marsh

	Fix whitespace in template file.

Change 3449697 on 2017/05/19 by James.Fox

	Checking in Phase 2 of Dev-Core test map for QAGame
	Also enabled Blueprint and Actor clustering by default in QAGame for more thorough GC testing.

Change 3451352 on 2017/05/22 by Steve.Robb

	UFunction flags are now viewable in the debugger.

Change 3451355 on 2017/05/22 by Steve.Robb

	ARRAY_COUNT fix for zero-sized arrays in Clang.

Change 3451379 on 2017/05/22 by Steve.Robb

	C++14 operator delete overloads with size, for consistency.

Change 3451398 on 2017/05/22 by Graeme.Thornton

	Add AES and RSA encryption keys to the list of config fields that get stripped from ini files when staging
	When creating a pak file, do a filtered copy of all ini files to a temp directory so that all confidential fields can be stripped. Equivalent behaviour to staging a loose file distribution

Change 3451476 on 2017/05/22 by Ben.Marsh

	Compile shipping builds for WEX and Ocean, and post telemetry for the resulting executable size.

Change 3451478 on 2017/05/22 by Graeme.Thornton

	PR #3197: Improved log message formatting (Contributed by projectgheist)


Change 3451868 on 2017/05/22 by Steve.Robb

	Static log category moved out of header.
	ENUM_CLASS_FLAGS macro used instead of explicit operators.

Change 3452319 on 2017/05/22 by Ben.Marsh

	UBT: Add a new "package" build product type, which can be used for APK files on Android and Stub files on iOS. Treating these files as executables is causing the measured executable size to be incorrect.

Change 3452607 on 2017/05/22 by Ben.Marsh

	UBT: Filter out folders for other platforms when searching for headers to pass to UHT.

Change 3453600 on 2017/05/23 by Graeme.Thornton

	PR #3226 - Updated some code comments to better describe the usage of the log category definition macros

Change 3453616 on 2017/05/23 by Steve.Robb

	Error reported instead of a crash when there's a space between UCLASS or UINTERFACE and the open parenthesis.

Change 3453714 on 2017/05/23 by Ben.Marsh

	Build: Add some Visual Studio 2017 test compiles to the build system.

Change 3453795 on 2017/05/23 by Ben.Marsh

	UBT: Fix parsing of command line attributes that have a specific value assigned. We should never have an '=' suffix for such arguments.

Change 3454606 on 2017/05/23 by Ben.Marsh

	UAT: Make sure log filenames are unique by creating a 0-byte file in its place.

Change 3454709 on 2017/05/23 by Ben.Marsh

	UBT: Enable the /permissive- option for stricter standards compliance on Visual Studio 2017. Currently have /Zc:strictStrings disabled due to violations in Windows headers; all UE4 instances have been fixed up.

Change 3456445 on 2017/05/24 by Graeme.Thornton

	MemoryProfiler2 - Add mprof filename into title bar after opening

Change 3457129 on 2017/05/24 by Ben.Marsh

	Fix comment for FVector::Normalize().

	#jira UE-45369

	#rnx

Change 3457228 on 2017/05/24 by Ben.Marsh

	Do not allow forward-declaring Rect structs. They are not public, and it conflicts with third party libraries.

	#rnx

Change 3458357 on 2017/05/24 by Ben.Marsh

	Fix name resolution issue with /permissive- in VS2017.

Change 3458812 on 2017/05/25 by Robert.Manuszewski

	PR #2407: Fix LoadLibrary error with Microsoft Group Policy CWDIllegalinDllSearch mode 1 or 2 (Contributed by bozaro)


Change 3458894 on 2017/05/25 by Robert.Manuszewski

	PR #2096: Fix argument parsing in DiffAssets Comandlet (Contributed by cgrebeld)


Change 3461205 on 2017/05/26 by Robert.Manuszewski

	Fixed parameter parsing so that arguments are not parsed if not preceeded by a whitespace (for example "-Log" was parsed in "TM-Log")
	#jira UE-33790

Change 3464714 on 2017/05/30 by Robert.Manuszewski

	Fixing potential deadlock caused by a race condition when using FMallocVerifyProxy with FMallocBinned

Change 3465310 on 2017/05/30 by Ben.Marsh

	UBT: Enable bAdaptiveUnityDisablesOptimizations by default.

Change 3465346 on 2017/05/30 by Ben.Marsh

	UBT: Require Update 3 to be installed when compiling using VS2015.

Change 3465389 on 2017/05/30 by Ben.Marsh

	UBT: Fix support for RTTI when creating PCHs and shared PCHs.

Change 3466084 on 2017/05/30 by Ben.Marsh

	Fix compiling plain C files, where it would incorrectly use a C++ PCH.

Change 3467018 on 2017/05/31 by Robert.Manuszewski

	Async loading code will now properly handle cases when the requested package could not be created.

Change 3467113 on 2017/05/31 by Ben.Marsh

	UGS: When opening a solution in Visual Studio, always start the process in the solution's directory.

Change 3467508 on 2017/05/31 by Ben.Marsh

	Add a function to fix a long package name so it matches the case of a file on disk. Fixes deterministic cooking issues when on-disk case changes.

Change 3467510 on 2017/05/31 by Ben.Marsh

	Fix deterministic cooking issue caused by LODGroup only being initialized in the CDO if it's serialized, causing inconsistent delta serialization for instances.

Change 3467967 on 2017/05/31 by Ben.Marsh

	Always allow UAT to compile on non-Windows platforms, even if a debugger is present, since MSVC is the only one that will load C# PDBs.

Change 3468544 on 2017/05/31 by Ben.Marsh

	UBT: Add a more helpful message when a module is being compiled with implicit PCHs, but a source file is not configured correctly.

Change 3469241 on 2017/06/01 by Ben.Marsh

	UBT: Fix single-file compile causing a different UHT manifest to be generated, potentially excluding hidden dependencies.

Change 3471709 on 2017/06/02 by Daniel.Lamb

	Rebuild lighting commandlet now rebuilds reflections also instead of trashing them.

	#test None

Change 3471719 on 2017/06/02 by Daniel.Lamb

	Fixed crash in cooker while trying to cook for multiple platforms

	#test Launch on shootergame windows + ps4
	#jira UE-45356

Change 3472261 on 2017/06/02 by Ben.Marsh

	CRP: Clear out MDD logs whenever we clear out CRP logs.

Change 3473169 on 2017/06/05 by Graeme.Thornton

	PR #3622: Log category code cleanup (Contributed by projectgheist)


Change 3473176 on 2017/06/05 by Graeme.Thornton

	PR #3622: Log category code cleanup (Contributed by projectgheist) (Part II)

	 - Missed some files from my previous checkin


Change 3473597 on 2017/06/05 by Ben.Marsh

	UnrealVS: Fix massive slowdown on startup caused by searching the directory tree under the solution for *.uproject files (including intermediate folders, etc...). Now reads *.uprojectdirs files and only checks the listed directories within. Measured it taking > 30s to run before, now takes < 0.1s.

Change 3473722 on 2017/06/05 by Steve.Robb

	GitHub #3444: UE-42521: Added missing macro's for TMap and TSet

	PREPROCESSOR_COMMA_SEPARATED added as a better solution for the hacky comma separator solution in the PR.

Change 3475073 on 2017/06/06 by Steve.Robb

	Fix for TPromise's move assignment operator return value.

Change 3475331 on 2017/06/06 by Ben.Marsh

	UAT: Fix invalid paths being generated when stripping encryption settings from config files.

	* In cases where INI files were in a subfolder of the Config folder (eg. Config\Localization), it was not stripping the separating slash, resulting in files being written to the root directory of the current drive.
	* Paths under the config folder are not guaranteed to be unique.

Change 3475453 on 2017/06/06 by Ben.Marsh

	UBT: Add an error if a plugin lists a non-plugin module as belonging to it.

	#jira UE-45178

Change 3475668 on 2017/06/06 by Ben.Marsh

	Add a message showing when we begin creating the asset registry, since it can take a long time.

	#jira UE-41675

Change 3475747 on 2017/06/06 by Steve.Robb

	Replicated from CL# 3332960:

	Force a gather on hot reload, so we don't use stale state from the makefile.

	#jira UE-42205

Change 3475897 on 2017/06/06 by Ben.Marsh

	PR #3655: Improved behavior for Automation.IsBuildMachine (Contributed by projectgheist)


Change 3477432 on 2017/06/07 by Robert.Manuszewski

	Removed AsyncIOBandwidthLimit as it was no longer being used by anything.

Change 3478582 on 2017/06/07 by Ben.Marsh

	UBT: Allow setting the UE_ENGINE_DIRECTORY macro for any monolithic builds, to fix being able to debug cooked foreign projects in the binary release.

Change 3480035 on 2017/06/08 by Gil.Gribb

	UE4 - Fixed async loading from pak files < 64k.

Change 3484348 on 2017/06/12 by Robert.Manuszewski

	Removed private_subobject macro which was a temporary measure to make all subobjects private without breaking game code.

Change 3484863 on 2017/06/12 by Steve.Robb

	Fix for TSparseArray::operator= corrupting non-POD objects.
	InCopy.ArrayMax cached in a local instead of being read each time.
	Const-correctness fix for element copy construction.
	SrcData and DestData names flipped as they were the wrong way around.

	Source: https://udn.unrealengine.com/questions/374840/possible-bug-in-tsparsearray-assignment-operator.html

Change 3485003 on 2017/06/12 by Ben.Marsh

	UGS: Add support for multiple tabs. Each tab can monitor changes in a separate workspace, and scheduled syncs will run for all open tabs.

Change 3485063 on 2017/06/12 by Ben.Marsh

	UGS: Fix a null reference exception when right clicking on the notification icon during startup.

Change 3485104 on 2017/06/12 by Ben.Marsh

	PR #2084: [UAT] Command-line parameter to override branch name (Contributed by nbjk667)


Change 3485112 on 2017/06/12 by Steve.Robb

	TSetElement generic constructor protected from becoming a copy constructor.
	Redundant #include removed from AreTypesEqual.h.

	Source: https://udn.unrealengine.com/questions/374840/possible-bug-in-tsparsearray-assignment-operator.html

Change 3485452 on 2017/06/12 by Ben.Marsh

	UnrealVS: Fix command line not being updated for C# projects. IVsBuildPropertyStorage.SetPropertyValue does not seem to update properties that are cached in memory.

	#jira UE-45716

Change 3486182 on 2017/06/12 by Ben.Marsh

	UGS: Include option to selet tab names in the options menu.

Change 3486189 on 2017/06/12 by Ben.Marsh

	UGS: Fix browse button from context menu always opening a new tab.

Change 3486636 on 2017/06/13 by Steve.Robb

	FStatMessagesArray iteration changed to use ranged-for instead of indexing.

Change 3486688 on 2017/06/13 by Steve.Robb

	Fix for CDO pointer replacement in non-UObject properties during hot reload.

	#jira UE-38146

Change 3486704 on 2017/06/13 by Ben.Marsh

	UGS: Fix exception when closing the last open tab.

Change 3486707 on 2017/06/13 by Ben.Marsh

	UGS: Fix exception on load if UGS was closed with no projects open.

Change 3486715 on 2017/06/13 by Ben.Marsh

	UGS: Change tabs to show the project file by default.

Change 3486718 on 2017/06/13 by Ben.Marsh

	UGS: Only allow one workspace to sync at a time.

Change 3486880 on 2017/06/13 by Ben.Marsh

	UGS: Show the sync progress of each tab via the underline on the tab button.

Change 3486912 on 2017/06/13 by Ben.Marsh

	UGS: Include the open project and recent project list as separate top-level menu items.

Change 3486914 on 2017/06/13 by Ben.Marsh

	UGS: Update version to 1.101.

Change 3487092 on 2017/06/13 by Ben.Marsh

	UGS: Fix crash on startup if log window is minimized.

Change 3487099 on 2017/06/13 by Ben.Marsh

	UGS: Update version to 1.102

Change 3487198 on 2017/06/13 by Ben.Marsh

	Remove debug code.

Change 3487285 on 2017/06/13 by Ben.Marsh

	Restore Remap() function that was accidentally removed in merge.

Change 3487769 on 2017/06/13 by Ben.Marsh

	Disable the promoted flag when using the SyncProject command on Mac; doing so prevents UE4Game being compiled when packaging blueprint projects.

	#jira UE-45995

Change 3487915 on 2017/06/13 by Ben.Marsh

	UAT: Fix exception due to collection being modified while packaging for Linux.

	#jira UE-46013

Change 3487972 on 2017/06/13 by Ben.Marsh

	UAT: Always allow staged files to overwrite previously staged files. New iOS code relies on old behavior to overwrite engine icons and metadata with game copies.

	#jira UE-46014

Change 3487991 on 2017/06/13 by Ben.Marsh

	UAT: Ensure that the directory exists before trying to create a placeholder log filename.

	#jira UE-46015

Change 3489062 on 2017/06/14 by Robert.Manuszewski

	Removed FPackageFileSummary's AdditionalPackagesToCook as it was not used by anything. This should reduce the package header size considerably for levels with many streaming sublevels.

	#jira UE-45563

Change 3489063 on 2017/06/14 by Robert.Manuszewski

	Increasing the maximum package summary size to handle levels with multiple streaming sublevels.

	#jira UE-45563

Change 3491552 on 2017/06/15 by Ben.Marsh

	Handle failures to load *MeshReduction modules.

[CL 3492074 by Ben Marsh in Main branch]
2017-06-15 12:43:54 -04:00

869 lines
64 KiB
XML

<?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 ../../Engine/Build/Graph/Schema.xsd" >
<!-- Helper option to make installed build for host platform only -->
<Option Name="HostPlatformOnly" Restrict="true|false" DefaultValue="false" Description="A helper option to make an installed build for your host platform only, so that you don't have to disable each platform individually"/>
<!-- Setup default target platforms for Installed build if they haven't been specified on the commandline -->
<Option Name="WithWin64" Restrict="true|false" DefaultValue="true" Description="Include the Win64 target platform"/>
<Option Name="WithWin32" Restrict="true|false" DefaultValue="true" Description="Include the Win32 target platform"/>
<Option Name="WithMac" Restrict="true|false" DefaultValue="true" Description="Include the Mac target platform"/>
<Option Name="WithAndroid" Restrict="true|false" DefaultValue="true" Description="Include the Android target platform"/>
<Option Name="WithIOS" Restrict="true|false" DefaultValue="true" Description="Include the iOS target platform"/>
<Option Name="WithTVOS" Restrict="true|false" DefaultValue="true" Description="Include the tvOS target platform"/>
<Option Name="WithLinux" Restrict="true|false" DefaultValue="true" Description="Include the Linux target platform"/>
<Option Name="WithHTML5" Restrict="true|false" DefaultValue="true" Description="Include the HTML5 target platform"/>
<Option Name="WithPS4" Restrict="true|false" DefaultValue="false" Description="Include the PS4 target platform"/>
<Option Name="WithXboxOne" Restrict="true|false" DefaultValue="false" Description="Include the XboxOne target platform"/>
<Option Name="WithSwitch" Restrict="true|false" DefaultValue="false" Description="Include the Switch target platform"/>
<!-- Whether to create a prebuilt DDC -->
<Option Name="WithDDC" Restrict="true|false" DefaultValue="true" Description="Build a standalone derived-data cache for the engine content and templates" />
<!-- Whether to build DDC for the host platform only -->
<Option Name="HostPlatformDDCOnly" Restrict="true|false" DefaultValue="true" Description="Whether to include DDC for the host platform only"/>
<!-- Whether to sign any executables produced -->
<Option Name="SignExecutables" Restrict="true|false" DefaultValue="false" Description="Sign the executables produced where signing is available"/>
<!-- The analytics type -->
<Option Name="AnalyticsTypeOverride" DefaultValue="" Description="Identifier for analytic events to send"/>
<Option Name="EnableSymStore" Restrict="true|false" DefaultValue="false" Description="Whether to add Source indexing to Windows game apps so they can be added to a symbol server"/>
<Do If="'$(HostPlatformOnly)' == true">
<!-- Activate correct Target Platforms for host -->
<Switch>
<Case If="'$(HostPlatform)' == 'Win64'">
<Property Name="WithWin64" Value="true"/>
<Property Name="WithWin32" Value="true"/>
<Property Name="WithMac" Value="false"/>
<Property Name="WithLinux" Value="false"/>
</Case>
<Case If="'$(HostPlatform)' == 'Mac'">
<Property Name="WithWin64" Value="false"/>
<Property Name="WithWin32" Value="false"/>
<Property Name="WithMac" Value="true"/>
<Property Name="WithLinux" Value="false"/>
</Case>
<Case If="'$(HostPlatform)' == 'Linux'">
<Property Name="WithWin64" Value="false"/>
<Property Name="WithWin32" Value="false"/>
<Property Name="WithMac" Value="false"/>
<Property Name="WithLinux" Value="true"/>
</Case>
<Default>
<Error Message="$(HostPlatform) is not supported for making an installed build"/>
</Default>
</Switch>
<!-- Other Target Platforms always disabled -->
<Property Name="WithAndroid" Value="false"/>
<Property Name="WithIOS" Value="false"/>
<Property Name="WithTVOS" Value="false"/>
<Property Name="WithHTML5" Value="false"/>
<Property Name="WithPS4" Value="false"/>
<Property Name="WithXboxOne" Value="false"/>
<Property Name="WithSwitch" Value="false"/>
</Do>
<!-- The local output directory -->
<Property Name="LocalInstalledDir" Value="$(RootDir)/LocalBuilds/Engine/Windows"/>
<Property Name="LocalInstalledDirMac" Value="$(RootDir)/LocalBuilds/Engine/Mac"/>
<Property Name="LocalInstalledDirLinux" Value="$(RootDir)/LocalBuilds/Engine/Linux"/>
<!-- Directory for storing build products like the Compressed DDC, Stripped and Signed files -->
<Property Name="SavedOutput" Value="$(RootDir)/Saved"/>
<!-- Directory for storing a stripped version of UAT for installed builds -->
<Property Name="StrippedUATDir" Value="$(SavedOutput)/StrippedUAT"/>
<!-- Architectures that we build for Android -->
<Property Name="AndroidArchitectures" Value="armv7+arm64"/>
<Property Name="AndroidGPUArchitectures" Value="es2"/>
<!-- Include the script that lists files and patterns used when creating an installed build -->
<Include Script="InstalledEngineFilters.xml"/>
<!-- Base editor and tools for compile on Windows -->
<Agent Name="Editor Win64" Type="CompileWin64">
<Node Name="Update Version Files">
<Log Message="$(RootDir)"/>
<SetVersion Change="$(Change)" Branch="$(EscapedBranch)" If="$(IsBuildMachine)"/>
</Node>
<Node Name="Compile UnrealHeaderTool Win64" Requires="Update Version Files">
<Compile Target="UnrealHeaderTool" Platform="Win64" Configuration="Development" Arguments="-precompile"/>
</Node>
<Node Name="Compile UE4Editor Win64" Requires="Compile UnrealHeaderTool Win64" Produces="#UE4Editor Win64;#UE4Editor Win64 Unstripped;#UE4Editor Win64 Stripped;#UE4Editor Win64 Unsigned;#UE4Editor Win64 Signed;#UE4Editor Win64 Includes">
<Compile Target="UE4Editor" Platform="Win64" Configuration="Development" Tag="#UE4Editor Win64" Arguments="-precompile"/>
<Do If="$(EnableSymStore)">
<!-- Embed source info into the PDB files. Should be done from this machine to ensure that paths are correct. -->
<Log Message="Embedding source file information into PDB files..."/>
<Tag Files="Engine/Source/...;Engine/Plugins/..." Filter="*.c;*.h;*.cpp;*.hpp;*.inl" Except="Engine/Source/ThirdParty/..." With="#SourceFiles"/>
<SrcSrv BinaryFiles="#UE4Editor Win64" SourceFiles="#SourceFiles" Branch="$(Branch)" Change="$(Change)"/>
</Do>
<Tag Files="#UE4Editor Win64" Filter="$(Win64StripFilter)" Except="$(Win64StripExceptions)" With="#UE4Editor Win64 Unstripped"/>
<Strip BaseDir="$(RootDir)" OutputDir="$(SavedOutput)" Platform="Win64" Files="#UE4Editor Win64 Unstripped" Tag="#UE4Editor Win64 Stripped"/>
<Do If="'$(SignExecutables)' == true">
<Tag Files="#UE4Editor Win64" Filter="$(WindowsSignFilter)" With="#UE4Editor Win64 Unsigned"/>
<Copy Files="#UE4Editor Win64 Unsigned" From="$(RootDir)" To="$(SavedOutput)" Tag="#Editor_ToSign_Win64"/>
<Sign Files="#Editor_ToSign_Win64" Tag="#UE4Editor Win64 Signed"/>
</Do>
<!-- Tag the generated includes for this target -->
<Tag Files="Engine/Intermediate/Build/Win64/UE4Editor/Inc/...;Engine/Plugins/.../Intermediate/Build/Win64/UE4Editor/Inc/..." Except=".../Timestamp" With="#UE4Editor Win64 Includes"/>
</Node>
</Agent>
<!-- Base editor and tools for compile on Mac -->
<Agent Name="Editor Mac" Type="CompileMac">
<Node Name="Compile UnrealHeaderTool Mac" Requires="Update Version Files">
<Compile Target="UnrealHeaderTool" Platform="Mac" Configuration="Development" Arguments="-precompile"/>
</Node>
<Node Name="Compile UE4Editor Mac" Requires="Compile UnrealHeaderTool Mac" Produces="#UE4Editor Mac;#UE4Editor Mac Unstripped;#UE4Editor Mac Stripped;#UE4Editor Mac Unsigned;#UE4Editor Mac Signed;#UE4Editor Mac Includes">
<Compile Target="UE4Editor" Platform="Mac" Configuration="Development" Tag="#UE4Editor Mac" Arguments="-precompile"/>
<Tag Files="#UE4Editor Mac" Filter="$(MacStripFilter)" With="#UE4Editor Mac Unstripped"/>
<Strip BaseDir="$(RootDir)" OutputDir="$(SavedOutput)" Platform="Mac" Files="#UE4Editor Mac Unstripped" Tag="#UE4Editor Mac Stripped"/>
<Do If="'$(SignExecutables)' == true">
<Tag Files="#UE4Editor Mac" Filter="$(MacSignFilter)" With="#UE4Editor Mac Unsigned"/>
<Copy Files="#UE4Editor Mac Unsigned" From="$(RootDir)" To="$(SavedOutput)" Tag="#Editor_ToSign_Mac"/>
<Sign Files="#Editor_ToSign_Mac" Tag="#UE4Editor Mac Signed"/>
</Do>
<!-- Tag the generated includes for this target -->
<Tag Files="Engine/Intermediate/Build/Mac/UE4Editor/Inc/...;Engine/Plugins/.../Intermediate/Build/Mac/UE4Editor/Inc/..." Except=".../Timestamp" With="#UE4Editor Mac Includes"/>
</Node>
</Agent>
<!-- Base editor and tools for compile on Linux -->
<Agent Name="Editor Linux" Type="CompileWin64">
<Node Name="Compile UnrealHeaderTool Linux" Requires="Update Version Files">
<Compile Target="UnrealHeaderTool" Platform="Linux" Configuration="Development" Arguments="-precompile"/>
</Node>
<Node Name="Compile UE4Editor Linux" Requires="Compile UnrealHeaderTool $(HostPlatform)" Produces="#UE4Editor Linux;#UE4Editor Linux Unstripped;#UE4Editor Linux Stripped;#UE4Editor Linux Includes">
<Compile Target="UE4Editor" Platform="Linux" Configuration="Development" Tag="#UE4Editor Linux" Arguments="-precompile"/>
<Tag Files="#UE4Editor Linux" Filter="$(LinuxStripFilter)" With="#UE4Editor Linux Unstripped"/>
<Strip BaseDir="$(RootDir)" OutputDir="$(SavedOutput)" Platform="Linux" Files="#UE4Editor Linux Unstripped" Tag="#UE4Editor Linux Stripped"/>
<!-- Tag the generated includes for this target -->
<Tag Files="Engine/Intermediate/Build/Linux/B4D820EA/UE4Editor/Inc/...;Engine/Plugins/.../Intermediate/Build/Linux/B4D820EA/UE4Editor/Inc/..." Except=".../Timestamp" With="#UE4Editor Linux Includes"/>
</Node>
</Agent>
<!-- Target Platforms normally built from a Win64 machine -->
<Agent Name="Target Platforms Win64" Type="CompileWin64">
<!-- Downstream monolithics and tools Win64 -->
<Node Name="Compile UE4Game Win64" Requires="Compile UnrealHeaderTool Win64" Produces="#UE4Game Win64;#UE4Game Win64 Unstripped;#UE4Game Win64 Stripped;#UE4Game Win64 Unsigned;#UE4Game Win64 Signed;#UE4Game Win64 Includes">
<Compile Target="UE4Game" Platform="Win64" Configuration="Development" Tag="#UE4Game Win64" Arguments="-precompile -nodebuginfo"/>
<Compile Target="UE4Game" Platform="Win64" Configuration="Shipping" Tag="#UE4Game Win64" Arguments="-precompile -nodebuginfo"/>
<Do If="$(EnableSymStore)">
<!-- Embed source info into the PDB files. Should be done from this machine to ensure that paths are correct. -->
<Log Message="Embedding source file information into PDB files..."/>
<Tag Files="Engine/Source/...;Engine/Plugins/..." Filter="*.c;*.h;*.cpp;*.hpp;*.inl" Except="Engine/Source/ThirdParty/..." With="#SourceFiles"/>
<SrcSrv BinaryFiles="#UE4Game Win64" SourceFiles="#SourceFiles" Branch="$(Branch)" Change="$(Change)"/>
</Do>
<Tag Files="#UE4Game Win64" Filter="$(Win64StripFilter)" Except="$(Win64StripExceptions)" With="#UE4Game Win64 Unstripped"/>
<Strip BaseDir="$(RootDir)" OutputDir="$(SavedOutput)" Platform="Win64" Files="#UE4Game Win64 Unstripped" Tag="#UE4Game Win64 Stripped"/>
<Do If="'$(SignExecutables)' == true">
<Tag Files="#UE4Game Win64" Filter="$(WindowsSignFilter)" With="#UE4Game Win64 Unsigned"/>
<Copy Files="#UE4Game Win64 Unsigned" From="$(RootDir)" To="$(SavedOutput)" Tag="#Game_ToSign_Win64"/>
<Sign Files="#Game_ToSign_Win64" Tag="#UE4Game Win64 Signed"/>
</Do>
<!-- Tag the generated includes for this target -->
<Tag Files="Engine/Intermediate/Build/Win64/UE4/Inc/...;Engine/Plugins/.../Intermediate/Build/Win64/UE4/Inc/..." With="#UE4Game Win64 Includes"/>
</Node>
<!-- Downstream monolithics and tools Win32 -->
<Node Name="Compile UE4Game Win32" Requires="Compile UnrealHeaderTool Win64" Produces="#UE4Game Win32;#UE4Game Win32 Unstripped;#UE4Game Win32 Stripped;#UE4Game Win32 Unsigned;#UE4Game Win32 Signed;#UE4Game Win32 Includes">
<Compile Target="UE4Game" Platform="Win32" Configuration="Development" Tag="#UE4Game Win32" Arguments="-precompile -nodebuginfo"/>
<Compile Target="UE4Game" Platform="Win32" Configuration="Shipping" Tag="#UE4Game Win32" Arguments="-precompile -nodebuginfo"/>
<Do If="$(EnableSymStore)">
<!-- Embed source info into the PDB files. Should be done from this machine to ensure that paths are correct. -->
<Log Message="Embedding source file information into PDB files..."/>
<Tag Files="Engine/Source/...;Engine/Plugins/..." Filter="*.c;*.h;*.cpp;*.hpp;*.inl" Except="Engine/Source/ThirdParty/..." With="#SourceFiles"/>
<SrcSrv BinaryFiles="#UE4Game Win32" SourceFiles="#SourceFiles" Branch="$(Branch)" Change="$(Change)"/>
</Do>
<Tag Files="#UE4Game Win32" Filter="$(Win32StripFilter)" With="#UE4Game Win32 Unstripped"/>
<Strip BaseDir="$(RootDir)" OutputDir="$(SavedOutput)" Platform="Win32" Files="#UE4Game Win32 Unstripped" Tag="#UE4Game Win32 Stripped"/>
<Do If="'$(SignExecutables)' == true">
<Tag Files="#UE4Game Win32" Filter="$(WindowsSignFilter)" With="#UE4Game Win32 Unsigned"/>
<Copy Files="#UE4Game Win32 Unsigned" From="$(RootDir)" To="$(SavedOutput)" Tag="#Game_ToSign_Win32"/>
<Sign Files="#Game_ToSign_Win32" Tag="#UE4Game Win32 Signed"/>
</Do>
<!-- Tag the generated includes for this target -->
<Tag Files="Engine/Intermediate/Build/Win32/UE4/Inc/...;Engine/Plugins/.../Intermediate/Build/Win32/UE4/Inc/..." With="#UE4Game Win32 Includes"/>
</Node>
<!-- Downstream monolithics and tools Linux -->
<Node Name="Compile UE4Game Linux" Requires="Compile UnrealHeaderTool $(HostPlatform)" Produces="#UE4Game Linux;#UE4Game Linux Unstripped;#UE4Game Linux Stripped;#UE4Game Linux Includes">
<Compile Target="UE4Game" Platform="Linux" Configuration="Development" Tag="#UE4Game Linux" Arguments="-precompile"/>
<Compile Target="UE4Game" Platform="Linux" Configuration="Shipping" Tag="#UE4Game Linux" Arguments="-precompile"/>
<Tag Files="#UE4Game Linux" Filter="$(LinuxStripFilter)" With="#UE4Game Linux Unstripped"/>
<Strip BaseDir="$(RootDir)" OutputDir="$(SavedOutput)" Platform="Linux" Files="#UE4Game Linux Unstripped" Tag="#UE4Game Linux Stripped"/>
<!-- Tag the generated includes for this target -->
<Tag Files="Engine/Intermediate/Build/Linux/B4D820EA/UE4/Inc/...;Engine/Plugins/.../Intermediate/Build/Linux/B4D820EA/UE4/Inc/..." With="#UE4Game Linux Includes"/>
</Node>
<!-- Downstream monolithics and tools Android-->
<Node Name="Compile UE4Game Android" Requires="Compile UnrealHeaderTool $(HostPlatform)" Produces="#UE4Game Android;#UE4Game Android Unstripped;#UE4Game Android Stripped;#UE4Game Android Includes">
<Compile Target="UE4Game" Platform="Android" Configuration="Development" Tag="#UE4Game Android" Arguments="-precompile -architectures=$(AndroidArchitectures) -gpuarchitectures=$(AndroidGPUArchitectures)"/>
<Compile Target="UE4Game" Platform="Android" Configuration="Shipping" Tag="#UE4Game Android" Arguments="-precompile -architectures=$(AndroidArchitectures) -gpuarchitectures=$(AndroidGPUArchitectures)"/>
<Tag Files="#UE4Game Android" Filter="$(AndroidStripFilter)" With="#UE4Game Android Unstripped"/>
<Strip BaseDir="$(RootDir)" OutputDir="$(SavedOutput)" Platform="Android" Files="#UE4Game Android Unstripped" Tag="#UE4Game Android Stripped"/>
<!-- Tag the generated includes for this target -->
<Tag Files="Engine/Intermediate/Build/Android/UE4/Inc/...;Engine/Plugins/.../Intermediate/Build/Android/UE4/Inc/..." With="#UE4Game Android Includes"/>
</Node>
<!-- Downstream monolithics and tools HTML5-->
<Node Name="Compile UE4Game HTML5" Requires="Compile UnrealHeaderTool $(HostPlatform)" Produces="#UE4Game HTML5;#UE4Game HTML5 Includes">
<Compile Target="UE4Game" Platform="HTML5" Configuration="Development" Tag="#UE4Game HTML5" Arguments="-precompile"/>
<Compile Target="UE4Game" Platform="HTML5" Configuration="Shipping" Tag="#UE4Game HTML5" Arguments="-precompile"/>
<!-- Tag the generated includes for this target -->
<Tag Files="Engine/Intermediate/Build/HTML5/UE4/Inc/...;Engine/Plugins/.../Intermediate/Build/HTML5/UE4/Inc/..." With="#UE4Game HTML5 Includes"/>
</Node>
<!-- Downstream monolithics and tools PS4 -->
<Node Name="Compile UE4Game PS4" Requires="Compile UnrealHeaderTool Win64" Produces="#UE4Game PS4;#UE4Game PS4 Includes">
<Compile Target="UE4Game" Platform="PS4" Configuration="Development" Tag="#UE4Game PS4" Arguments="-precompile"/>
<Compile Target="UE4Game" Platform="PS4" Configuration="Shipping" Tag="#UE4Game PS4" Arguments="-precompile"/>
<!-- Tag the generated includes for this target -->
<Tag Files="Engine/Intermediate/Build/PS4/UE4/Inc/...;Engine/Plugins/.../Intermediate/Build/PS4/UE4/Inc/..." With="#UE4Game PS4 Includes"/>
</Node>
<!-- Downstream monolithics and tools XboxOne -->
<Node Name="Compile UE4Game XboxOne" Requires="Compile UnrealHeaderTool Win64" Produces="#UE4Game XboxOne;#UE4Game XboxOne Includes">
<Compile Target="UE4Game" Platform="XboxOne" Configuration="Development" Tag="#UE4Game XboxOne" Arguments="-precompile"/>
<Compile Target="UE4Game" Platform="XboxOne" Configuration="Shipping" Tag="#UE4Game XboxOne" Arguments="-precompile"/>
<!-- Tag the generated includes for this target -->
<Tag Files="Engine/Intermediate/Build/XboxOne/UE4/Inc/...;Engine/Plugins/.../Intermediate/Build/XboxOne/UE4/Inc/..." With="#UE4Game XboxOne Includes"/>
</Node>
<!-- Downstream monolithics Switch -->
<Node Name="Compile UE4Game Switch" Requires="Compile UnrealHeaderTool Win64" Produces="#UE4Game Switch;#UE4Game Switch Includes" If="'$(WithSwitch)' == true">
<Compile Target="UE4Game" Platform="Switch" Configuration="Development" Tag="#UE4Game Switch" Arguments="-precompile"/>
<Compile Target="UE4Game" Platform="Switch" Configuration="Shipping" Tag="#UE4Game Switch" Arguments="-precompile"/>
<!-- Tag the generated includes for this target -->
<Tag Files="Engine/Intermediate/Build/Switch/UE4/Inc/...;Engine/Plugins/.../Intermediate/Build/Switch/UE4/Inc/..." With="#UE4Game Switch Includes"/>
</Node>
</Agent>
<!-- Target Platforms normally built from a Mac machine -->
<Agent Name="Target Platforms Mac" Type="CompileMac">
<!-- Downstream monolithics and tools Mac -->
<Node Name="Compile UE4Game Mac" Requires="Compile UnrealHeaderTool Mac" Produces="#UE4Game Mac;#UE4Game Mac Unstripped;#UE4Game Mac Stripped;#UE4Game Mac Unsigned;#UE4Game Mac Signed;#UE4Game Mac Includes">
<Compile Target="UE4Game" Platform="Mac" Configuration="Development" Tag="#UE4Game Mac" Arguments="-precompile"/>
<Compile Target="UE4Game" Platform="Mac" Configuration="Shipping" Tag="#UE4Game Mac" Arguments="-precompile"/>
<Tag Files="#UE4Game Mac" Filter="$(MacStripFilter)" With="#UE4Game Mac Unstripped"/>
<Strip BaseDir="$(RootDir)" OutputDir="$(SavedOutput)" Platform="Mac" Files="#UE4Game Mac Unstripped" Tag="#UE4Game Mac Stripped"/>
<Do If="'$(SignExecutables)' == true">
<Tag Files="#UE4Game Mac" Filter="$(MacSignFilter)" With="#UE4Game Mac Unsigned"/>
<Copy Files="#UE4Game Mac Unsigned" From="$(RootDir)" To="$(SavedOutput)" Tag="#Game_ToSign_Mac"/>
<Sign Files="#Game_ToSign_Mac" Tag="#UE4Game Mac Signed"/>
</Do>
<!-- Tag the generated includes for this target -->
<Tag Files="Engine/Intermediate/Build/Mac/UE4/Inc/...;Engine/Plugins/.../Intermediate/Build/Mac/UE4/Inc/..." With="#UE4Game Mac Includes"/>
</Node>
<!-- Downstream monolithics and tools IOS-->
<Node Name="Compile UE4Game IOS" Requires="Compile UnrealHeaderTool Mac" Produces="#UE4Game IOS;#UE4Game IOS Unstripped;#UE4Game IOS Stripped;#UE4Game IOS Includes">
<Compile Target="UE4Game" Platform="IOS" Configuration="Development" Tag="#UE4Game IOS" Arguments="-precompile"/>
<Compile Target="UE4Game" Platform="IOS" Configuration="Shipping" Tag="#UE4Game IOS" Arguments="-precompile"/>
<Tag Files="#UE4Game IOS" Filter="$(IOSStripFilter)" With="#UE4Game IOS Unstripped"/>
<Strip BaseDir="$(RootDir)" OutputDir="$(SavedOutput)" Platform="IOS" Files="#UE4Game IOS Unstripped" Tag="#UE4Game IOS Stripped"/>
<!-- Tag the generated includes for this target -->
<Tag Files="Engine/Intermediate/Build/IOS/UE4/Inc/...;Engine/Plugins/.../Intermediate/Build/IOS/UE4/Inc/..." With="#UE4Game IOS Includes"/>
</Node>
<!-- Downstream monolithics and tools TVOS-->
<Node Name="Compile UE4Game TVOS" Requires="Compile UnrealHeaderTool Mac" Produces="#UE4Game TVOS;#UE4Game TVOS Unstripped;#UE4Game TVOS Stripped;#UE4Game TVOS Includes">
<Compile Target="UE4Game" Platform="TVOS" Configuration="Development" Tag="#UE4Game TVOS" Arguments="-precompile"/>
<Compile Target="UE4Game" Platform="TVOS" Configuration="Shipping" Tag="#UE4Game TVOS" Arguments="-precompile"/>
<Tag Files="#UE4Game TVOS" Filter="$(TVOSStripFilter)" With="#UE4Game TVOS Unstripped"/>
<Strip BaseDir="$(RootDir)" OutputDir="$(SavedOutput)" Platform="TVOS" Files="#UE4Game TVOS Unstripped" Tag="#UE4Game TVOS Stripped"/>
<!-- Tag the generated includes for this target -->
<Tag Files="Engine/Intermediate/Build/TVOS/UE4/Inc/...;Engine/Plugins/.../Intermediate/Build/TVOS/UE4/Inc/..." With="#UE4Game TVOS Includes"/>
</Node>
</Agent>
<Agent Name="Tools Group Win64" Type="CompileWin64">
<Node Name="Build Tools Win64" Requires="Compile UnrealHeaderTool Win64">
<Compile Target="CrashReportClient" Configuration="Shipping" Platform="Win64" Tag="#Build Tools Win64"/>
<Compile Target="CrashReportClient" Configuration="Shipping" Platform="Win32" Tag="#Build Tools Win64"/>
<Compile Target="UnrealWatchdog" Configuration="Shipping" Platform="Win64" Tag="#Build Tools Win64"/>
<Compile Target="ShaderCompileWorker" Configuration="Development" Platform="Win64" Tag="#Build Tools Win64"/>
<Compile Target="UnrealCEFSubProcess" Configuration="Development" Platform="Win32" Tag="#Build Tools Win64"/>
<Compile Target="UnrealCEFSubProcess" Configuration="Development" Platform="Win64" Tag="#Build Tools Win64"/>
<Compile Target="UnrealFrontend" Configuration="Development" Platform="Win64" Tag="#Build Tools Win64"/>
<Compile Target="UnrealLightmass" Configuration="Development" Platform="Win64" Tag="#Build Tools Win64"/>
<Compile Target="UnrealPak" Configuration="Development" Platform="Win64" Tag="#Build Tools Win64"/>
<Compile Target="BootstrapPackagedGame" Configuration="Shipping" Platform="Win32" Tag="#Build Tools Win64"/>
<Compile Target="BootstrapPackagedGame" Configuration="Shipping" Platform="Win64" Tag="#Build Tools Win64"/>
<Compile Target="BuildPatchTool" Configuration="Shipping" Platform="Win64" Tag="#Build Tools Win64"/>
<Do If="$(EnableSymStore)">
<!-- Embed source info into the PDB files. Should be done from this machine to ensure that paths are correct. -->
<Log Message="Embedding source file information into PDB files..."/>
<Tag Files="Engine/Source/...;Engine/Plugins/..." Filter="*.c;*.h;*.cpp;*.hpp;*.inl" Except="Engine/Source/ThirdParty/..." With="#SourceFiles"/>
<SrcSrv BinaryFiles="#Build Tools Win64" SourceFiles="#SourceFiles" Branch="$(Branch)" Change="$(Change)"/>
</Do>
</Node>
<Node Name="Build Tools CS">
<Do If="'$(HostPlatform)' == 'Win64'">
<CsCompile Project="Engine/Source/Programs/UnrealSwarm/SwarmCoordinator/SwarmCoordinator.csproj" Configuration="Development" Platform="AnyCPU" Tag="#Build Tools CS" TagReferences="#Build Tools CS"/>
<CsCompile Project="Engine/Source/Programs/UnrealSwarm/Agent/Agent.csproj" Configuration="Development" Platform="AnyCPU" Tag="#Build Tools CS" TagReferences="#Build Tools CS"/>
<CsCompile Project="Engine/Source/Editor/SwarmInterface/DotNET/SwarmInterface.csproj" Configuration="Development" Platform="AnyCPU" Tag="#Build Tools CS" TagReferences="#Build Tools CS"/>
<CsCompile Project="Engine/Source/Programs/PS4/PS4DevKitUtil/PS4DevKitUtil.csproj" Configuration="Development" Platform="AnyCPU" Tag="#Build Tools CS" TagReferences="#Build Tools CS" If="'$(WithPS4)' == true"/>
<CsCompile Project="Engine/Source/Programs/PS4/PS4SymbolTool/PS4SymbolTool.csproj" Configuration="Release" Platform="AnyCPU" Tag="#Build Tools CS" TagReferences="#Build Tools CS" If="'$(WithPS4)' == true"/>
<!-- TODO: Change these projects so that they can be compiled on non-windows platforms (currently use WinForms) -->
<CsCompile Project="Engine/Source/Programs/UnrealControls/UnrealControls.csproj" Configuration="Development" Platform="AnyCPU" Tag="#Build Tools CS" TagReferences="#Build Tools CS"/>
<CsCompile Project="Engine/Source/Programs/IOS/iPhonePackager/iPhonePackager.csproj" Configuration="Development" Platform="AnyCPU" Arguments="/verbosity:minimal /target:Rebuild" Tag="#Build Tools CS" TagReferences="#Build Tools CS"/>
</Do>
<CsCompile Project="Engine/Source/Programs/NetworkProfiler/NetworkProfiler/NetworkProfiler.csproj" Configuration="Development" Platform="AnyCPU" Tag="#Build Tools CS" TagReferences="#Build Tools CS" If="'$(HostPlatform)' != 'Linux'"/>
<CsCompile Project="Engine/Source/Programs/IOS/DeploymentServer/DeploymentServer.csproj" Configuration="Development" Platform="AnyCPU" Arguments="/verbosity:minimal /target:Rebuild" Tag="#Build Tools CS" TagReferences="#Build Tools CS"/>
<CsCompile Project="Engine/Source/Programs/IOS/MobileDeviceInterface/MobileDeviceInterface.csproj" Configuration="Development" Platform="AnyCPU" Arguments="/verbosity:minimal /target:Rebuild" Tag="#Build Tools CS" TagReferences="#Build Tools CS"/>
<CsCompile Project="Engine/Source/Programs/IOS/DeploymentInterface/DeploymentInterface.csproj" Configuration="Development" Platform="AnyCPU" Arguments="/verbosity:minimal /target:Rebuild" Tag="#Build Tools CS" TagReferences="#Build Tools CS"/>
<CsCompile Project="Engine/Source/Programs/HTML5/HTML5LaunchHelper/HTML5LaunchHelper.csproj" Configuration="Development" Platform="AnyCPU" Arguments="/verbosity:minimal /target:Rebuild" Tag="#Build Tools CS" TagReferences="#Build Tools CS"/>
</Node>
<Node Name="Make Feature Packs" Requires="Update Version Files">
<!--Delete any pre-existing feature packs-->
<Delete Files="FeaturePacks/..."/>
<ForEach Name="TemplateName" Values="FP_FirstPerson;FP_FirstPersonBP;TP_2DSideScroller;TP_2DSideScrollerBP;TP_Flying;TP_FlyingBP;TP_Puzzle;TP_PuzzleBP;TP_Rolling;TP_RollingBP;TP_SideScroller;TP_SideScrollerBP;TP_ThirdPerson;TP_ThirdPersonBP;TP_TopDown;TP_TopDownBP;TP_TwinStick;TP_TwinStickBP;TP_Vehicle;TP_VehicleAdv;TP_VehicleAdvBP;TP_VehicleBP;TP_VirtualRealityBP">
<PakFile Output="FeaturePacks/$(TemplateName).upack" Files="" ResponseFile="Templates/$(TemplateName)/contents.txt"/>
</ForEach>
<ForEach Name="SampleName" Values="MobileStarterContent;StarterContent">
<PakFile Output="FeaturePacks/$(SampleName).upack" Files="" ResponseFile="Samples/$(SampleName)/contents.txt"/>
</ForEach>
</Node>
<Node Name="Build Tools Linux" Requires="Compile UnrealHeaderTool $(HostPlatform)">
<Compile Target="CrashReportClient" Platform="Linux" Configuration="Shipping"/>
<Compile Target="ShaderCompileWorker" Configuration="Development" Platform="Linux" Tag="#Build Tools Linux"/>
</Node>
<!-- Compile a version of UAT with all confidential exceptions stripped out -->
<Node Name="Compile Stripped UAT" Requires="Update Version Files" Produces="#StrippedUAT">
<Delete Files="$(StrippedUATDir)/..."/>
<!-- Copy Source and referenced libraries to a new location with Confidential folders removed-->
<Tag Files="Engine/Source/Programs/AutomationTool/..." Filter="*.csproj" Except="$(ConfidentialExceptions)" With="#UAT Projects"/>
<CsCompile Project="#UAT Projects" Configuration="Development" Platform="AnyCPU" TagReferences="#UATReferences" EnumerateOnly="true"/>
<Tag Files="Engine/Source/Programs/...;#UATReferences" Except="$(ConfidentialExceptions)" With="#RedistUATSource"/>
<Copy Files="#RedistUATSource" From="$(RootDir)" To="$(StrippedUATDir)"/>
<!-- Recompile UAT with no confidential code included -->
<Tag Files="$(StrippedUATDir)/Engine/Source/Programs/AutomationTool/..." Filter="*.csproj" With="#RedistUATProjects"/>
<CsCompile Project="#RedistUATProjects" Configuration="Development" Platform="AnyCPU" Tag="#StrippedUAT" TagReferences="#StrippedUAT"/>
<!-- Strip and Sign the rebuilt binaries -->
<Tag Files="#StrippedUAT" Filter="$(Win64StripFilter)" Except="$(Win64StripExceptions)" With="#UnstrippedUAT"/>
<Strip Files="#UnstrippedUAT" Platform="Win64" If="'$(HostPlatform)' == 'Win64'"/>
<Do If="'$(SignExecutables)' == true">
<Tag Files="#StrippedUAT" Filter="$(WindowsSignFilter)" Except="$(SignExceptions)" With="#UnsignedUAT"/>
<Sign Files="#UnsignedUAT"/>
</Do>
</Node>
</Agent>
<Agent Name="Tools Group Mac" Type="CompileMac">
<Node Name="Build Tools Mac" Requires="Compile UnrealHeaderTool Mac">
<Compile Target="CrashReportClient" Configuration="Shipping" Platform="Mac" Tag="#Build Tools Mac"/>
<Compile Target="ShaderCompileWorker" Configuration="Development" Platform="Mac" Tag="#Build Tools Mac"/>
<Compile Target="UnrealCEFSubProcess" Configuration="Development" Platform="Mac" Tag="#Build Tools Mac"/>
<Compile Target="UnrealFrontend" Configuration="Development" Platform="Mac" Tag="#Build Tools Mac"/>
<Compile Target="UnrealLightmass" Configuration="Development" Platform="Mac" Tag="#Build Tools Mac"/>
<Compile Target="UnrealPak" Configuration="Development" Platform="Mac" Tag="#Build Tools Mac"/>
<Compile Target="BuildPatchTool" Configuration="Shipping" Platform="Mac" Tag="#Build Tools Mac"/>
<Compile Target="DsymExporter" Configuration="Development" Platform="Mac" Tag="#Build Tools Mac"/>
<Compile Target="UE4EditorServices" Configuration="Development" Platform="Mac" Tag="#Build Tools Mac"/>
<Compile Target="UnrealAtoS" Configuration="Development" Platform="Mac" Tag="#Build Tools Mac"/>
</Node>
</Agent>
<Property Name="DDCPlatformsWin64" Value="Windows"/>
<Property Name="DDCPlatformsWin64" Value="$(DDCPlatformsWin64)+WindowsNoEditor" If="'$(WithWin64)' == true Or '$(WithWin32)' == true"/>
<Do If="'$(HostPlatformDDCOnly)' == false">
<Property Name="DDCPlatformsWin64" Value="$(DDCPlatformsWin64)+Android_ATC" If="'$(WithAndroid)' == true"/>
<Property Name="DDCPlatformsWin64" Value="$(DDCPlatformsWin64)+IOS" If="'$(WithIOS)' == true"/>
<Property Name="DDCPlatformsWin64" Value="$(DDCPlatformsWin64)+TVOS" If="'$(WithTVOS)' == true"/>
<Property Name="DDCPlatformsWin64" Value="$(DDCPlatformsWin64)+LinuxNoEditor" If="'$(WithLinux)' == true"/>
<Property Name="DDCPlatformsWin64" Value="$(DDCPlatformsWin64)+HTML5" If="'$(WithHTML5)' == true"/>
<Property Name="DDCPlatformsWin64" Value="$(DDCPlatformsWin64)+PS4" If="'$(WithPS4)' == true"/>
<Property Name="DDCPlatformsWin64" Value="$(DDCPlatformsWin64)+XboxOne" If="'$(WithXboxOne)' == true"/>
<Property Name="DDCPlatformsWin64" Value="$(DDCPlatformsWin64)+Switch" If="'$(WithSwitch)' == true"/>
</Do>
<Agent Name="DDC Group Win64" Type="Win64">
<Node Name="Build DDC Win64" Requires="#UE4Editor Win64;Build Tools Win64;Build Tools CS" Produces="#CompressedDDCWin64">
<!-- Get our temp dir -->
<Property Name="DDCDir" Value="$(RootDir)\LocalBuilds\InstalledDDC"/>
<Property Name="SavedDir" Value="$(SavedOutput)\Installed\Win64"/>
<!-- Delete all the old files -->
<Delete Files="$(DDCDir)\..."/>
<!-- Build up a list of files needed to build DDC -->
<CsCompile Project="Engine/Source/Programs/UnrealBuildTool/UnrealBuildTool.csproj" Configuration="Development" Platform="AnyCPU" Tag="#ToCopy" TagReferences="#ToCopy" EnumerateOnly="true"/>
<Tag Files="#Compile UnrealHeaderTool Win64;#UE4Editor Win64;#Build Tools Win64;#Build Tools CS" With="#ToCopy"/>
<Tag Files="#ToCopy" Filter="*.target" With="#TargetReceipts"/>
<TagReceipt Files="#TargetReceipts" RuntimeDependencies="true" With="#ToCopy"/>
<Tag Files="Engine\Content\..." Except="*.psd;*.pdn;*.fbx;*.po" With="#ToCopy"/>
<Tag Files="Engine\Config\..." Except="*.vdf" With="#ToCopy"/>
<Tag Files="Engine\Plugins\....uplugin;Engine\Plugins\...\Config\...;Engine\Plugins\...\Content\...;Engine\Plugins\...\Resources\...;Engine\Plugins\...\Templates\..." Except="Engine\Plugins\Runtime\TwitchLiveStreaming\...;Engine\Plugins\...\Binaries/Mac\..." With="#ToCopy"/>
<Tag Files="Engine\Shaders\..." With="#ToCopy"/>
<Tag Files="Engine\Binaries\DotNET\Ionic.Zip.Reduced.dll" With="#ToCopy"/>
<Tag Files="Engine\Binaries\DotNET\OneSky.dll" With="#ToCopy"/>
<Tag Files="Templates\TemplateResources\..." With="#ToCopy"/>
<!-- Filter out the files not needed to build DDC. Removing confidential folders can affect DDC keys, so we want to be sure that we're making DDC with a build that can use it. -->
<Tag Files="#ToCopy" Except="$(ConfidentialExceptions);.../Source/...;.../Intermediate/..." With="#FilteredCopyList"/>
<!-- Additional required files that would be removed by confidential filter -->
<Tag Files="Engine\Build\NotForLicensees\EpicInternal.txt" With="#FilteredCopyList" If="Exists('Engine\Build\NotForLicensees\EpicInternal.txt')"/>
<Tag Files="Engine\Binaries\...\*DDCUtils*" With="#FilteredCopyList"/>
<!-- Copy everything to a temporary directory -->
<Copy From="$(RootDir)" To="$(DDCDir)" Files="#FilteredCopyList"/>
<Command Name="BuildDerivedDataCache" Arguments="-TempDir=$(DDCDir) -FeaturePacks=$(ProjectsToBuildDDC) -TargetPlatforms=$(DDCPlatformsWin64) -HostPlatform=Win64 -SavedDir=$(SavedDir)"/>
<Tag Files="$(SavedDir)/Engine/DerivedDataCache/Compressed.ddp" With="#CompressedDDCWin64"/>
</Node>
</Agent>
<Property Name="DDCPlatformsMac" Value="Mac"/>
<Property Name="DDCPlatformsMac" Value="$(DDCPlatformsMac)+MacNoEditor" If="'$(WithMac)' == true"/>
<Do If="'$(HostPlatformDDCOnly)' == false">
<Property Name="DDCPlatformsMac" Value="$(DDCPlatformsMac)+Android_ATC" If="'$(WithAndroid)' == true"/>
<Property Name="DDCPlatformsMac" Value="$(DDCPlatformsMac)+IOS" If="'$(WithIOS)' == true"/>
<Property Name="DDCPlatformsMac" Value="$(DDCPlatformsMac)+TVOS" If="'$(WithTVOS)' == true"/>
<Property Name="DDCPlatformsMac" Value="$(DDCPlatformsMac)+HTML5" If="'$(WithHTML5)' == true"/>
</Do>
<Agent Name="DDC Group Mac" Type="Mac">
<Node Name="Build DDC Mac" Requires="#UE4Editor Mac;Build Tools Mac;Build Tools CS" Produces="#CompressedDDCMac">
<!-- Get our temp dir -->
<Property Name="DDCDir" Value="$(RootDir)/LocalBuilds/InstalledDDC"/>
<Property Name="SavedDir" Value="$(SavedOutput)/Installed/Mac"/>
<!-- Delete all the old files -->
<Delete Files="$(DDCDir)/..."/>
<!-- Build up a list of files needed to build DDC -->
<CsCompile Project="Engine/Source/Programs/UnrealBuildTool/UnrealBuildTool.csproj" Configuration="Development" Platform="AnyCPU" Tag="#ToCopy" TagReferences="#ToCopy" EnumerateOnly="true"/>
<Tag Files="#Compile UnrealHeaderTool Mac;#UE4Editor Mac;#Build Tools Mac;#Build Tools CS" With="#ToCopy"/>
<Tag Files="#ToCopy" Filter="*.target" With="#TargetReceipts"/>
<TagReceipt Files="#TargetReceipts" RuntimeDependencies="true" With="#ToCopy"/>
<Tag Files="Engine/Content/..." Except="*.psd;*.pdn;*.fbx;*.po" With="#ToCopy"/>
<Tag Files="Engine/Config/..." Except="*.vdf" With="#ToCopy"/>
<Tag Files="Engine/Plugins/....uplugin;Engine/Plugins/.../Config/...;Engine/Plugins/.../Content/...;Engine/Plugins/.../Resources/...;Engine/Plugins/.../Templates/..." Except="Engine/Plugins/Runtime/TwitchLiveStreaming/...;Engine/Plugins/.../Binaries/Win64/...;Engine/Plugins/.../Binaries/Win32/..." With="#ToCopy"/>
<Tag Files="Engine/Shaders/..." With="#ToCopy"/>
<Tag Files="Engine/Binaries/DotNET/Ionic.Zip.Reduced.dll" With="#ToCopy"/>
<Tag Files="Engine/Binaries/DotNET/OneSky.dll" With="#ToCopy"/>
<Tag Files="Templates/TemplateResources/..." With="#ToCopy"/>
<!-- Filter out the files not needed to build DDC. Removing confidential folders can affect DDC keys, so we want to be sure that we're making DDC with a build that can use it. -->
<Tag Files="#ToCopy" Except="$(ConfidentialExceptions);.../Source/...;.../Intermediate/..." With="#FilteredCopyList"/>
<!-- Additional required files that would be removed by confidential filter -->
<Tag Files="Engine/Build/NotForLicensees/EpicInternal.txt" With="#FilteredCopyList" If="Exists('Engine/Build/NotForLicensees/EpicInternal.txt')"/>
<Tag Files="Engine/Binaries/.../*DDCUtils*" With="#FilteredCopyList"/>
<!-- Copy everything to a temporary directory -->
<Copy From="$(RootDir)" To="$(DDCDir)" Files="#FilteredCopyList"/>
<Command Name="BuildDerivedDataCache" Arguments="-TempDir=$(DDCDir) -FeaturePacks=$(ProjectsToBuildDDC) -TargetPlatforms=$(DDCPlatformsMac) -HostPlatform=Mac -SavedDir=$(SavedDir)"/>
<Tag Files="$(SavedDir)/Engine/DerivedDataCache/Compressed.ddp" With="#CompressedDDCMac"/>
</Node>
</Agent>
<Property Name="DDCPlatformsLinux" Value="Linux"/>
<Property Name="DDCPlatformsLinux" Value="$(DDCPlatformsLinux)+LinuxNoEditor" If="'$(WithLinux)' == true"/>
<Agent Name="DDC Group Linux" Type="Linux">
<Node Name="Build DDC Linux" Requires="#UE4Editor Linux;Build Tools Linux;Build Tools CS" Produces="#CompressedDDCLinux">
<!-- Get our temp dir -->
<Property Name="DDCDir" Value="$(RootDir)/LocalBuilds/InstalledDDC"/>
<Property Name="SavedDir" Value="$(SavedOutput)/Installed/Linux"/>
<!-- Delete all the old files -->
<Delete Files="$(DDCDir)/..."/>
<!-- Build up a list of files needed to build DDC -->
<CsCompile Project="Engine/Source/Programs/UnrealBuildTool/UnrealBuildTool.csproj" Configuration="Development" Platform="AnyCPU" Tag="#ToCopy" TagReferences="#ToCopy" EnumerateOnly="true"/>
<Tag Files="#Compile UnrealHeaderTool $(HostPlatform);#UE4Editor Linux;#Build Tools Linux;#Build Tools CS" With="#ToCopy"/>
<Tag Files="#ToCopy" Filter="*.target" With="#TargetReceipts"/>
<TagReceipt Files="#TargetReceipts" RuntimeDependencies="true" With="#ToCopy"/>
<Tag Files="Engine/Content/..." Except="*.psd;*.pdn;*.fbx;*.po" With="#ToCopy"/>
<Tag Files="Engine/Config/..." Except="*.vdf" With="#ToCopy"/>
<Tag Files="Engine/Plugins/....uplugin;Engine/Plugins/.../Content/...;Engine/Plugins/.../Resources/...;Engine/Plugins/.../Templates/..." Except="Engine/Plugins/Runtime/TwitchLiveStreaming/...;Engine/Plugins/.../Binaries/Win64/...;Engine/Plugins/.../Binaries/Win32/...;Engine/Plugins/.../Binaries/Mac/..." With="#ToCopy"/>
<Tag Files="Engine/Shaders/..." With="#ToCopy"/>
<Tag Files="Engine/Binaries/DotNET/Ionic.Zip.Reduced.dll" With="#ToCopy"/>
<Tag Files="Engine/Binaries/DotNET/OneSky.dll" With="#ToCopy"/>
<Tag Files="Templates/TemplateResources/..." With="#ToCopy"/>
<!-- Filter out the files not needed to build DDC. Removing confidential folders can affect DDC keys, so we want to be sure that we're making DDC with a build that can use it. -->
<Tag Files="#ToCopy" Except="$(ConfidentialExceptions);.../Source/...;.../Intermediate/..." With="#FilteredCopyList"/>
<!-- Additional required files that would be removed by confidential filter -->
<Tag Files="Engine/Build/NotForLicensees/EpicInternal.txt" With="#FilteredCopyList" If="Exists('Engine/Build/NotForLicensees/EpicInternal.txt')"/>
<Tag Files="Engine/Binaries/.../*DDCUtils*" With="#FilteredCopyList"/>
<!-- Copy everything to a temporary directory -->
<Copy From="$(RootDir)" To="$(DDCDir)" Files="#FilteredCopyList"/>
<Command Name="BuildDerivedDataCache" Arguments="-TempDir=$(DDCDir) -FeaturePacks=$(ProjectsToBuildDDC) -TargetPlatforms=$(DDCPlatformsLinux) -HostPlatform=Linux -SavedDir=$(SavedDir)"/>
<Tag Files="$(SavedDir)/Engine/DerivedDataCache/Compressed.ddp" With="#CompressedDDCLinux"/>
</Node>
</Agent>
<Agent Name="Installed Build Group Win64" Type="Win64">
<!-- Build up a list of requirements as some can be optional -->
<Property Name="InstalledRequirements" Value="Compile UnrealHeaderTool Win64;#UE4Editor Win64;#UE4Editor Win64 Unstripped;#UE4Editor Win64 Stripped;#UE4Editor Win64 Unsigned;#UE4Editor Win64 Signed;#UE4Editor Win64 Includes;#Build Tools Win64;#Build Tools CS;#StrippedUAT"/>
<!-- Optional Target Platform requirements -->
<Property Name="InstalledRequirements" Value="$(InstalledRequirements);#UE4Game Win64;#UE4Game Win64 Unstripped;#UE4Game Win64 Stripped;#UE4Game Win64 Unsigned;#UE4Game Win64 Signed;#UE4Game Win64 Includes" If="'$(WithWin64)' == true"/>
<Property Name="InstalledRequirements" Value="$(InstalledRequirements);#UE4Game Win32;#UE4Game Win32 Unstripped;#UE4Game Win32 Stripped;#UE4Game Win32 Unsigned;#UE4Game Win32 Signed;#UE4Game Win32 Includes" If="'$(WithWin32)' == true"/>
<Property Name="InstalledRequirements" Value="$(InstalledRequirements);#UE4Game Android;#UE4Game Android Unstripped;#UE4Game Android Stripped;#UE4Game Android Includes" If="'$(WithAndroid)' == true"/>
<Property Name="InstalledRequirements" Value="$(InstalledRequirements);#UE4Game IOS;#UE4Game IOS Unstripped;#UE4Game IOS Stripped;#UE4Game IOS Includes" If="'$(WithIOS)' == true"/>
<Property Name="InstalledRequirements" Value="$(InstalledRequirements);#UE4Game TVOS;#UE4Game TVOS Unstripped;#UE4Game TVOS Stripped;#UE4Game TVOS Includes" If="'$(WithTVOS)' == true"/>
<Property Name="InstalledRequirements" Value="$(InstalledRequirements);#UE4Game Linux;#UE4Game Linux Unstripped;#UE4Game Linux Stripped;#UE4Game Linux Includes;#Build Tools Linux" If="'$(WithLinux)' == true"/>
<Property Name="InstalledRequirements" Value="$(InstalledRequirements);#UE4Game HTML5;#UE4Game HTML5 Includes" If="'$(WithHTML5)' == true"/>
<Property Name="InstalledRequirements" Value="$(InstalledRequirements);#UE4Game PS4;#UE4Game PS4 Includes" If="'$(WithPS4)' == true"/>
<Property Name="InstalledRequirements" Value="$(InstalledRequirements);#UE4Game XboxOne;#UE4Game XboxOne Includes" If="'$(WithXboxOne)' == true"/>
<Property Name="InstalledRequirements" Value="$(InstalledRequirements);#UE4Game Switch;#UE4Game Switch Includes" If="'$(WithSwitch)' == true"/>
<Property Name="InstalledRequirements" Value="$(InstalledRequirements);#CompressedDDCWin64" If="'$(WithDDC)' == true"/>
<!-- Feature packs -->
<Property Name="InstalledRequirements" Value="$(InstalledRequirements);Make Feature Packs"/>
<!-- Filters the build products required for an installed build into groups depending on whether they need to be stripped, signed or just copied -->
<Node Name="Make Installed Build Win64" Requires="$(InstalledRequirements)" Produces="#Installed Build Win64 Files">
<!-- Clear any existing files from the final location -->
<Delete Files="$(LocalInstalledDir)\..."/>
<!-- Define filter and exception properties for the installed build -->
<Property Name="CopyInstalledFilter" Value="$(CopyEditorFilter)"/>
<Property Name="CopyInstalledExceptions" Value="$(CopyEditorExceptions)"/>
<!-- Tag files that always need to be part of an installed build -->
<Tag Files="#Compile UnrealHeaderTool Win64" With="#Installed Win64"/>
<Tag Files="#UE4Editor Win64;#UE4Editor Win64 Includes" Except="#UE4Editor Win64 Unstripped;#UE4Editor Win64 Unsigned" With="#Installed Win64"/>
<Tag Files="#UE4Editor Win64 Stripped;#UE4Editor Win64 Signed" With="#Saved Output"/>
<Tag Files="#Build Tools Win64;#Build Tools CS;#Make Feature Packs" With="#Installed Win64"/>
<!-- Tag enabled target platforms -->
<Do If="'$(WithWin64)' == true">
<Tag Files="#UE4Game Win64;#UE4Game Win64 Includes" Except="#UE4Game Win64 Unstripped;#UE4Game Win64 Unsigned" With="#Installed Win64"/>
<Tag Files="#UE4Game Win64 Stripped;#UE4Game Win64 Signed" With="#Saved Output"/>
<Property Name="CopyInstalledFilter" Value="$(CopyInstalledFilter);$(CopyWin64Filter)"/>
<Property Name="CopyInstalledExceptions" Value="$(CopyInstalledExceptions);$(CopyWin64Exceptions)"/>
</Do>
<Do If="'$(WithWin32)' == true">
<Tag Files="#UE4Game Win32;#UE4Game Win32 Includes" Except="#UE4Game Win32 Unstripped;#UE4Game Win32 Unsigned" With="#Installed Win64"/>
<Tag Files="#UE4Game Win32 Stripped;#UE4Game Win32 Signed" With="#Saved Output"/>
<Property Name="CopyInstalledFilter" Value="$(CopyInstalledFilter);$(CopyWin32Filter)"/>
<Property Name="CopyInstalledExceptions" Value="$(CopyInstalledExceptions);$(CopyWin32Exceptions)"/>
</Do>
<Do If="'$(WithAndroid)' == true">
<Tag Files="#UE4Game Android;#UE4Game Android Includes" Except="#UE4Game Android Unstripped" With="#Installed Win64"/>
<Tag Files="#UE4Game Android Stripped" With="#Saved Output"/>
<Property Name="CopyInstalledFilter" Value="$(CopyInstalledFilter);$(CopyAndroidFilter)"/>
<Property Name="CopyInstalledExceptions" Value="$(CopyInstalledExceptions);$(CopyAndroidExceptions)"/>
</Do>
<Do If="'$(WithIOS)' == true">
<Tag Files="#UE4Game IOS;#UE4Game IOS Includes" Except="#UE4Game IOS Unstripped" With="#Installed Win64"/>
<Tag Files="#UE4Game IOS Stripped" With="#Saved Output"/>
<Property Name="CopyInstalledFilter" Value="$(CopyInstalledFilter);$(CopyIOSFilter)"/>
<Property Name="CopyInstalledExceptions" Value="$(CopyInstalledExceptions);$(CopyIOSExceptions)"/>
</Do>
<Do If="'$(WithTVOS)' == true">
<Tag Files="#UE4Game TVOS;#UE4Game TVOS Includes" Except="#UE4Game TVOS Unstripped" With="#Installed Win64"/>
<Tag Files="#UE4Game TVOS Stripped" With="#Saved Output"/>
<Property Name="CopyInstalledFilter" Value="$(CopyInstalledFilter);$(CopyTVOSFilter)"/>
<Property Name="CopyInstalledExceptions" Value="$(CopyInstalledExceptions);$(CopyTVOSExceptions)"/>
</Do>
<Do If="'$(WithLinux)' == true">
<Tag Files="#UE4Game Linux;#UE4Game Linux Includes;#Build Tools Linux" Except="#UE4Game Linux Unstripped" With="#Installed Win64"/>
<Tag Files="#UE4Game Linux Stripped" With="#Saved Output"/>
<Property Name="CopyInstalledFilter" Value="$(CopyInstalledFilter);$(CopyLinuxFilter)"/>
<Property Name="CopyInstalledExceptions" Value="$(CopyInstalledExceptions);$(CopyLinuxExceptions)"/>
</Do>
<Do If="'$(WithHTML5)' == true">
<Tag Files="#UE4Game HTML5;#UE4Game HTML5 Includes" With="#Installed Win64"/>
<Property Name="CopyInstalledFilter" Value="$(CopyInstalledFilter);$(CopyHTML5Filter)"/>
<Property Name="CopyInstalledExceptions" Value="$(CopyInstalledExceptions);$(CopyHTML5Exceptions)"/>
</Do>
<Do If="'$(WithPS4)' == true">
<Tag Files="#UE4Game PS4;#UE4Game PS4 Includes" With="#Installed Win64"/>
<Property Name="CopyInstalledFilter" Value="$(CopyInstalledFilter);$(CopyPS4Filter)"/>
<Property Name="CopyInstalledExceptions" Value="$(CopyInstalledExceptions);$(CopyPS4Exceptions)"/>
</Do>
<Do If="'$(WithXboxOne)' == true">
<Tag Files="#UE4Game XboxOne;#UE4Game XboxOne Includes" With="#Installed Win64"/>
<Property Name="CopyInstalledFilter" Value="$(CopyInstalledFilter);$(CopyXboxOneFilter)"/>
<Property Name="CopyInstalledExceptions" Value="$(CopyInstalledExceptions);$(CopyXboxOneExceptions)"/>
</Do>
<Do If="'$(WithSwitch)' == true">
<Tag Files="#UE4Game Switch;#UE4Game Switch Includes" With="#Installed Win64"/>
<Property Name="CopyInstalledFilter" Value="$(CopyInstalledFilter);$(CopySwitchFilter)"/>
<Property Name="CopyInstalledExceptions" Value="$(CopyInstalledExceptions);$(CopySwitchExceptions)"/>
</Do>
<!-- Tag any dependencies from all previous build products -->
<Tag Files="#Installed Win64" Filter="*.target" With="#TargetReceipts"/>
<TagReceipt Files="#TargetReceipts" RuntimeDependencies="true" PrecompiledBuildDependencies="true" PrecompiledRuntimeDependencies="true" With="#Installed Win64"/>
<!-- Confidential Exceptions - done last to ensure they never get overwritten -->
<Property Name="CopyInstalledExceptions" Value="$(CopyInstalledExceptions);$(ConfidentialExceptions)"/>
<!-- Tag additional files needed for installed build -->
<Tag Files="$(CopyInstalledFilter)" With="#Installed Win64"/>
<!-- Tag Win64 files that need to be stripped -->
<Tag Files="#Compile UnrealHeaderTool Win64;#Build Tools Win64;#Build Tools CS" Filter="$(Win64StripFilter)" Except="$(Win64StripExceptions);$(CopyInstalledExceptions)" With="#Strip Tools for Installed Win64"/>
<Do If="'$(SignExecutables)' == true">
<!-- Tag files that need to be signed -->
<Tag Files="#Compile UnrealHeaderTool Win64;#Build Tools Win64;#Build Tools CS" Filter="$(WindowsSignFilter)" Except="$(CopyInstalledExceptions);$(SignExceptions)" With="#Sign Tools for Installed Win64"/>
</Do>
<!-- Tag files that need to be copied directly -->
<Tag Files="#Installed Win64" Except="$(CopyInstalledExceptions);#Strip Tools for Installed Win64;#Sign Tools for Installed Win64" With="#Copy for Installed Win64"/>
<Copy Files="#Copy for Installed Win64" From="$(RootDir)" To="$(LocalInstalledDir)" Tag="#Installed Build Win64 Files"/>
<!-- Tag saved output that needs to be copied directly -->
<Tag BaseDir="$(SavedOutput)" Files="#Saved Output" Except="$(CopyInstalledExceptions)" With="#Copy Saved Output"/>
<Copy Files="#Copy Saved Output" From="$(SavedOutput)" To="$(LocalInstalledDir)" Tag="#Installed Build Win64 Files"/>
<!-- Strip required files into their final location -->
<Strip Files="#Strip Tools for Installed Win64" BaseDir="$(RootDir)" OutputDir="$(LocalInstalledDir)" Platform="Win64" Tag="#Installed Build Win64 Files"/>
<Do If="'$(SignExecutables)' == true">
<!-- Copy then Sign required files in their final location -->
<Copy Files="#Sign Tools for Installed Win64" From="$(RootDir)" To="$(LocalInstalledDir)" Tag="#Files to Sign"/>
<Sign Files="#Files to Sign" Tag="#Installed Build Win64 Files"/>
</Do>
<!-- Copy the stripped version of UAT -->
<Copy Files="#StrippedUAT" From="$(StrippedUATDir)" To="$(LocalInstalledDir)" Tag="#Installed Build Win64 Files"/>
<!-- Copy the compressed DDC -->
<Property Name="SavedDir" Value="$(SavedOutput)\Installed\Win64"/>
<Copy Files="#CompressedDDCWin64" From="$(SavedDir)" To="$(LocalInstalledDir)" If="'$(WithDDC)' == true" Tag="#Installed Build Win64 Files"/>
<!-- List all of the platforms that we only allow for content projects -->
<Property Name="ContentOnlyPlatforms" Value="Linux"/>
<!-- Create command line arguments for any platforms that were built with additional architectures -->
<Property Name="ArchitectureCommands" Value=""/>
<Property Name="ArchitectureCommands" Value="$(ArchitectureCommands) -AndroidArchitectures=$(AndroidArchitectures) -AndroidGPUArchitectures=$(AndroidGPUArchitectures)" If="'$(WithAndroid)' == true"/>
<!-- Finalize the build and then tag the text file that this process creates -->
<Command Name="FinalizeInstalledBuild" Arguments="-OutputDir=&quot;$(LocalInstalledDir)&quot; -ContentOnlyPlatforms=$(ContentOnlyPlatforms) $(ArchitectureCommands) -AnalyticsTypeOverride=$(AnalyticsTypeOverride)"/>
<Tag Files="$(LocalInstalledDir)/Engine/Build/InstalledBuild.txt" With="#Installed Build Win64 Files"/>
</Node>
</Agent>
<Agent Name="Installed Build Group Mac" Type="Mac">
<!-- Build up a list of requirements as some can be optional -->
<Property Name="FilterRequirements" Value="#Compile UnrealHeaderTool Mac;#UE4Editor Mac;#UE4Editor Mac Unstripped;#UE4Editor Mac Stripped;#UE4Editor Mac Unsigned;#UE4Editor Mac Signed;#UE4Editor Mac Includes;#Build Tools Mac;#Build Tools CS;#StrippedUAT"/>
<!-- Optional Target Platform requirements -->
<Property Name="FilterRequirements" Value="$(FilterRequirements);#UE4Game Mac;#UE4Game Mac Unstripped;#UE4Game Mac Stripped;#UE4Game Mac Unsigned;#UE4Game Mac Signed;#UE4Game Mac Includes" If="'$(WithMac)' == true"/>
<Property Name="FilterRequirements" Value="$(FilterRequirements);#UE4Game Android;#UE4Game Android Unstripped;#UE4Game Android Stripped;#UE4Game Android Includes" If="'$(WithAndroid)' == true"/>
<Property Name="FilterRequirements" Value="$(FilterRequirements);#UE4Game IOS;#UE4Game IOS Unstripped;#UE4Game IOS Stripped;#UE4Game IOS Includes" If="'$(WithIOS)' == true"/>
<Property Name="FilterRequirements" Value="$(FilterRequirements);#UE4Game TVOS;#UE4Game TVOS Unstripped;#UE4Game TVOS Stripped;#UE4Game TVOS Includes" If="'$(WithTVOS)' == true"/>
<Property Name="FilterRequirements" Value="$(FilterRequirements);#UE4Game HTML5;#UE4Game HTML5 Includes" If="'$(WithHTML5)' == true"/>
<Property Name="FilterRequirements" Value="$(FilterRequirements);#CompressedDDCMac" If="'$(WithDDC)' == true"/>
<!-- Feature packs -->
<Property Name="FilterRequirements" Value="$(FilterRequirements);Make Feature Packs"/>
<!-- Filters the build products required for an installed build into groups depending on whether they need to be stripped, signed or just copied-->
<Node Name="Make Installed Build Mac" Requires="$(FilterRequirements)" Produces="#Installed Build Mac Files">
<!-- Clear any existing files from the final location -->
<Delete Files="$(LocalInstalledDirMac)/..."/>
<!-- Define filter and exception properties for the installed build -->
<Property Name="CopyInstalledFilter" Value="$(CopyEditorFilter)"/>
<Property Name="CopyInstalledExceptions" Value="$(CopyEditorExceptions)"/>
<!-- Tag files that always need to be part of an installed build -->
<Tag Files="#Compile UnrealHeaderTool Mac" With="#Installed Mac"/>
<Tag Files="#UE4Editor Mac;#UE4Editor Mac Includes" Except="#UE4Editor Mac Unstripped;#UE4Editor Mac Unsigned" With="#Installed Mac"/>
<Tag Files="#UE4Editor Mac Stripped;#UE4Editor Mac Signed" With="#Saved Output"/>
<Tag Files="#Build Tools Mac;#Build Tools CS;#Make Feature Packs" With="#Installed Mac"/>
<!-- Tag enabled target platforms -->
<Do If="'$(WithMac)' == true">
<Tag Files="#UE4Game Mac;#UE4Game Mac Includes" Except="#UE4Game Mac Unstripped;#UE4Game Mac Unsigned" With="#Installed Mac"/>
<Tag Files="#UE4Game Mac Stripped;#UE4Game Mac Signed" With="#Saved Output"/>
<Property Name="CopyInstalledFilter" Value="$(CopyInstalledFilter);$(CopyMacFilter)"/>
<Property Name="CopyInstalledExceptions" Value="$(CopyInstalledExceptions);$(CopyMacExceptions)"/>
</Do>
<Do If="'$(WithAndroid)' == true">
<Tag Files="#UE4Game Android;#UE4Game Android Includes" Except="#UE4Game Android Unstripped" With="#Installed Mac"/>
<Tag Files="#UE4Game Android Stripped" With="#Saved Output"/>
<Property Name="CopyInstalledFilter" Value="$(CopyInstalledFilter);$(CopyAndroidFilter)"/>
<Property Name="CopyInstalledExceptions" Value="$(CopyInstalledExceptions);$(CopyAndroidExceptions)"/>
</Do>
<Do If="'$(WithIOS)' == true">
<Tag Files="#UE4Game IOS;#UE4Game IOS Includes" Except="#UE4Game IOS Unstripped" With="#Installed Mac"/>
<Tag Files="#UE4Game IOS Stripped" With="#Saved Output"/>
<Property Name="CopyInstalledFilter" Value="$(CopyInstalledFilter);$(CopyIOSFilter)"/>
<Property Name="CopyInstalledExceptions" Value="$(CopyInstalledExceptions);$(CopyIOSExceptions)"/>
</Do>
<Do If="'$(WithTVOS)' == true">
<Tag Files="#UE4Game TVOS;#UE4Game TVOS Includes" Except="#UE4Game TVOS Unstripped" With="#Installed Mac"/>
<Tag Files="#UE4Game TVOS Stripped" With="#Saved Output"/>
<Property Name="CopyInstalledFilter" Value="$(CopyInstalledFilter);$(CopyTVOSFilter)"/>
<Property Name="CopyInstalledExceptions" Value="$(CopyInstalledExceptions);$(CopyTVOSExceptions)"/>
</Do>
<Do If="'$(WithHTML5)' == true">
<Tag Files="#UE4Game HTML5;#UE4Game HTML5 Includes" With="#Installed Mac"/>
<Property Name="CopyInstalledFilter" Value="$(CopyInstalledFilter);$(CopyHTML5Filter)"/>
<Property Name="CopyInstalledExceptions" Value="$(CopyInstalledExceptions);$(CopyHTML5Exceptions)"/>
</Do>
<!-- Tag any dependencies from all previous build products -->
<Tag Files="#Installed Mac" Filter="*.target" With="#TargetReceipts"/>
<TagReceipt Files="#TargetReceipts" RuntimeDependencies="true" PrecompiledBuildDependencies="true" PrecompiledRuntimeDependencies="true" With="#Installed Mac"/>
<!-- Confidential Exceptions - done last to ensure they never get overwritten -->
<Property Name="CopyInstalledExceptions" Value="$(CopyInstalledExceptions);$(ConfidentialExceptions)"/>
<!-- Tag additional files needed for editor and platforms -->
<Tag Files="$(CopyInstalledFilter)" With="#Installed Mac"/>
<!-- Tag Mac files that need to be stripped -->
<Tag Files="#Compile UnrealHeaderTool Mac;#Build Tools Mac" Filter="$(MacStripFilter)" Except="$(CopyInstalledExceptions)" With="#Strip Tools for Installed Mac"/>
<Do If="'$(SignExecutables)' == true">
<!-- Tag files that need to be signed -->
<Tag Files="#Compile UnrealHeaderTool Mac;#Build Tools Mac" Filter="$(MacSignFilter)" Except="$(CopyInstalledExceptions);$(SignExceptions)" With="#Sign Tools for Installed Mac"/>
</Do>
<!-- Tag files that need to be copied directly -->
<Tag Files="#Installed Mac" Except="$(CopyInstalledExceptions);#Strip Tools for Installed Mac;#Sign Tools for Installed Mac" With="#Copy for Installed Mac"/>
<Copy Files="#Copy for Installed Mac" From="$(RootDir)" To="$(LocalInstalledDirMac)" Tag="#Installed Build Mac Files"/>
<!-- Tag saved output that needs to be copied directly -->
<Tag BaseDir="$(SavedOutput)" Files="#Saved Output" Except="$(CopyInstalledExceptions)" With="#Copy Saved Output"/>
<Copy Files="#Copy Saved Output" From="$(SavedOutput)" To="$(LocalInstalledDirMac)" Tag="#Installed Build Mac Files"/>
<!-- Strip required files into their final location -->
<Strip Files="#Strip Tools for Installed Mac" BaseDir="$(RootDir)" OutputDir="$(LocalInstalledDirMac)" Platform="Mac" Tag="#Installed Build Mac Files"/>
<Do If="'$(SignExecutables)' == true">
<!-- Copy then Sign required files in their final location -->
<Copy Files="#Sign Tools for Installed Mac" From="$(RootDir)" To="$(LocalInstalledDirMac)" Tag="#Files to Sign"/>
<Sign Files="#Files to Sign" Tag="#Installed Build Mac Files"/>
</Do>
<!-- Copy the stripped version of UAT -->
<Copy Files="#StrippedUAT" From="$(StrippedUATDir)" To="$(LocalInstalledDirMac)" Tag="#Installed Build Mac Files"/>
<!-- Copy the compressed DDC -->
<Property Name="SavedDir" Value="$(SavedOutput)/Installed/Mac"/>
<Copy Files="#CompressedDDCMac" From="$(SavedDir)" To="$(LocalInstalledDirMac)" If="'$(WithDDC)' == true" Tag="#Installed Build Mac Files"/>
<!-- Create command line arguments for any platforms that were built with additional architectures -->
<Property Name="ArchitectureCommands" Value=""/>
<Property Name="ArchitectureCommands" Value="$(ArchitectureCommands) -AndroidArchitectures=$(AndroidArchitectures) -AndroidGPUArchitectures=$(AndroidGPUArchitectures)" If="'$(WithAndroid)' == true"/>
<!-- Finalize the build and then tag the text file that this process creates -->
<Command Name="FinalizeInstalledBuild" Arguments="-OutputDir=$(LocalInstalledDirMac) $(ArchitectureCommands) -AnalyticsTypeOverride=$(AnalyticsTypeOverride)"/>
<Tag Files="$(LocalInstalledDirMac)/Engine/Build/InstalledBuild.txt" With="#Installed Build Mac Files"/>
</Node>
</Agent>
<Agent Name="Installed Build Group Linux" Type="Win64">
<!-- Build up a list of requirements as some can be optional -->
<Property Name="InstalledRequirements" Value="#Compile UnrealHeaderTool Linux;#UE4Editor Linux;#UE4Editor Linux Unstripped;#UE4Editor Linux Stripped;#UE4Editor Linux Includes;#Build Tools Linux;#Build Tools CS;#StrippedUAT"/>
<!-- Optional Target Platform requirements -->
<Property Name="InstalledRequirements" Value="$(InstalledRequirements);#UE4Game Linux;#UE4Game Linux Unstripped;#UE4Game Linux Stripped;#UE4Game Linux Includes" If="'$(WithLinux)' == true"/>
<Property Name="InstalledRequirements" Value="$(InstalledRequirements);#CompressedDDCLinux" If="'$(WithDDC)' == true"/>
<!-- Feature packs -->
<Property Name="InstalledRequirements" Value="$(InstalledRequirements);Make Feature Packs"/>
<!-- Filters the build products required for an installed build into groups depending on whether they need to be stripped or just copied -->
<Node Name="Make Installed Build Linux" Requires="$(InstalledRequirements)" Produces="#Installed Build Linux Files">
<!-- Clear any existing files from the final location -->
<Delete Files="$(LocalInstalledDirLinux)\..."/>
<!-- Define filter and exception properties for the installed build -->
<Property Name="CopyInstalledFilter" Value="$(CopyEditorFilter)"/>
<Property Name="CopyInstalledExceptions" Value="$(CopyEditorExceptions)"/>
<!-- Tag files that always need to be part of an installed build -->
<Tag Files="#Compile UnrealHeaderTool Linux" With="#Installed Linux"/>
<Tag Files="#UE4Editor Linux;#UE4Editor Linux Includes" Except="#UE4Editor Linux Unstripped" With="#Installed Linux"/>
<Tag Files="#UE4Editor Linux Stripped" With="#Saved Output"/>
<Tag Files="#Build Tools Linux;#Build Tools CS;#Make Feature Packs" With="#Installed Linux"/>
<!-- Tag enabled target platforms -->
<Do If="'$(WithLinux)' == true">
<Tag Files="#UE4Game Linux;#UE4Game Linux Includes;#Build Tools Linux" Except="#UE4Game Linux Unstripped" With="#Installed Linux"/>
<Tag Files="#UE4Game Linux Stripped" With="#Saved Output"/>
<Property Name="CopyInstalledFilter" Value="$(CopyInstalledFilter);$(CopyLinuxFilter)"/>
<Property Name="CopyInstalledExceptions" Value="$(CopyInstalledExceptions);$(CopyLinuxExceptions)"/>
</Do>
<!-- Tag any dependencies from all previous build products -->
<Tag Files="#Installed Linux" Filter="*.target" With="#TargetReceipts"/>
<TagReceipt Files="#TargetReceipts" RuntimeDependencies="true" PrecompiledBuildDependencies="true" PrecompiledRuntimeDependencies="true" With="#Installed Linux"/>
<!-- Confidential Exceptions - done last to ensure they never get overwritten -->
<Property Name="CopyInstalledExceptions" Value="$(CopyInstalledExceptions);$(ConfidentialExceptions)"/>
<!-- Tag additional files needed for installed build -->
<Tag Files="$(CopyInstalledFilter)" With="#Installed Linux"/>
<!-- Tag Linux files that need to be stripped -->
<Tag Files="#Compile UnrealHeaderTool Linux;#Build Tools Linux;#Build Tools CS" Filter="$(LinuxStripFilter)" Except="$(CopyInstalledExceptions)" With="#Strip Tools for Installed Linux"/>
<!-- Tag files that need to be copied directly -->
<Tag Files="#Installed Linux" Except="$(CopyInstalledExceptions);#Strip Tools for Installed Linux" With="#Copy for Installed Linux"/>
<Copy Files="#Copy for Installed Linux" From="$(RootDir)" To="$(LocalInstalledDirLinux)" Tag="#Installed Build Linux Files"/>
<!-- Tag saved output that needs to be copied directly -->
<Tag BaseDir="$(SavedOutput)" Files="#Saved Output" Except="$(CopyInstalledExceptions)" With="#Copy Saved Output"/>
<Copy Files="#Copy Saved Output" From="$(SavedOutput)" To="$(LocalInstalledDirLinux)" Tag="#Installed Build Linux Files"/>
<!-- Strip required files into their final location -->
<Strip Files="#Strip Tools for Installed Linux" BaseDir="$(RootDir)" OutputDir="$(LocalInstalledDirLinux)" Platform="Linux" Tag="#Installed Build Linux Files"/>
<!-- Copy the stripped version of UAT -->
<Copy Files="#StrippedUAT" From="$(StrippedUATDir)" To="$(LocalInstalledDirLinux)" Tag="#Installed Build Linux Files"/>
<!-- Copy the compressed DDC -->
<Property Name="SavedDir" Value="$(SavedOutput)\Installed\Linux"/>
<Copy Files="#CompressedDDCLinux" From="$(SavedDir)" To="$(LocalInstalledDirLinux)" If="'$(WithDDC)' == true" Tag="#Installed Build Linux Files"/>
<!-- List all of the platforms that we only allow for content projects -->
<Property Name="ContentOnlyPlatforms" Value=""/>
<!-- Create command line arguments for any platforms that were built with additional architectures -->
<Property Name="ArchitectureCommands" Value=""/>
<Property Name="ArchitectureCommands" Value="$(ArchitectureCommands) -AndroidArchitectures=$(AndroidArchitectures) -AndroidGPUArchitectures=$(AndroidGPUArchitectures)" If="'$(WithAndroid)' == true"/>
<!-- Finalize the build and then tag the text file that this process creates -->
<Command Name="FinalizeInstalledBuild" Arguments="-OutputDir=$(LocalInstalledDirLinux) -ContentOnlyPlatforms=$(ContentOnlyPlatforms) $(ArchitectureCommands) -AnalyticsTypeOverride=$(AnalyticsTypeOverride)"/>
<Tag Files="$(LocalInstalledDirLinux)/Engine/Build/InstalledBuild.txt" With="#Installed Build Linux Files"/>
</Node>
</Agent>
</BuildGraph>