Commit Graph

28 Commits

Author SHA1 Message Date
Mike Fricker
305f5925be Don't treat VC++ compiler differently than other executables for XGE
- Experimenting with disabling this to see if we notice any drawbacks (seems fine after a few days of testing)

[CL 2517690 by Mike Fricker in Main branch]
2015-04-20 11:35:11 -04:00
Ben Marsh
9e28f96c03 Add an accurate "IsMonolithic" setting to TargetInfo, rather than just guessing from the target type.
#codereview Dmitry.Rekman

[CL 2509862 by Ben Marsh in Main branch]
2015-04-12 13:49:25 -04:00
Mike Fricker
b4000048bf UnrealBuildTool: Fixed with detecting outdated includes with UBT Makefiles
- Fixed flat include cache not being refreshed after user switches between projects
- Fixed flat include cache not being rebuilt if the cache file was missing

[CL 2402092 by Mike Fricker in Main branch]
2015-01-09 13:06:38 -05:00
Mike Fricker
03c74808c2 UnrealBuildTool: Fixed crash with UBT Makefiles
- Fixed crash after trying to build a target different than the one you built last time when DependencyCache was missing

[CL 2400418 by Mike Fricker in Main branch]
2015-01-07 18:23:34 -05:00
Mike Fricker
47381d84ea UnrealBuildTool: Cleaning up UBT Makefile support in preparation for wide testing
- 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]
2015-01-07 14:16:46 -05:00
Mike Fricker
6197a82c6e Minor dependency performance improvements to UnrealBuildTool
- Faster include dependency caching (ToLowerInvariant() is faster than StringComparer.InvariantCultureIgnoreCase on all platforms)
- Cached off the list of FileInfos when requesting cached include dependencies (reduces string hash lookup spam)
- Moved an object lookup out of an inner loop

[CL 2399988 by Mike Fricker in Main branch]
2015-01-07 13:18:51 -05:00
Mike Fricker
3689127b18 Hot reload support for fast build iteration mode in Unreal Build Tool
- Hot reload now works when using bUseExperimentalFastBuildIteration and bUseExperimentalFastDependencyScan
- We use a separate Makefile and built target set for Hot Reload vs. normal compiles
- This allows for extremely quick outdateness checking and incremental builds from the editor

[CL 2391333 by Mike Fricker in Main branch]
2014-12-17 12:12:40 -05:00
Ben Marsh
149375b14b Update copyright notices to 2015.
[CL 2379638 by Ben Marsh in Main branch]
2014-12-07 19:09:38 -05:00
Lee Clark
f3c85eb381 Initial support for SN-DBS distributed build system. Will be used for compiling for PS4 if SN-DBS is installed and Incredibuild isn't available/enabled.
[CL 2335563 by Lee Clark in Main branch]
2014-10-21 06:47:56 -04:00
Mikolaj Sieluzycki
176498455f Fix UBT file dependency mismatch on case insensitive filesystems.
https://udn.unrealengine.com/questions/222717/unrealbuildtool-file-dependency-mismatch.html#answer-222848
https://answers.unrealengine.com/questions/108671/rebuilding-engine-when-creating-first-project.html
#codereview Robert.Manuszewski

[CL 2331715 by Mikolaj Sieluzycki in Main branch]
2014-10-16 11:38:08 -04:00
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