#fyi Joe.Kirchoff
Original CL Desc
-----------------------------------------------------------------
UnrealBuildTool: Module CppStandard needs to be overridden if it doesn't match the target, rather than if it doesn't match the default
#preflight 640659f02559570cc77b55ed
[CL 24532448 by joe kirchoff in ue5-main branch]
- Added IntermediateDirectoryNoArch to UEBuildModule (we can use this in the future to put generated definitions headers, which can help reduce rebuilds going between multi- and single-arch)
#rb Joe.kirchoff
#jira UE-178211,UE-178589
#preflight 63fd3cb72b1a2765f9a46322
[CL 24441385 by josh adams in ue5-main branch]
Note: This also implicitly disables PCH usage if a private PCH isn't set (this was previously fatal, but we need to be more flexible if we're overriding from the target).
#rb joe.kirchoff
[CL 24225336 by ben woodhouse in ue5-main branch]
* Fixed so .gen.cpp files are also using shared rsp. Also made code a little bit simpler
#preflight 63e49b72ea7ad6869855fccd
#rb joe.kirchoff
[CL 24106316 by henrik karlsson in ue5-main branch]
Changed how single files are built. We don't want to invalidate makefile everytime we build single files since it destroys turnaround times. With this change a single file compile can take 2s (+ the actual compile time).
The new behavior injects a special action per module when creating the makefile. These actions can be used to on-the-fly create a proper compile action that follows the rules of the module that the specific file belongs to.. In a normal build these actions are ignored since the logic deciding which actions to build is backtraced from which binaries we want to create.
When a specific file compile is triggered, the logic deciding which files to build search up all these special actions and create a lookup based on which folders the special actions handle. It then try to find the special action that handles the specific file. The matching special action then creates a compile action that can handle that specific file and then queue up the action for execution. If no special action is found it falls back to try to use actions that have this specific file as input (ispc files for example)
Details:
* Removed lots of custom code for "specific files" handling
* Changed so pch (both private and shared) always use definition file. Added #pragma once and change so pch wrapper file include definition file. This made the adaptive path and specific file easy to implement (just disable pch in compile environment and it will just work)
* Added SingleFileAction for both VCToolChain and ClangToolChain. It now works to compile specific headers and cpp files. (It creates wrapper files on the fly to be able to compile all header files (compiling headers directly blow up if there are circular includes)
* Fixed so GenerateClangDatabase mode works with new changes
* Moved the logic that makes sure all (directly) depending cpp files are recompiled when .h are included in the singlefile option
#preflight 63dcc46f78716a01e8069649
#rb joe.kirchoff
[CL 24094027 by henrik karlsson in ue5-main branch]
* 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]