==========================
MAJOR FEATURES + CHANGES
==========================
Change 2864843 on 2016/02/12 by Ben.Marsh
Add individual 'status', 'outcome', and 'error_code' fields to parsed jobsteps. Should fix grid view not being able to display 'pending' icons.
Change 2865161 on 2016/02/12 by Ben.Marsh
Stop storing a reference to UEBuildTarget from UEBuildModule. It creates an awkward cyclic data dependency, and makes it easy for people to write lazy code that just reaches into the internal state of the build.
Change 2865643 on 2016/02/12 by Ben.Marsh
Rename UEBuildModuleType to UHTModuleType, and move implementation into ExternalExecution.
Change 2874408 on 2016/02/19 by Ben.Marsh
Automatically sort nodes in the dashboard grid view by a weight derived from the node's order in the build graph, summed across all the jobs in which it was present.
Change 2879572 on 2016/02/24 by Ben.Marsh
Allow spoofing a Git merge from a given commit, using a changelist description containing the tag "git merge <branch> <changelist>", where <branch> is the name of a branch on Git (eg. master, 4.11, etc..), and <changelist> is the changelist being merged in.
Change 2883216 on 2016/02/26 by Ben.Marsh
Prevent Jira tickets being incorrectly updated with 'Main CL' fields which are after the 'Fix CL' fields.
Change 2883755 on 2016/02/26 by Ben.Marsh
Fix solution files having a Shipping configuration, even when -NoShippingConfigs is passed on the command line.
Change 2886223 on 2016/02/29 by Ben.Marsh
Ignore SignTool errors - we can recover from them.
Change 2887414 on 2016/03/01 by Ben.Marsh
Dump all the *.crash files produced while running commandlets, to make it easier to diagnose build system crashes cooking on Mac.
Change 2888235 on 2016/03/01 by Ben.Marsh
Add overloads for methods in FileFilter which take FileReference and DirectoryReference objects.
Change 2889602 on 2016/03/02 by Ben.Marsh
Treat shaders as code in UGS. Don't sync them as part of content-only syncs, and don't allow syncing past them without updated binaries.
Change 2889610 on 2016/03/02 by Ben.Marsh
Fix setting for using incremental builds not being saved. Also hide command to do incremental builds if the 'use incremental builds' option is not checked.
Change 2891866 on 2016/03/03 by Matthew.Griffin
Removed Rocket specific batch files and made sure installed build won't try to include them
Removed last use of RocketGenerateProjectFiles.sh by using UBT directly instead
Change 2893349 on 2016/03/03 by Ben.Marsh
Add derived ReplicatedBranch to support mirroring the VR editor branch to GitHub.
Change 2894703 on 2016/03/04 by Ben.Marsh
Include *.usf when looking for the last code changelist. Also update version to 1.68.
Change 2897991 on 2016/03/07 by Ben.Marsh
Copy the changelist number to the clipboard when the user presses Ctrl-C. Update version number to 1.69.
Change 2898005 on 2016/03/07 by Ben.Marsh
Minor changes to support BuildGraph:
* UE4Build now has a static function that can update version files.
* Adding FileReference/DirectoryReference methods to FileFilter and CommandUtils.
* FileFilter treats any pattern containing a slash as implictly starting from the root directory, unless it begins with "...".
Change 2898095 on 2016/03/07 by Ben.Marsh
UAT - Don't retry builds if we're using local executor; we don't encounter failures due to timeouts.
Change 2898248 on 2016/03/07 by Ben.Marsh
UBT - Add the standard game include paths back in to plugin modules. Existing game code relies on this.
Change 2898615 on 2016/03/08 by Matthew.Griffin
Removed last uses of RunningRocket function
All seemed to be overly cautious about people using an Installed build to do non standard things, don't see any ill effects in the most common circumstances.
Change 2898681 on 2016/03/08 by Matthew.Griffin
Removed Automation.RunningRocket function as there are no more uses
Changed the majority of comments referencing Rocket mode that are now either about the engine being installed or from the Launcher etc.
#lockdown Nick.Penwarden
[CL 2898813 by Matthew Griffin in Main branch]
- When bUseAdaptiveUnityBuild is enabled (experimental!), your first build after your working file set changes is now much faster
- UBT no longer invalidates other existing compiled unity blobs from the same module when ejecting source files
[CL 2687738 by Mike Fricker in Main branch]
- New UBT support for "adaptive unity builds", which can greatly increase iterative compile times
- This feature allows UBT to keep track of which source files you're currently editing between runs
- UBT will exclude your "working set" source files from all unity blob files, allowing for fast iterative compiles!
- Currently, adaptive unity builds relies on files being writable vs. read-only to determine what you're working on (P4 edit)
- Enable this new feature in your BuildConfiguration.xml file.
<BuildConfiguration>
<bUseAdaptiveUnityBuild>true</bUseAdaptiveUnityBuild>
</BuildConfiguration>
[CL 2671467 by Mike Fricker in Main branch]
- Before creating unity blobs, we now sort all full file paths alphabetically
- This allows for better build system determinism across computers
- Important: It's possible this checkin can introduce compile errors for projects that have outstanding non-unity issues!
[CL 2666189 by Mike Fricker in Main branch]
- Collapsed and renamed some of the new UBT settings for fast build iteration
- New 'BuildConfiguration.bUseUBTMakefiles' that replaces the old experimental settings (defaults to off in this changelist.)
- Cleaned up some comments
- No effective changes
[CL 2400071 by Mike Fricker in Main branch]
This is critical when using the new fast dependency scanning feature, because a buidl can fail *after* some targets compiled successfully, but we would not have cached C++ includes for those files, so subsequent runs would have incomplete data when determining outdatedness
This also makes iterating on builds faster when you have compile errors every time. If your cache was missing or incomplete, it would reset with every single build attempt
[CL 2257897 by Mike Fricker in Main branch]
UnrealBuildTool 'Makefiles' allow for very fast iterative builds.
- New BuildConfiguration.xml setting added: "bUseExperimentalFastBuildIteration" (disabled by default)
- Turning this on causes Unreal Build Tool to emit 'UBT Makefiles' for targets when they're built the first time.
- Subsequent builds will load these Makefiles and begin outdatedness checking and build invocation very quickly.
- The caveat is that if source files are added or removed to the project, UBT will need to gather information about those in order for your build to complete successfully.
- Currently, you must run the project file generator after adding/removing source files to tell UBT to re-gather this information.
- Events that can invalidate the 'UBT Makefile':
- Adding/removing .cpp files
- Adding/removing .h files with UObjects
- Adding new UObject types to a file that didn't previously have any
- Changing global build settings (most settings in this file qualify.)
- Changed code that affects how Unreal Header Tool works
- You can force regeneration of the 'UBT Makefile' by passing the '-Gather' argument, or simply regenerating project files
- New command-line parameters added:
- "-Gather": Tells UBT to always perform the gather step (slower but will catch project structural changes)
- "-NoGather": Disables the gather step, unless UBT detects that it must be done. This is the default when bUseExperimentalFastBuildIteration is enabled
- "-GatherOnly": Runs the gather step and saves a UBTMakefile, but doesn't build anything
- "-Assemble": Tells UBT to also assemble build products. This always defaults to enabled
- "-NoAssemble": Tells UBT to skip the assemble step, whether we gathered build products or not
- "-AssembleOnly": Tells UBT to only assemble build products and not to gather, unless UBT determines it must
Other changes:
- UBT now keeps track of which targets it was building in an intermediate file, to help it invalidate cached includes in subsequent runs when the targets are different
- C++ includes are now stored in a class separate from the C++ compile enviroment (for easier serialization)
- The method that UBT uses to find the CoreUObject module timestamp was rewritten
- Various '@todo ubtmake' comments added to tag possible remaining Makefile tasks
- The 'FileItem' class had some member variable comments and code cleaned up, while making it serializable
- Cleaned up the comments and member variables in the "Action" class, while making it serializable
- Some UBT classes are now "serializable". This is because we need to store the data in UBTMakefiles.
- Removed support for Actions to tinker with Stdout and Stderror (was not used for anything)
- Moved PrecompileHeaderEnvironment class to the UEBuildModule.cs source file
- Plugin intermediate include directories are now selected on demand rather than cached early
- Toolchain code for gathering prerequisite headers is now shared in a single function (AddPrerequisiteSourceFile)
- Removed Action.StatusDetailedDescription, was not used for anything
- Removed UEBuildConfiguration.bExcludePlugins, was not used for anything
- Removed ECompilationResult.FailedDueToHeaderChange, was not used for anything
[CL 2254472 by Mike Fricker 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]
Change 1996384 by Andrew Brown:
322252 - EDITOR: Asset picker displays incorrect text when there are no filter results.
Change 1996385 by Andrew Brown:
321858 - CRASH: Assertion failed: (Index >= 0) Function: STransformViewportToolBar::GetLocationGridLabel() STextBlock::CacheDesiredSize()
Change 1996977 by Andrew Brown:
309685 - UE4: Adding an event/renaming an event on an event track in Matinee does not update the MatineeActor node in blueprint
Change 2034873 by Jaroslaw Palczynski:
More robust VS installation detection.
Change 2039693 by Jaroslaw Palczynski:
327268 - RocketGDC: POSTLAUNCH: DEV: Make engine more robust against bad Visual Studio environment variables
Change 1978978 by Jaroslaw Surowiec:
- Removed obsolete AllowEliminatingReferences from the FArchive
Change 2020326 by Maciej Mroz:
pretest BP K2Node: RemovePinsFromOldPins function moved from K2Node to RemovePinsFromOldPins
Change 2017608 by Maciej Mroz:
pretest Some changes in SFortMissionEventSelector caused by FPinTypeTreeInfo
Change 2017463 by Maciej Mroz:
PinTypeSelector can lins unloaded UDStructs
Change 2019979 by Maciej Mroz:
pretest BP: Crash when performing Diff against Depot with blueprints containing Format Text nodes
Change 2024469 by Maciej Mroz:
MemberReference variable added to PinType. It's necessary for delegate's signature.
Change 2024049 by Maciej Mroz:
HasExternalBlueprintDependencies added to UK2Node_DynamicCast
Change 2024586 by Maciej Mroz:
FillSimpleMemberReference fix
Change 2024472 by Maciej Mroz:
workaround for delegates signature in pintype removed.
Change 2023997 by Maciej Mroz:
BP, UDStruc: Class UserDefinedStructEditorData added. It fixes many problems with undo/redo.
Change 2021934 by Maciej Mroz:
typo in a comment
Change 2020355 by Maciej Mroz:
Back out changelist 2020342
Change 2022178 by Maciej Mroz:
CRASH: PRETEST: EDITOR: UDS: Crash when undo then redo new variable in struct that is used by blueprint
Change 2021958 by Maciej Mroz:
CRASH: PRETEST: EDITOR: UDS: Crash using variable of a type of copied struct in blueprint
Change 1986247 by Maciej Mroz:
User Defined Structures: circle dependency fixed. Early version.
Change 1985107 by Maciej Mroz:
UserDefinedStruct cannot have a field of a non-native type
Change 1986278 by Maciej Mroz:
pretest ensureMsgf in Struct::link
Change 1986250 by Maciej Mroz:
User Defined Struct: Non native classes are accepted types od values in structures.
Change 1980955 by Maciej Mroz:
Using AssetPtr and LazyPtr as UFunction parameter (intput or return) is explicitly disallowed.
Change 2041215 by Maciej Mroz:
ttp331249 BLOCKER: PRETEST: UI: Survive the Storm is missing the Mission HUD.
Change 1984316 by Maciej Mroz:
New User Defined Structure. WIP - there are still problems with circular dependencies.
Change 2011616 by Maciej Mroz:
UserDefinedStructures - various problems fixed.
Change 2011609 by Maciej Mroz:
more robust HasExternalBlueprintDependencies implementation
Change 2016697 by Maciej Mroz:
pretest BP: UDStruct - default value propagation in cooked build
Change 2016288 by Maciej Mroz:
pretest BP: UDStruct: Renaming variables wont break links from make/break nodes
Change 1987637 by Maciej Mroz:
CustomStruct icons placeholders
Change 1987422 by Maciej Mroz:
Better tooltips for variables in MyBlueprint
Change 1991387 by Maciej Mroz:
UDStructures fixes:
Change 2029165 by Maciej Mroz:
BP: better comment for incomatible pins
Change 2030016 by Maciej Mroz:
8PRETEST: EDITOR: UDS: Defaults values aren't updated in struct type variables in blueprints
Change 2030017 by Maciej Mroz:
Unused UDStructure code removed (PPF_UseDefaultsForUDStructures)
Change 2028856 by Maciej Mroz:
BP: Pins with PC_Struct type are compatible only with exactly the same structure. (No derived structures are not handled as compatible).
Change 2026701 by Maciej Mroz:
k2: odd error on an add item node within a function (see attached image in details)
Change 2028160 by Maciej Mroz:
PRETEST: EDITOR: UDS: When deleting structures just after creating there is always some references in the memory
Change 2028165 by Maciej Mroz:
BP: BreakHitResult function has proper icon.
Change 2033340 by Maciej Mroz:
ttp330786 PRETEST: EDITOR: UDS: Changes of default values aren't apllied to breeak nodes for text type of variables
Change 2034255 by Maciej Mroz:
EDITOR: UDS: Changes of default values aren't apllied to make nodes for text type of variables ttp#330620
Change 2037682 by Maciej Mroz:
ttp331309 BLOCKER: PRETEST: CRASH: EDITOR: Crash occurs when performing Diff Against Depot on any Blueprint
Change 2033142 by Maciej Mroz:
CreateDelegate Node uses internally FMemberReference. Refactor.
Change 2032329 by Maciej Mroz:
ttp330608 CRASH: PRETEST: EDITOR: UDS: Crash when trying to use struct named 'Color' in blueprint
Change 2032420 by Maciej Mroz:
ttp330620 PRETEST: EDITOR: UDS: Changes of default values aren't apllied to make nodes for text type of variables
Change 2033139 by Maciej Mroz:
Functions generated from CustomEvents can be also identified by GUID
Change 2026631 by Maciej Mroz:
BP. UDStruct: Invalid structs are handled better.
Change 2025344 by Maciej Mroz:
UDStruct enabled by default
Change 2026672 by Maciej Mroz:
EDITOR: BP: Can't easily remove 'pass-by-reference' pins on ReturnNodes
Change 2026411 by Maciej Mroz:
ExposeOnSpawn updated, it supports UDStructs, custom native Structs, and it throws compiler error.
Change 2025342 by Maciej Mroz:
GenerateBlueprintSkeleton moved from BLueprint::Serialize to RegenerateBlueprintClass, because SkeletonClass compilation requires all external dependencies to be loaded and linked.
Change 2025570 by Steve Robb:
Moved dependency processing to its own function.
Change 2033235 by Steve Robb:
String improvements
Change 2035830 by Steve Robb:
Workaround for FriendsAndChat crash in Fortnite.
Change 2035115 by Steve Robb:
UBT build time regression fixes.
Change 2034162 by Steve Robb:
312775: UObject improvement: Ensure that *.generated.inl is included somewhere
Change 2034181 by Steve Robb:
Removal of any references to .generated.inl
Change 2020165 by Steve Robb:
BuildPublicAndPrivateUObjectHeaders factored out into its own function.
Change 2020187 by Steve Robb:
CreateModuleCompileEnvironment function factored out.
Change 2020055 by Steve Robb:
Refactoring of Unity.cs to remove complex and duplicate iteration.
Change 2020083 by Steve Robb:
Another use of dictionary utilities.
Change 2031049 by Steve Robb:
312775: UObject improvement: Ensure that *.generated.inl is included somewhere
Change 2025728 by Steve Robb:
Refactored the application of a shared PCH file to multiple file into a single ApplySharedPCH function.
Change 2020068 by Steve Robb:
A couple of helpful utility functions for populating dictionaries.
Change 2032307 by Steve Robb:
312775: UObject improvement: Ensure that *.generated.inl is included somewhere
[CL 2054495 by Robert Manuszewski in Main branch]