* 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 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]
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]
- remove dependency on LaunchEngineLoop.cpp which also allows compilation against engine to succeed
- LowLevelTestsRunner no dependency on engine modules required: Launch, Core, Project
- EXPLICIT_TESTS_TARGET definition for self-contained tests: test modules and targets that derive from TestModuleRules/TestTargetRules respectively
- Cleanup Launch dependencies from existing explicit tests
- Cleanup redundant flags from existing explicit tests
- rename Self -> Foundation for in Horde
- additional platform fixes
Default #preflight 63e14d37244dc45a20e29337
All platform/tests LLTs #preflight 63e022f91b44ee7cb1c11d60
#rnx
[CL 24035900 by chris constantinescu in ue5-main branch]
This can be a lot of files if you request a very common header! For example -SingleFile=Runtime\Core\Public\Containers\Array.h currently would build over 22k UnrealEditor actions
#rnx
#jira UE-131018
#rb Josh.Adams
#preflight 63daa7a38c7003aa8ca997bd
[CL 23960984 by joe kirchoff in ue5-main branch]
* Run VNI at the same time as UHT to save wall time
* Changed from linq code to normal parallel.foreach as optimization
#preflight 63d86d93f626715201a3c7e0
#rb joe.kirchoff
[CL 23924114 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]
- 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]
#fyi Joe.Kirchoff
Original CL Desc
-----------------------------------------------------------------
UnrealBuildTool: Fix Action conflict when writing out metadata by ensuring the .version file is written first, then write the .modules and .target files in separate steps that load that version file
#rnx
#rb Josh.Adams
#preflight 63c73b8e7763631ba167e292
[CL 23758203 by joe kirchoff in ue5-main branch]
Requires implementing IComparable\IEquatable in FileItem (and I also implemented them in DirectoryItem for consistency)
#rnx
#rb Tim.Smith
#preflight 63c1cce4a06ab115ea17ba4f
#preflight 63c70f4d7763631ba15486ea
[CL 23745743 by Joe Kirchoff in ue5-main branch]
[FYI] alex.kahn
Original CL Desc
-----------------------------------------------------------------
[Backout] - CL23729890 - Nightly Win64 Build Error
[FYI] JeanMichel.Dignard
Original CL Desc
-----------------------------------------------------------------
Engine FExec (exec commands) changes
- Add Exec_Dev and Exec_Editor virtual functions to allow implementing Exec for specific configurations.
- Add a UBT flag: bAllowExecCommandsInShipping as a master switch to allow or remove Exec in shipping.
- The default Exec implementation calls both Exec_Dev and Exec_Editor, when they are available.
- Blueprint ExecuteConsoleCommand will now ask the console manager to process the command before falling back to Player and GEngine Exec. This is to make sure that if exec commands are disabled the blueprint node is still able to execute console commands.
#rb Josh.Adams
#preflight 63c570c002024f93d8011c2e
[CL 23735316 by alex kahn in ue5-main branch]
[FYI] JeanMichel.Dignard
Original CL Desc
-----------------------------------------------------------------
Engine FExec (exec commands) changes
- Add Exec_Dev and Exec_Editor virtual functions to allow implementing Exec for specific configurations.
- Add a UBT flag: bAllowExecCommandsInShipping as a master switch to allow or remove Exec in shipping.
- The default Exec implementation calls both Exec_Dev and Exec_Editor, when they are available.
- Blueprint ExecuteConsoleCommand will now ask the console manager to process the command before falling back to Player and GEngine Exec. This is to make sure that if exec commands are disabled the blueprint node is still able to execute console commands.
#rb Josh.Adams
#preflight 63c570c002024f93d8011c2e
[CL 23735315 by alex kahn in ue5-main branch]