- Creates the UnrealArchitectures class, which wraps a list of UnrealArch objects
- UnrealArch is a single architecture, expandable enum-like struct
- There is no more concept of "no/default architecture", there is always a valid active architecture when building
- Most uses of "string Architecture" are replaced with one of the two above, depending if multiple architectures are supported or not
- UnrealArch has some platform-extensions for platform-specific naming (like Linux adds in LinuxName that turns, for instance, Arm64 -> aarch64-unknown-linux-gnueabi, which is used in folder names, etc)
- UnrealArch has bIsX64 which can be used determine intel instruction set (as opposed to arm)
- TargetRules class has an "Architecture" accessor that will return a single architecture if the active architectures is a single architecture, or throw an exception if multiple. This is useful in a majority of the cases where a paltform can only have a single architecture active in TargetRules (microsoft platforms, for instance, will create separate targets when compiling multiple architectures at once)
- Added UnrealArchitectureConfig class, which contains all the architecture information for a platform (what architectures are supported, what ones are currently active for given project, etc)
#preflight 63c81fb5b065224750a1759e
#rb mike.fricker,roman.dzieciol,joe.kirchoff,dmytro.vovk,brandon.schaefer [various parts]
#p4v-preflight-copy 23562471
[CL 23829977 by josh adams in ue5-main branch]
- Added code to patch paths for handling Programs having source in /Engine/Source/Programs/XYZ, their config fies, etc in /Engine/Programs/XYZ, and staging using /XYZ
- Mac can now apply -specifiedarchitecture to UAT builds of programs
- Added support to SlateUGS to load Pak files (programs have to opt-in to it in their main Build.cs)
#rb brandon.schaefer,david.harvey
#preflight 631a03202b7fe03eb6b0f16a
[CL 21894674 by Josh Adams in ue5-main branch]
GetProjectProperties uses PropertiesCache collection (hashmap) to store project properties indexed by PropertyCacheKey struct (.uproject path + platforms + configurations). However, it didn't work as expected because PropertyCacheKey has array members that are reference types. Without a custom hashing implemented, this key would generate different hash codes even if elements stored in the arrays were the same. As a result, querying the same properties multiple times would generate multiple entries in the cache e.g.
GetProjectProperties("foo.uproject", {UnrealTargetPlatform.PC}, {UnrealTargetConfiguration.Debug})
GetProjectProperties("foo.uproject", {UnrealTargetPlatform.PC}, {UnrealTargetConfiguration.Debug})
would create two entries for PC/Debug.
Resolved by implementing the full set of Equals, GetHashCode and comparison operators.
#preflight 630e8d14556fc14dce7d11c5
#rb David.Harvey
#jira UE-162001
#rnx
[CL 21720344 by Wojciech Krywult in ue5-main branch]
The problem was that blueprint-only projects would return true for IsCodeBasedUProjectFile during staging. The issue was triggered by CL 21214930 where PropertyCacheKey (ProjectUtils.cs) was added. Before this change GetProjectProperties worked based only on the path to .uproject. After the change, it also takes the platform and configurations into account. It means that:
GetProjectProperties("...", SomePlatform, Debug)
GetProjectProperties("...", null, Debug)
may return different results. While it's probably the core or the fix this change implemented, it may given unexpected results because when null is passed as a list of platforms, internally all available platforms are taken into account and if only one of them requires the project to be compiled IsCodeBasedUProjectFile will return true, which may not be what our code is expected to see. That's what happened during staging - IsCodeBasedUProjectFile was invoked two times in a slightly different way leading to the automation code handling blueprint-only projects in an inconsistent-way during the whole process.
Fixed by modifying DeploymentContext to initialize IsCodeBasedProject by passing both the current platform and configurations.
#preflight 630e6bd0501b64ba334c3c2a
#rb none
#jira UE-162001
#rnx
[CL 21711241 by Wojciech Krywult in ue5-main branch]
Improvements to BenchmarkBuild script.
- Added -editor-startup and -editor-game options to measure startup and startup time with -game
- Renamed -pie to -editor-pie to match other editor options-
- Allow different editor tests to use different sets of maps via -editor-startup=map2+map2, -editor-pie=map1+map2 etc
- Added AllEditor option to run all editor benchmarking
- Added -coldddc-noshared DDC option
- BenchmarkBuild now defaults to cleaning each targets after benchmarking its build time to save disk space (disable with -nopostclean)
- Moved Editor benchmark tests into separate files and reduced some duplicated code
- Updated help info
Other
- Fixed UAT GetProjectProperties returning inaccurate values if called twice with different platforms
- Doubled number of UBT logs that can be generated from a single UAT script
- Allow scripts to call UnrealBuild.CleanWithUBT to perform cleanup
- Simplified a lot of code
#rb na
#ROBOMERGE-AUTHOR: andrew.grant
#ROBOMERGE-SOURCE: CL 21213895 via CL 21213903 via CL 21213910 via CL 21214414 via CL 21214472
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v972-20964824)
[CL 21214930 by andrew grant in ue5-main branch]
- Added -editor-startup and -editor-game options to measure startup and startup time with -game
- Renamed -pie to -editor-pie to match other editor options
- Allow different editor tests to use different sets of maps via -editor-startup=map2+map2, -editor-pie=map1+map2 etc
- Added AllEditor option to run all editor benchmarking
- Added -coldddc-noshared DDC option
- BenchmarkBuild now defaults to cleaning each targets after benchmarking its build time to save disk space (disable with -nopostclean)
- Moved Editor benchmark tests into separate files and reduced some duplicated code
- Updated help info
Other
- Fixed UAT GetProjectProperties returning inaccurate values if called twice with different platforms
- Doubled number of UBT logs that can be generated from a single UAT script
- Allow scripts to call UnrealBuild.CleanWithUBT to perform cleanup
- Simplified a lot of code
#rb na
#ROBOMERGE-AUTHOR: andrew.grant
#ROBOMERGE-SOURCE: CL 21213169 via CL 21213174 via CL 21213179 via CL 21214155 via CL 21214226
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v972-20964824)
[CL 21214663 by andrew grant in ue5-main branch]
Staged builds are explicitly assigned a project id via the persistent UECommandline.txt file. This works on mobile/consoles, but isn't implemented for Windows/Linux/Mac, so staged builds for those platforms don't have a persistent assignment of project id and instead rely on the launch by the editor including the appropriate commandlines.
Unstaged builds on Windows/Mac/Linux now determine project id independently after they have determined the project file path. This happens after the project file has been determined and has had case corrected. This ensures it is different/unique for multiple blueprint projects that share the same executable.
Fix a bug where second cook in editor to zen would stall because the queue thinks all additions are finished due to a boolean that isn't reset.
#rb devin.doucette
#rb per.larsson
#preflight 61b39a35a2562c8b1c40f81e
#ROBOMERGE-AUTHOR: zousar.shaker
#ROBOMERGE-SOURCE: CL 18432317 in //UE5/Release-5.0/... via CL 18435404
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v897-18405271)
[CL 18435895 by zousar shaker in ue5-release-engine-test branch]
This represents UE4/Main @17911760, Release-5.0 @17915875 and Dev-PerfTest @17914035
[CL 17918595 by aurel cordonnier in ue5-release-engine-test branch]
This adds support for running Editor in BuildGraph Command and Commandlet tasks where the Project at hand has it's own BuildEnvironment.
#jira none
#rb ben.marsh
#preflight 6143be8d9bba9a0001dfc9ee
#ROBOMERGE-AUTHOR: geoff.evans
#ROBOMERGE-SOURCE: CL 17546102 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v870-17433530)
[CL 17546103 by geoff evans in ue5-release-engine-test branch]
Making project file generation wrt to target files consistent for temporary targets ( used for BP-only projects that are either nativized or enable a non-default plugin ) and project file generation. Temp targets generated in this way didn't previously set DefaultBuildSettings to v2.
#rb none
[FYI] Sebastian.Thomeczek
[FYI] Jonathan.Adamczewski
#ROBOMERGE-SOURCE: CL 17390240 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v865-17346139)
[CL 17390267 by branden turner in ue5-release-engine-test branch]
Add a layer of caching to avoid running msbuild as much as possible.
#jira UE-109181
#rb ben.marsh
#ROBOMERGE-SOURCE: CL 17102399 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v853-17066230)
[CL 17102408 by jonathan adamczewski in ue5-release-engine-test branch]
Some behavior changes:
Output paths - Both tools are now output to a subdirectory of Binaries/Dotnet, I believe most hardcoded paths have been fixed up but there may be tools that will fail because of this.
UAT Plugin Building - As .NET Core does not support AppDomain unloading, how we build the plugins has changed quite a bit, these are now built before UAT is started rather then by UAT itself. If you just start UAT via RunUAT.bat/sh this should just continue to work.
#rb ben.marsh
[CL 14834347 by Joakim Lindqvist in ue5-main branch]