* Add new setting CppStandardEngine so this can be controlled separately for engine module
* CppStandard no longer requires RequiresUniqueBuildEnvironment as it does not affect engine modules
#rb christopher.waters
[CL 25821375 by joe kirchoff in ue5-main branch]
* Add MaxCppStandard option to the target, so the CppStd can be limited if it would be set higher for any reason. HoloLens for example does not support c++20 because it uses the /ZW flag to enable WinRT and these are incompatible. I will look into making WinRT only be added if it is required for a Module at a later time
* Any module that sets bTreatAsEngineModule will be upgraded to c++20 unless it has already overridden it to c++17, unless MaxCppStandard is set.
* Some modules, mostly in plugins, are set in the ModuleRules to always build with c++17. This is generally because third party source is included that are incompatible with c++20 but there are a few cases that should be looked into later
* VS2019 needed a few extra fixes but also supports c++20. Reminder that support for the 2019 toolchain is going to be removed in 5.5
#jira UE-182121
#rb Francis.Hurteau
#preflight 6441adee434155a8f8688d45
#preflight 6441adfcf030f684d53981c5
[CL 25153700 by Joe Kirchoff in ue5-main branch]
* Add MinimumCpuArchitectureX64 enum, valid values are None, AVX, AVX2, & AVX512. Default value is None
* Obsolete boolean bUseAVX in favor of MinCpuArchX64
* Add MinCpuArchX64 setting to TargetRules
* Add Optional MinCpuArchX64 to ModuleRules, will override any target setting if not null
* Only pass this /arch for x64 platforms
* Can be controlled on the command line with -MinCpuArchX64=
#jira UE-181851
#rb Bryan.Sefcik
#preflight 6425fc7f91589478cdc7867c
[CL 24861220 by Joe Kirchoff in ue5-main branch]
* Added option to generate assembly files while compiling cpp files.
* Supported only on MSVC compiler for now.
* The generated files have the .asm extension and are located in the same Intermediate folder as the corresponding .obj
#jira none
#rb Joe.Kirchoff
#preflight
[CL 24545403 by LouisPhilippe Seguin in ue5-main branch]
* Added support for additional response files (will be used by header units)
* Added support for shared response files and changed so normal cpp/h build path uses it if toolchain supports it.
* Enabled shared response files on all platforms but android (which doesnt seem to support reponse files including response files)
* Some cleanup in the iwyu toolchain related to shared rsp files
#preflight 63d9af169b3bb6a66cec9a8e
#rb joe.kirchoff
[CL 23943501 by henrik karlsson in ue5-main branch]
* Fixed so only colliding headers gets hash suffix for files in immediate folder
#preflight 63d86e11f626715201a3daa5
#rb joe.kirchoff
[CL 23924099 by henrik karlsson 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]
- 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]