#change UBT will check for API version of all UnrealHeaderTool binaries to detect partial syncs
#change Added BuildHostPlatform class for runtime platform abstraction
[CL 2245408 by Robert Manuszewski 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]
By either manually configuring distcc & DMUCS as per their documentation, or using the DistCode Xcode plugin compilation can be distributed amongst networked Macs.
All Macs must have the same developer tools installed & the same distcc/DMUCS/DistCode and be on the same local network.
This works for compiling for Mac & iOS and it should be possible to configure distcc & DMUCS manually for use on build farms for remote building from Windows.
Linux could also use this for local builds or remote build farms - but I'm not in a position to test this.
[CL 2238171 by Mark Satterthwaite in Main branch]
#change UProjectPath made absolute when set via the command line.
#codereview robert.manuszewski,terence.burns
[CL 2234653 by Steve Robb in Main branch]
- Currently only UBT will do the check when using SSH, and will run the script. This should really be moved to the editor.
- Keys can be in My Documents, or in Engine\\Build (for source control sharing)
- SSH is still not 100% ready for primetime (IPP needs re-integration into UAT)
- Epic default is to use the standard builder account on the standard machine
[CL 2229159 by Josh Adams 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]
- TRACE is no longer defined by default in Release builds.
- If you want bPrintDebugInfo to work, use a Debug build or define TRACE to 1
- Also changed .uprojectdir missing folder spew to be verbose
[CL 2223822 by Mike Fricker in Main branch]