- Fixed up how UnrealArchitectureConfig classes have commandline applied
- Proper fix for UE-176691
#jira UE-176691
#rb joe.kirchoff
#preflight 63ebd379514832b2425b83c2
[CL 24217163 by Josh Adams in ue5-main branch]
- Apply commandline options to UnrealArchitectureConfig objects in Build and GenProject modes
- Also fixed a commant for XML documentation
#rb tim.smith
#jira UE-175633
#preflight 63d9525931334253e599eaa5
[CL 23930591 by Josh Adams 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]
- ConvertToReadableArchitecture() - turn an internal platform arch string to a printable version
- IsX86Architecture() - returns true if the platform arch string represents an x86 architecture
- Changed Linux to use the HumanReadableName as the FolderNameForArchitecture, so it's shorter and it is not obfuscated anymore
#rb brandon.schaefer
#preflight 638fc65e9549ddaa288ccf73
#fyi dan.thompson
[CL 23419149 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]
- Mac changes to compile separately, but link together (with lipo) after making two .dylibs/executables
- Removed FixDylibDependencies on Mac by making "stub dylibs" to mimic what Windows does with import libs, to solve circular dependencies
- Added DependenciesToSkipByArchitecture to ModuleRules that is used, when making a new single-arch LinkEnvironment from a multi-arch LinkEnvironment, to strip out libraries, etc, that should not be included with that single architecture
#preflight 6387891b4004f73f623c85a0
#rb zack.neyland
[CL 23336522 by Josh Adams in ue5-main branch]
This is required to update the default visual studio version, however that change is currently on hold due to a compiler issue
#rnx
#rb trivial
#preflight 6328f2df826e0c2fe90f097a
[CL 22088638 by joe kirchoff in ue5-main branch]
#fyi Joe.Kirchoff
Original CL Desc
-----------------------------------------------------------------
UnrealBuildTool: Set VS2022 as default compiler and generated solution if all available platforms are supported
Add messaging when generating if the default solution must be downgraded to VS2019 due to a platform that does not support VS2022
Unban 17.3-14.33
#rb Francis.Hurteau
#rb Josh.Adams
#preflight 63080ed91670d55ad5de0945
#preflight 630fb22c660db81edbbe7d12
[CL 21732165 by joe kirchoff in ue5-main branch]
Add messaging when generating if the default solution must be downgraded to VS2019 due to a platform that does not support VS2022
Unban 17.3-14.33
#rb Francis.Hurteau
#rb Josh.Adams
#preflight 63080ed91670d55ad5de0945
#preflight 630fb22c660db81edbbe7d12
[CL 21728329 by Joe Kirchoff in ue5-main branch]
It's needed on some platforms that don't handle DLLs dependencies out of the box. Generation of this file is integrated into the build metadata generation but is only triggered for platforms that explicitly indicate that it's needed (UEBuildPlatform.RequiresLoadOrderManifest()).
#rb Joe.Kirchoff
#preflight 62d57764f156340c79b98306
[CL 21149087 by Wojciech Krywult in ue5-main branch]
This represents UE4/Main @17774255, Release-5.0 @17791557 and Dev-PerfTest @17789485
[CL 17794212 by aurel cordonnier in ue5-release-engine-test branch]