#ttp 342622: CRITICAL: Regression: BINARY: PLATFORMERGAME: white square on the screen in cooked version
#codereview robert.manuszewski,ben.marsh
[CL 2240877 by Steve Robb in Main branch]
- Adds experimental super-fast C++ outdated file checking
- This feature is turned off for now as we continue to test and improve it
- You can try it out by enabling "bUseExperimentalFastDependencyScan" option in your BuildConfiguration.xml
- Here is the basic idea:
- We no longer exhaustively scan all includes and build up a big graph every invocation
- Instead, source files whose build products are missing have their includes scanned asynchronously while being compiled
- The flat list of dependent includes for every outdated C++ is saved into a new cache file ("FlatCPPIncludes.bin")
- On the next run, we quickly load that up and "just know" which files to check timestamps on to determine what is out of date
- Lots of "@todo fastubt" comments were added to UnrealBuildTool for potential performance optimizations and further improvements on this feature.
UnrealBuildTool: Determination of which modules have UObjects is now faster
- We now cache which modules have UObjects and load those for the next session
UnrealBuildTool: Module "shared" precompiled header determination is now much faster
- We no longer scan all C++ includes for a module to figure out which "shared" PCH to use
- Instead, we use the module dependencies specified in the module's *.Build.cs file
- For example, if your module depends on "Engine" and "UnrealEd", we choose "UnrealEd"'s shared PCH
Other UBT optimizations:
- Reduced calls to string formatting functions when setting up API definitions for all modules
- Added new performance diagnostics when bPrintPerformanceInfo is enabled in BuildConfiguration.xml
- We no longer check for "external" headers when scanning includes (this code didn't work at all)
- Optimized CleanDirectorySeparators() utility function to avoid string copies
Fixed UnrealBuildTool not saving DependencyCache under a platform-named folder
[CL 2238266 by Mike Fricker in Main branch]
If UBT is building a non-editor configuration it throws an error if the produced binaries has non-redistributable dependencies.
User can avoid throwing error and change it to warning at the end with flag BuildConfiguration.bBreakBuildOnLicenseViolation = false.
In general module to be redistributable it must not be neither Development nor Editor type. This behavior can be overridden though. One have to just assign true or false to IsRedistributableOverride field of ModuleRules in <ModuleName>.Build.cs file.
UBT will not check for the dependencies also if the module being built is non-redistributable (e.g. some internal programs).
#ttp 335755
#codereview Robert.Manuszewski
[CL 2225366 by Jaroslaw Palczynski in Main branch]
- Fixed modules that supply shared PCHs not generating and using their own unique PCH in monolithic builds
- Fixed monolithic builds not detecting that a unique PCH was needed for modules that supply shared PCHs when header file names were different
- Added better verbose debug output to detect problems with shared PCH headers
#codereview robert.manuszewski, ben.marsh
[CL 2220721 by Mike Fricker in Main branch]
In contrast to the previous system, this does not require special-casing for Rocket builds and will work correctly for nightlies and other out-of-band releases. It also removes the requirement for games to adhere to a strict format of version string on Windows for the editor to be able to load them, since the new data is injected indepdendently of the default resource by UBT.
#codereview Robert.Manuszewski, Michael.Trepka
[CL 2111949 by Ben Marsh in Main branch]
#ttp CRITICAL: Regression: EDITOR: Game Hot Recompile Fails
#change UEBuildModule.SourceFiles renamed to SourceFilesToBuild.
#add UEBuildModule.SourceFilesFound which are used for PCH determination.
#change Source file categorization by extension moved into its own function.
#fix Source files always discovered (except during project generation) and passed to the module so that the found versions can always be found, but the built versions only exist if we need them to.
#change Spelling error fixed.
#codereview robert.manuszewski,matt.kuhlenschmidt
[CL 2083377 by Steve Robb in Main branch]