Commit Graph

30 Commits

Author SHA1 Message Date
Michael Noland
77f94f0f08 UBT: Improve error message when running UHT fails (showing a human-readable version of the error code)
[CL 2307883 by Michael Noland in Main branch]
2014-09-23 22:36:54 -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
a3ab85edcc UnrealBuildTool: Even faster build iteration with bUseExperimentalFastBuildIteration
- Shaved over *half a second* of the best case iterative build times with UnrealBuildTool
- When assembling a build from an existing UBTMakefile, we now load Target information from the makefile instead of from the C# assembly

[CL 2278065 by Mike Fricker in Main branch]
2014-08-29 15:46:20 -04:00
Mike Fricker
649b2db782 UnrealBuildTool: Minor console output cleanups
- Changed formatting of some console output
- No longer print notification about full C++ rescan unless that feature is active

[CL 2264360 by Mike Fricker in Main branch]
2014-08-20 11:47:58 -04:00
Mike Fricker
dea18eaa41 UnrealBuildTool: Fast iteration mode fixes
- Fixed confusing exception when a generated code source file was missing
- No longer try compute PCH for a source file when in assembler only mode (PCH is loaded from UBTMakefile)

[CL 2262371 by Mike Fricker in Main branch]
2014-08-19 08:19:14 -04:00
Robert Manuszewski
8498aae74f Hot-reload from IDE
#change UBT: Added support for hot-reload when UBT is called from IDE and the current target is curring
#change Added support for hot-reload from VS to the engine
#change Refactored hot-reload functionality to a separarte module
#change Added hot-reload analytics events

[CL 2255801 by Robert Manuszewski in Main branch]
2014-08-14 03:37:01 -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
Robert Manuszewski
e6072fb050 UnrealBuildTool: Added UnrealHeaderTool version checking when checking if it's up to date.
#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]
2014-08-06 07:05:15 -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
Michael Trepka
79a1bb3607 Saved few more seconds of UBT's time to determine if a target is up to date on Mac by caching File.Exists() result in GetRuntimePlatform()
#codereview Dmitry.Rekman

[CL 2228901 by Michael Trepka in Main branch]
2014-07-23 15:31:28 -04:00
Mike Fricker
2e3e66c699 UnrealBuildTool: No longer scans all includes before running UHT, unless UObject modules are out of date (part 2)
- Fixed initial problems with partially rolled back change in CL 22223765

[CL 2223870 by Mike Fricker in Main branch]
2014-07-18 16:34:12 -04:00
Mike Fricker
9744e95b42 Fixed monolithic link errors (regression)
- Partially backed out experimental UBT changes from CL 2223639

[CL 2223765 by Mike Fricker in Main branch]
2014-07-18 14:28:35 -04:00
Mike Fricker
1d09e223f1 UnrealBuildTool: No longer scans all includes before running UHT, unless UObject modules are out of date
- This can reduce the time it takes for UBT to run when no UObject files were changed

[CL 2223639 by Mike Fricker in Main branch]
2014-07-18 14:20:08 -04:00
Dmitry Rekman
263bbe7e0c Support for modular builds (cross and native).
- Parts of PR #242 (with changes).

#codereview Josh.Adams

[CL 2222405 by Dmitry Rekman in Main branch]
2014-07-17 13:49:42 -04:00
Michael Noland
98c080cff8 UBT: Clarified message about what code generation is for (now says Reflection Code Generation)
[CL 2120929 by Michael Noland in Main branch]
2014-06-29 00:08:52 -04:00
Robert Manuszewski
a05ad646c2 UBT: More detailed module types. ScriptPlugins can now ingore modules by their type.
[CL 2081573 by Robert Manuszewski in Main branch]
2014-05-22 01:20:24 -04:00
Steve Robb
d3d90eafb4 #ttp 333737: UHT should not output anything differently for Rocket - resubmitted after CL# 2068336 was backed out due to UAT rebuild problems.
#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.
#change Android response files now use relative include paths to prevent overly-large response files.
#remove Rocket-specific UHT execution removed.
#remove iOS header hack removed.

#codereview robert.manuszewski,ben.marsh

[CL 2077472 by Steve Robb in Main branch]
2014-05-19 06:57:00 -04:00
Robert Manuszewski
c966ee6414 Fix for UBT not detecting UnrealHeaderTool being out of date if any of its DDLs/Plugins have changed
[CL 2077292 by Robert Manuszewski in Main branch]
2014-05-19 02:26:03 -04:00
Ben Marsh
7655980f4b Get UBT to write out progress information while compiling. Also fix missing output if telemetry fails to initialize.
[CL 2074584 by Ben Marsh in Main branch]
2014-05-15 15:33:29 -04:00
Steve Robb
ddad01ad2f Back out changelist 2073005
[CL 2073795 by Steve Robb in Main branch]
2014-05-14 23:07:26 -04:00
Steve Robb
cd8b6a99d2 #ttp 333737: UHT should not output anything differently for Rocket - resubmitted after CL# 2068336 was backed out due to UAT rebuild problems.
#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 2073005 by Steve Robb in Main branch]
2014-05-14 14:50:21 -04:00
Dmitry Rekman
f3647ea715 Linux native compilation improvements (incorporates PR 116 by Hydrael).
- detect Gentoo (and in generally distros without lsb_release installed)
- explicitly disable inlining in Debug

[CL 2069002 by Dmitry Rekman in Main branch]
2014-05-09 22:24:58 -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
Steve Robb
41834919f6 #ttp 333303: [GitHub] 67 : Fix UnrealHeaderTool to properly support #ifdef and #ifndef precompiler directives
#fix Integrated code.
#fix Added other code to SimplifiedClassParse to make #elif etc. work in the middle of #ifdef/#ifndef.
#fix Added missing UHTDebugging.manifest fields.
#change Added some test preprocessor directives to TestObject.h.
#change Fixed some alignment.

#codereview robert.manuszewski

[CL 2061388 by Steve Robb in Main branch]
2014-05-01 15:24:39 -04:00