Commit Graph

37 Commits

Author SHA1 Message Date
Ben Marsh
0723896cb2 Add telemetry event for the time taken to perform a build, including the number of compile actions, link actions, pch actions, and list of the targets.
#codereview Wes.Hunt

[CL 2704862 by Ben Marsh in Main branch]
2015-09-24 14:32:06 -04:00
Ben Marsh
2802f43c08 Convert everything in UBT to use standard C# XML comments, so IntelliSense can display useful information in tooltips.
[CL 2704759 by Ben Marsh in Main branch]
2015-09-24 13:47:13 -04:00
Ben Marsh
df83418aeb Auto-format UBT for consistent spacing. All default Visual Studio settings, but tabs instead of spaces.
[CL 2704665 by Ben Marsh in Main branch]
2015-09-24 12:37:21 -04:00
Mike Fricker
2297c51717 [INTEGRATE] Unreal Build Tool: Output total number of actions to execute when building (part 2)
- Changed output to be XGE-specific and cleaned up text (the Local Executor already outputs action counts)

[CL 2687717 by Mike Fricker in Main branch]
2015-09-11 08:17:04 -04:00
Mike Fricker
13afbe963e [INTEGRATE] Unreal Build Tool: Output total number of actions to execute when building
- Also: Minor formatting fixes for verbose debug output with files being complied on Windows

[CL 2686063 by Mike Fricker in Main branch]
2015-09-10 08:52:03 -04:00
Ben Marsh
9610023ca5 Use FileReference and DirectoryReference classes instead of strings for paths. Massively reduces the amount of paranoid calls to GetFullPath(), CleanDirectorySeparators() et al., and improves performance for really common UBT operations like making relative paths or checking if files are under a directory. Strong typing ensures that intention of parameters is explicit.
[CL 2678429 by Ben Marsh in Main branch]
2015-09-03 08:47:24 -04:00
Steve Robb
062ba9412f Makefiles enabled on Mac.
Explicit serialization functions used instead of reflection, to avoid deserialization problems on Mono.
Version number added to makefiles to allow versioning in future.
Makefiles still disabled if the host platform differs from the built platform, to continue to avoid any problems 'when building with RPCUtility'.

#codereview robert.manuszewski,michael.trepka

[CL 2643502 by Steve Robb in Main branch]
2015-08-04 11:20:50 -04:00
Peter Sauerbrei
dc1d815f84 refactored the logging system for UAT/UBT to be more like UE4
we now use an enum similar to UE4 with Fatal, Error, Warning, Display, Log, Verbose, and VeryVerbose
Log will only go to the log file unless -verbose is passed on the command line
reduced some of the output from UAT to be Log only

[CL 2631062 by Peter Sauerbrei in Main branch]
2015-07-23 14:51:46 -04:00
Steve Robb
0144ad9af6 Makefile fix for UHT types being added to or removed from existing headers.
CaselessDictionary made serializable.
New FileContentsCacheType for enabling simple lookup and caching of file contents.
Fix for module references differing in case from module definitions e.g. Http and HTTP.
Some general refactoring.

#codereview robert.manuszewski

[CL 2581357 by Steve Robb in Main branch]
2015-06-09 11:50:55 -04:00
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