- Each module can now have a Tests folder at its root containing low level tests written with Catch2
- Used like this: UnrealBuildTool.exe -Mode=Test TargetName Platform Configuration
- It creates a test executable that's associated with the specified build Target and it includes all the tests for the Target AND all its dependencies as well
- When building without -Mode=Test it will omit the Tests folder contents from compilation: in theory we never allowed folders named Tests at the root of modules, but there might be isolated exceptions where we didn't validate folder names - in this case we will need to move that Tests folder one level up for example
- Code paths for test and non-test builds are entirely separated
#jira UE-135280
#rb Jerome.Delattre
#preflight 61e839d5276892ce10759205
[CL 18663474 by chris constantinescu in ue5-main branch]
This represents UE4/Main @18073326, Release-5.0 @18081140 and Dev-PerfTest @18045971
[CL 18081471 by aurel cordonnier in ue5-release-engine-test 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]
Support "Internal" include directory that will only be added to a Referencing module if the referenced module has the same scope. Intent is to to "hide" APIs from external modules that do not need to include headers that are intended for internal module use only.
#jira UE-112188
#rb Ben.Marsh
#preflight 610085314cd79300016e7269
#ROBOMERGE-SOURCE: CL 16976401 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v838-16927207)
[CL 16976411 by joe kirchoff in ue5-release-engine-test branch]
#ROBOMERGE-SOURCE: CL 16894546 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v836-16769935)
[CL 16894553 by ben marsh in ue5-release-engine-test branch]
#ROBOMERGE-SOURCE: CL 16883248 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v836-16769935)
[CL 16883253 by ben marsh in ue5-release-engine-test branch]
Add a StringComparison argument to CreateIntermediateTextFile() and require callers to make a decision about the case-sensitivity used when considering whether to re-write a file.
(This is intentionally explicit and verbose at the call-site - we should implement a better solution. This change makes it clear that there is work to be done to be able to simplify the interface and achieve reliable behavior.)
As a first pass, C++ files (headers, cpp files, pch files) will have a case-sensitive comparison (C++ code is, mostly, case sensitive), Linux script files have a case-sensitive comparison (case-sensitive filesystem), and all other files are compared disregarding case - to match pre-existing behavior, and with the desire to not borrow more surprises than necessary.
#jira none
#ROBOMERGE-SOURCE: CL 16616339 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v828-16531559)
[CL 16616345 by jonathan adamczewski in ue5-release-engine-test branch]
AGXRHI is starting out as a clone of MetalRHI, but will be refactored and overhauled with several goals in mind:
- Reduce/Eliminate technical debt
- Substantially improve readability and maintainability
- Introduce clear layers for platform independent vs dependent code
- Reduce memory footprint and generally improve memory usage
- Remove legacy concepts (like manual reference counting) and enable better integration with platform tools
- Implement newer and more modern features provided by Metal (such as ray tracing and enhanced command buffer debugging)
- Target/tune the software architecture and API usage for performance on Apple designed GPUs
#rb jack.porter, richard.wallis
#jira none
#fyi lukas.hermanns
#rnx
[CL 16225160 by will damon in ue5-main branch]
As an aid to the unfamiliar searcher (i.e. me), make the name of generated files "Definitions.h" appear as a literal in UBT code. Also, in those generated files, include a reference back to what generates them.
#jira none
[CL 16057466 by jonathan adamczewski in ue5-main branch]
- Exclude source files from unity if their first include is in the working set.
- Compile header files in the working set in their own dedicated source file if there is not an existing source file that includes it first.
#rb Ben.Marsh
#robomerge[STARSHIP] Release-5.0-EarlyAccess
[CL 15639040 by Devin Doucette in ue5-main branch]
Requires Visual Studio 2019 15.8 Preview 3, and targets to specify bEnableCppModules = true. Unsupported on other compilers.
Notes:
- Module interfaces need to be placed in .IXX files.
- Module/module dependencies are determined by a post-makefile/pre-build scan of all module interfaces using the compiler, and cause additional prerequisites to be inserted into the dependency graph before execution.
- Available module IFC search paths use normal UE module dependency rules.
- Header units are not currently supported.
- Regular C++ files cannot currently implement functions defined in module interfaces, due to the macros force included by UBT. These macros need to be placed in the global module fragment, but declaring a global module fragment must be done from the translation unit being compiled (making force-included headers invalid).
#rb none
[CL 14354539 by Ben Marsh in ue5-main branch]