- 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]
- Fixed executable path for programs under Restricted
- Fixed paths when there's an ExeSubDir in the Target
- Allow for codesigning frameworks under programs without a .uproject
#preflight 6397a2528c64c74ac8489545
#rb Rafa.Lecina
[CL 23484025 by Josh Adams in ue5-main branch]
Also moves DotNETCommon/Metadata.cs to Shared/Metadata.cs
#jira none
#rb tim.smith
#ROBOMERGE-SOURCE: CL 17116964 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v855-17104924)
[CL 17116977 by jonathan adamczewski in ue5-release-engine-test branch]
This resolves a issue with PCBs were pdbcopy failed to run because it does not support portable pdbs.
#rb none
[CL 14837521 by Joakim Lindqvist in ue5-main 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]
Also cleaned up some output assemblies, preventing all transative references from being outputed (as we assume they build directly to the output directory instead). Unfortunatley the UBT references still cause tranastive dependencies to be copied as this is also a executable that needs to work outside of UAT as well, we should eventually move all UBT referenced code into BuildUtilities.
#rb none
#fyi ben.marsh
[CL 14775171 by Joakim Lindqvist in ue5-main branch]
Also reduces footprint on disk and speedsup builds slightly.
Also took a pass over all projects to fixup their output paths as there were some inconsitencies from my port to netcore.
Lastly I disabled the resource folders for everything but english to reduce some of the noise in the output folder, this just impacts which languages you get code analysis.
#jira UE-102147
#rb none
[CL 14651855 by Joakim Lindqvist in ue5-main branch]