Commit Graph

164 Commits

Author SHA1 Message Date
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
Robert Manuszewski
c0b4cfe3bf UBT: Moved ScopedTimer from UAT to UBT, added ScopedCounter
[CL 2245334 by Robert Manuszewski in Main branch]
2014-08-06 04:29:36 -04:00
Robert Manuszewski
ea50e1def7 Added code to handle COM crashes when detecting physical processor count in UBT
[CL 2244406 by Robert Manuszewski in Main branch]
2014-08-05 13:03:54 -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
Peter Sauerbrei
511d8fcaa7 fix for ubt attempting to set the current directory Engine/Source when it doesn't exist
TTP342006
#ue4
#codereview robert.manuszewski, jaroslaw.surowiec

[CL 2238934 by Peter Sauerbrei in Main branch]
2014-07-31 17:19:06 -04:00
Peter Sauerbrei
7951338d6d fix for ubt attempting to set the current directory Engine/Source when it doesn't exist
TTP342006
#ue4
#codereview robert.manuszewski, jaroslaw.surowiec

[CL 2238864 by Peter Sauerbrei in Main branch]
2014-07-31 16:59:03 -04:00
Michael Trepka
3d331e7b6c Fixed a problem with default target arguments in UE4 Xcode project generated with intellisense enabled (issue introduced by CL #2237527)
[CL 2238572 by Michael Trepka in Main branch]
2014-07-31 13:46:00 -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
Ben Marsh
ed24db2ee1 Pipe the output from Android ndk-build and ant-build to the log, so it's possible to see error messages when they fail.
#codereview Chris.Babcock, Josh.Adams

[CL 2237619 by Ben Marsh in Main branch]
2014-07-30 18:05:40 -04:00
Michael Trepka
571db5da64 Fixed Xcode projects generated for games with different name than target (for example when you create a project from the Vault in the Launcher and use custom name)
[CL 2237527 by Michael Trepka in Main branch]
2014-07-30 17:35:07 -04:00
Michael Trepka
e5fa9d51e7 Initial support for specifying additional files or folders that need to be copied to Mac app bundle in module's Build.cs file. For now only used for Mac CoreAudio's RadioEffectUnit plugin. More files and support for iOS bundles will follow soon.
[CL 2234811 by Michael Trepka in Main branch]
2014-07-28 14:55:48 -04:00
Steve Robb
5965e53ea9 Fix for incorrectly-formed generated paths when passing a relative .uproject path to UBT.
#change UProjectPath made absolute when set via the command line.

#codereview robert.manuszewski,terence.burns

[CL 2234653 by Steve Robb in Main branch]
2014-07-28 13:30:17 -04:00
Peter Sauerbrei
318c7aaadc addition of command to UBT to validate SDKs are installed for the various platforms
#ue4
#ubt

[CL 2230193 by Peter Sauerbrei in Main branch]
2014-07-24 12:50:34 -04:00
Josh Adams
503b823e5f - Massive SSH usability improvements for remote compiling. Added a script to interactively run SSH and RSync to make a key on the Mac, install it, and pull down the private key for use after
- Currently only UBT will do the check when using SSH, and will run the script. This should really be moved to the editor.
- Keys can be in My Documents, or in Engine\\Build (for source control sharing)
- SSH is still not 100% ready for primetime (IPP needs re-integration into UAT)
- Epic default is to use the standard builder account on the standard machine

[CL 2229159 by Josh Adams in Main branch]
2014-07-23 20:02:14 -04:00
Josh Adams
ec94935229 - Added the ability for remote compiles to have the [x/y] text in UBT output
[CL 2229125 by Josh Adams in Main branch]
2014-07-23 18:42:01 -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
Marcus Wassmer
07fd4b83b0 Non monolithic projects will load AutoSDK environment properly.
#codereview Josh.Adams, dmitry.rekman, michael.trepka, ben.marsh

[CL 2227662 by Marcus Wassmer in Main branch]
2014-07-22 17:59:23 -04:00
Marcus Wassmer
aedef41778 Make GUBP function obsolete and remove last reference to the obsolete call.
[CL 2226942 by Marcus Wassmer in Main branch]
2014-07-22 09:55:11 -04:00
Marcus Wassmer
f2d525d48b Temporarily remove obsolete until I find out why it fails the build
#codereview gil.gribb

[CL 2226167 by Marcus Wassmer in Main branch]
2014-07-21 19:06:40 -04:00
Marcus Wassmer
dfc7fdff68 Fix Rocket build.
#codereview gil.gribb

[CL 2226087 by Marcus Wassmer in Main branch]
2014-07-21 18:06:25 -04:00
Jaroslaw Palczynski
51ba0ff826 CORE: UBT should detect and prevent linkage that violates our EULA.
If UBT is building a non-editor configuration it throws an error if the produced binaries has non-redistributable dependencies.

User can avoid throwing error and change it to warning at the end with flag BuildConfiguration.bBreakBuildOnLicenseViolation = false.

In general module to be redistributable it must not be neither Development nor Editor type. This behavior can be overridden though. One have to just assign true or false to IsRedistributableOverride field of ModuleRules in <ModuleName>.Build.cs file.

UBT will not check for the dependencies also if the module being built is non-redistributable (e.g. some internal programs).

#ttp 335755
#codereview Robert.Manuszewski

[CL 2225366 by Jaroslaw Palczynski in Main branch]
2014-07-21 04:28:22 -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
7cc41b7ba1 UnrealBuildTool performance: Disable verbose output in Release builds
- TRACE is no longer defined by default in Release builds.
- If you want bPrintDebugInfo to work, use a Debug build or define TRACE to 1
- Also changed .uprojectdir missing folder spew to be verbose

[CL 2223822 by Mike Fricker in Main branch]
2014-07-18 15:39:13 -04:00