[OverrideSDK]
SDKVersion=x.y.z
and AutoSDK, or anything using GetMainVersion(), would use that version string instead
- If multiple targets are built in one run of UBT/UAT, it will error out because there is no support to switch SDKs (and builds happen in parallel, etc)
- This is not a complete solution, because it can cause problems with shared tools like ShaderCompileWorker, when different projects are on different SDKs and they have one SCW to share
- Renamed GetMainVersion to GetMainVersionInternal(), and wrapped that in a new non-vitual GetMainVersion() that calls GetMainVersionInternal() (and handles the ini overrides)
#rb david.harvey,dave.barrett
#jira UE-185364
#preflight 647a12e7b0670733186c928e
[CL 25767233 by josh adams in ue5-main branch]
Contains some additional changes from Joe.Kirchoff:
* Fix project dependency for rules parent chain
* Always add UnrealBuildTool and AutomationTool .csproj for game targets -except-
* Filter out other non-critial .csproj unless engine programs are included
#jira UE-120122
#jira UE-176963
#preflight 6413c6668354cad0facc7388
[CL 24690813 by LennardF1989 in ue5-main branch]
- 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 UAT params to pass architecture by target type (-editorarchitecture, -clientarchitecture, -serverarchitecture, -programarchitecture). Keeping -specifiedarchitecture for compat, and it will set all the other 4 if they are not specified
- Changed ProjectGenerator to find Program .uproject files (logic was looking for .Target files under the .uproject's directory, which is not the case for Programs)
- Added two params to GetProjectArchitectures:
- bGetAllSupported - used to get all supported architectures, not just the ones currently being built for (needed for XcodeProject to know what architectures to allow in the dropdown)
- bIsDistributionMode - used to get architectures to compile when making distribution builds (probably want to compile all architectures for distro's)
- Removed the MacExports.TargetsAlowedForAppleSilicon, updated XcodeProject code to use the new GetProjectArchitectures()
#rb david.harvey
#jira none
#preflight 63909f217e0feab0b7bd8241
[CL 23428114 by Josh Adams in ue5-main branch]
- Changed the very high level loop over targets and architectures to move the Architecture as innermost loop - this allows each target to compile with different architectures in the case of mutli-target compiling
- Added [Editor]DefaultArchitecture to Mac ini's - the [Editor]TargetArchitecture property is now what the target _supports_, and Default is what it will be built with if no architecture is specified (usually will be "Host" to indicate that whatever the current host platform is will be what is compiled. "All" can be used to compile Fat binaries by default.
- Updated the LinkEnvironment constructor that takes another LinkEnvironment and an Architecture, to filter the input files for that architecture, and removed the similar code from MacToolchain
- Updates for Programs for Mac compilation, either:
- Adding an .ini and a .uproject files - programs need a .uproject for UBT to be able to find their Config directory in a standard way)
- Marking the Target as not supporting Mac (some programs call Windows code directly)
- Updating libs to be fat (intel+arm)
#rb david.harvey
#preflight 638e47395624e6da5e9658d6
[CL 23397419 by Josh Adams in ue5-main branch]
- Now allow AutoSDK directory name and internal version to be separate (Android only using this for now)
- Some code cleanup with associated functions
[CL 14283427 by Josh Adams in ue5-main branch]
UE4Build / BuildCookRun doesn't check BuildConfiguration.xml* before initiating builds so people who have the IB service installed but disabled will see builds sent to XGE that fail with "Failed to connect to Build Service (on local machine)".
#tests ran BuildCookRun -build with and without the XGE agent service disabled.Verified that builds fell back to local execution with the service disabled and still attempted XGE builds with it enabled.
[REVIEW] [at]ben.marsh
#rb swarm
#ROBOMERGE-SOURCE: CL 12357374 via CL 12357377 via CL 12357379 via CL 12357386
#ROBOMERGE-BOT: (v671-12333473)
[CL 12369934 by andrew grant in Main branch]