Commit Graph

18 Commits

Author SHA1 Message Date
Robert Manuszewski
96071afb2d Hot-reload: performing hot-reload when there's been no code changes will no longer result in producing new DLLs.
#ttp 345522: HotReload: Should not try to link DLLs when target is up to date

#change Added code to handle up-to-date state of modules in hot-reload code.
#change Added ECompilationResult::UpToDate and ECompilationResult::Canceled, ECompilationResult::Failed()
#change UBT: added -canskiplink command line param and support for skipping link actions when there was nothing to compile
#change extended the duration of re-compile notifications (TTP# 346604 NUXF-246 Hot compile fail message fades)
#change Added 'Compile Canceled' notification (instead of 'Compile Failed')

[CL 2302307 by Robert Manuszewski in Main branch]
2014-09-18 08:10:17 -04:00
Mike Fricker
16977cdac3 UnrealBuildTool: Added more performance diagnostic logging
[CL 2281395 by Mike Fricker in Main branch]
2014-09-02 09:10:19 -04:00
Mike Fricker
4ea6349366 UnrealBuildTool: Fixed bug with fast build iteration mode
- Indirect C++ includes weren't considered outdated if the UBTMakefile was also out of date in the same session

[CL 2265050 by Mike Fricker in Main branch]
2014-08-20 17:39:31 -04:00
Jaroslaw Palczynski
d200aac1e8 [GitHub] 377 : UBT now deletes hot reload pdb
#ttp 344200

[CL 2263959 by Jaroslaw Palczynski in Main branch]
2014-08-20 04:31:23 -04:00
Mike Fricker
0031e06f21 Experimental UnrealBuildTool makefile support
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]
2014-08-13 08:17:43 -04:00
Ben Marsh
8b4daf4ec5 Back out changelist 2239973
Seems to be causing problems with GUBP.

[CL 2240138 by Ben Marsh in Main branch]
2014-08-01 15:09:03 -04:00
Ben Marsh
38ee619dbd Add an optional output manifest to UBT actions, which will allow detecting whether build products have been clobbered.
[CL 2239973 by Ben Marsh in Main branch]
2014-08-01 11:57:56 -04:00
Mike Fricker
80f6dc9362 UnrealBuildTool: Experimental fast C++ include dependency scanning
- 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]
2014-07-31 09:34:11 -04:00
Mark Satterthwaite
d922524627 Implemented support for Distcc + DMUCs as an alternative to XGE on Mac OS X.
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]
2014-07-31 07:33:17 -04:00
Dmitry Rekman
aafeeae169 Somewhat better info about loops in action graph.
[CL 2221536 by Dmitry Rekman in Main branch]
2014-07-16 20:16:15 -04:00
Josh Adams
aa3fabd4f4 - SSH/Rsync can now be used in UBT, but is not currently recommended yet (one step is much slower, and IPhonePackager issues)
- Integrated IPhonePackager code directly into IOS Automation (this is not 100% working yet, it's a work-in-progress). Original IPP still in same place untouched
- Added a return code to RunLocalProcess
- Added IPhonePackager UAT script that will pass along params to the internal IPP code (RunUAT IPhonePackager -cmd="<ipp commandline here>" [-nocompile])
#codereview Robert.Manuszewski,peter.sauerbrei

[CL 2123325 by Josh Adams in Main branch]
2014-07-01 10:58:33 -04:00
Daniel Lamb
14e2e29af5 Changed the running directory for clang on android so that we can use relative path names for library files.
Gets around issue with too many commandline parameters going to the linker :(.

[CL 2107042 by Daniel Lamb in Main branch]
2014-06-16 11:10:54 -04:00
Steve Robb
0dac41b1df Removed some bHackHeaderGenerator usage.
#codereview robert.manuszewski

[CL 2068999 by Steve Robb in Main branch]
2014-05-09 22:20:08 -04:00
Steve Robb
2a0aca7a62 Back out changelist 2068336
[CL 2068514 by Steve Robb in Main branch]
2014-05-09 15:12:56 -04:00
Steve Robb
1478c2cdc7 #ttp 333737: UHT should not output anything differently for Rocket
#change Root module path added to include paths.
#change Plugins now write intermediates to the project folder.
#change All generated #includes are now relative.
#change Updated UHTDebugging.manifest to new format.
#remove Rocket-specific UHT execution removed.
#remove Some bHackHeaderGenerator usage removed.
#remove iOS header hack removed.

#codereview robert.manuszewski,ben.marsh

[CL 2068336 by Steve Robb in Main branch]
2014-05-09 13:02:49 -04:00
Jaroslaw Palczynski
798d7ec5c1 [GitHub] 61 : Check CommandPath before searching in dictionary
#ttp 333300
#codereview Robert.Manuszewski

[CL 2059731 by Jaroslaw Palczynski in Main branch]
2014-04-30 07:59:29 -04:00
Michael Trepka
e0d9ed4212 Added Action.CommandDescription to UBT and used it in MacToolChain to make the build log nicer.
[CL 2039860 by Michael Trepka in Main branch]
2014-04-23 17:31:19 -04:00
Tim Sweeney
324683ce78 Engine source (Main branch up to CL 2026164) 2014-03-14 14:13:41 -04:00