* Changed so code generating unity file is modifying the right compile environment when adding lookup for source file -> .gen.cpp
Fixes a bug where sndbs fails to remotely build unity files properly
#preflight skipped
#rb joe.kirchoff
[CL 24092753 by henrik karlsson 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]
* Changed a bunch of code to use StringBuilder instead of TextWriter. Based on superluminal profiling data
#preflight 63d8bb903656ea96dc4ef1bf
#rb none
[CL 23924725 by henrik karlsson in ue5-main branch]
* Changed so code related to inlined .gen.cpp is using FileItems etc to reduce number of sys calls
#preflight 63d8a8c5ba4fadeef05749cb
#rb none
[CL 23924497 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]
* ActionGraphBuilder - Added AllowAsync parameter to CreateIntermediateTextFile which defaults to true.
* UEBuildModuleCPP - Added AllowAsync false to one place where the code touches the file after CreateIntermediateTextFile has been called
* UEBuildModuleCPP - Changed so code writing LiveCodingInfo.json is using same path as others when it comes to writing files
#preflight 63d86264ec3d1af440d22e35
#rb joe.kirchoff
[CL 23924077 by henrik karlsson in ue5-main branch]
Updated AssetTypeActivationOpenedMethod.h to include the generated.h.
#preflight 63d2beb85354589b5c70adb5
[CL 23871556 by bryan sefcik 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]
- Changing RHIUtilities, RHIContext, RHICommandList and DynamicRHI to get them to compile independently of the rest of the RHI headers.
#preflight 63c1e22c2e714f64ad46aae5
[CL 23697282 by christopher waters in ue5-main branch]
- Adding -IWYUHeadersOnly command line option to restrict IWYU to just header files
- Adding IWYU support for -Module=XXX
#rb henrik.karlsson
#preflight 63c05f7e1a06fc61057cf347
[CL 23670631 by christopher waters in ue5-main branch]
[FYI] christopher.waters
Original CL Desc
-----------------------------------------------------------------
RHI header dependency cleanup
- Reducing other header dependencies from RHIDefinitions.h
- Moved a few functions to the new RHIStrings.h
- Uniform buffer layout initializer moved to its own file to reduce RHI dependency on MemoryLayout.
#preflight 63bca752577437afe604b097
[CL 23631957 by bob tellez in ue5-main branch]
- Reducing other header dependencies from RHIDefinitions.h
- Moved a few functions to the new RHIStrings.h
- Uniform buffer layout initializer moved to its own file to reduce RHI dependency on MemoryLayout.
#preflight 63bca752577437afe604b097
[CL 23631946 by christopher waters in ue5-main branch]
* Fixed new iwyu code to be compatible with changes coming from ue5 main (CompileCppFiles is now protected and UEBuildModuleCPP.cs calls CompileAllCPPFiles instead of CompileCppFiles directly)
#preflight skipped
#rb none
#jira none
[CL 23631280 by henrik karlsson in ue5-main branch]
* Added IWYU toolchain which can be enabled with -IWYU
* Added IWYU mode that can be used with -Mode=IWYU. This can be used to modify code files
* Binary of include-what-you-use that contains a ton of fixes to make ue build
#preflight skipped
#rb joe.kirchoff
[CL 23631202 by henrik karlsson in ue5-main branch]
* Fixed log warning to show correct data (and is now copy-pastable)
#rb joe.kirchoff
#preflight skipped
[CL 23605571 by henrik karlsson in ue5-main branch]
* Added code to fixup definitions provided through .build.cs files. There are actually strict rules around the syntax of defines (reading msvc documentation). There should be no space before or after the '=' character. so "MY_DEFINE = 1" is actually invalid. When building with header units this actually produce invalid data but in normal builds it seems to swallow it (even though the documentation says it shouldn't)
I would have wanted to fix the code producing bad definition format but it is in a whole bunch of modules so I suspect external teams might have this too, so instead we fix it up by trimming the strings before and after '='
#preflight 63b894b9221aab21e0970eb0
#rb none
[CL 23605565 by henrik karlsson 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]
Added a flag that turns off module unity size overrides.
#jira
[FYI] joe.kirchoff
#preflight 637673ccaf52be152449722a
[CL 23182588 by bryan sefcik in ue5-main branch]
Before:
Unity Files: 6759
Total CPU Time: 77035.734375 s
Total time in Parallel executor: 2062.95 seconds
After:
Unity Files: 6656
Total CPU Time: 76182.40625 s
Total time in Parallel executor: 2047.47 seconds
#jira
[FYI] joe.kirchoff
#preflight 637273a1ee4d25f90acc3712
[CL 23123139 by bryan sefcik in ue5-main branch]