Commit Graph

45 Commits

Author SHA1 Message Date
Peter Sauerbrei
969bf4fa4f UE-14324 - fixed issue with projects outside of Engine directory when using new SSH version of building from windows
#ios

[CL 2527596 by Peter Sauerbrei in Main branch]
2015-04-27 18:04:50 -04:00
Ben Marsh
f1d8b60d57 Add symbol stripping at the IUEToolChain level. Implemented for Windows, Linux, Android arm7.
#codereview Dmitry.Rekman, Chris.Babcock

[CL 2527125 by Ben Marsh in Main branch]
2015-04-27 12:53:24 -04:00
Ben Marsh
3a7e022d4c Generate build receipts from UBT, which keep a record of all the files written for a target and records any metadata needed to stage or deploy it.
[CL 2501101 by Ben Marsh in Main branch]
2015-04-03 10:25:57 -04:00
Peter Sauerbrei
55ef34904d SSH is now ready for use when building iOS from PC
UEPLAT-95
#ios

[CL 2480102 by Peter Sauerbrei in Main branch]
2015-03-16 10:01:04 -04:00
Peter Sauerbrei
2c858adcb7 content-only tool chain changes
#codereview josh.adams

[CL 2464457 by Peter Sauerbrei in Main branch]
2015-02-27 16:10:22 -05:00
unrealbot
f95696c214 Fix remote compiling using settings from BuildConfiguration.xml. Empty settings in BaseEngine.ini aren't ignored by UBT, and just overwrite valid settings in XML file.
#codereview terrence.burns

[CL 2417232 by unrealbot in Main branch]
2015-01-23 16:19:21 -05:00
Ben Marsh
b321e6f43b Bit of housekeeping before adding list of dependencies into UBT's manifest:
* Renamed FileManifest to BuildManifest and FileManifestItems to BuildProducts, to more accurately reflect what they are.
* Removed ref qualifier when passing BuildManifest around; it's already a reference type, and not meant to be assigned to.
* Removed UAT's redundant copy of BuildManifest, since it already references the UBT assembly.

[CL 2406323 by Ben Marsh in Main branch]
2015-01-14 15:46:41 -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
Terence Burns
daedf0fb0e Second part of SSH changes - SSH can now be used for remote IOS builds.
- Added changes to IPP to allow SSH commands to run as opposed to RPC. This is configurable through the commandline.
- Remote Tool Chain fixes for SSH which were preventing downloads to work. Updated rsync command command
- Removed the ParseProjectSettings calls from some IOS tool chain functions as they were unnecessarily going back through the config cache.
- Added an SSH Command Helper to IPP
- UBT passes SSH details through to IPP on commandline.

[CL 2385579 by Terence Burns in Main branch]
2014-12-11 10:49:39 -05:00
Peter Sauerbrei
23d9d6d728 fix for clearing out the remote server name if the user ini doesn't have it
#ios
#codereview terence.burns

[CL 2380384 by Peter Sauerbrei in Main branch]
2014-12-08 10:30:44 -05:00
Terence Burns
1ab79480ed Misplaced ssh command in the remote tool chain.
[CL 2379990 by Terence Burns in Main branch]
2014-12-08 05:00:41 -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
Terence Burns
937f65be31 SSH and IOS remote builds
- Converted a few properties to be available in the editor.
- Part of UEPLAT-25

[CL 2379442 by Terence Burns in Main branch]
2014-12-07 13:01:11 -05:00
Peter Sauerbrei
7cf86529e2 addition of build settings to ini files
part of UEPLAT-114
#ue4

[CL 2374039 by Peter Sauerbrei in Main branch]
2014-12-02 14:58:59 -05:00
Peter Sauerbrei
78d6c9a635 addition of iOS min version and devices supported to iOS Project Settings
UE-3315, UEPLAT-183, UEPLAT-28
#ios

[CL 2340220 by Peter Sauerbrei in Main branch]
2014-10-24 15:31:48 -04:00
Bob Tellez
5f3cf61c7d UE4: Moved some Mac/IOS platform specific functions to the UEToolChain interface so branches without Mac code can still run UBT.
#codereview Michael.Trepka,Dmitry.Rekman

[CL 2283868 by Bob Tellez in Main branch]
2014-09-03 21:56:29 -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
Josh Adams
d67a3a64a5 - Initial "Fat" binary support for Android - multiple architectures at once, by compiling multiple .so's in one go of UBT (will be controlled by Project Settings, intentionally hidden for now)
- Added option to allow for splitting up into multiple .apks, or a single "fat" .apk (also not exposed yet in the project settings)
- A fat binary is just named <Project>.apk, no longer <Project>-armv7.apk
- x86 almost works, except missing libCurl and ICU
- x64 and arm64 will come next now that this framework is in place
#codereview chris.babcock

[CL 2272105 by Josh Adams in Main branch]
2014-08-26 09:56:29 -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
Ankit Khare
7dcc3e1c64 #UBT
#TTP 342328 (HTML5: Packaging Blueprint projects fails)

   -  A compiler generated file was missing from the manifest, fixed
   -  clean up -  instead of calling static functions, call virtual function on tool chain, move platform specific code to derived tool chains.

#codereview peter.sauerbrei

[CL 2236049 by Ankit Khare in Main branch]
2014-07-29 13:38:03 -04:00
Josh Adams
aaec18c102 - Moved the remote execution init to later, since it was causing too much setup for all UBT runs, not just IOS builds
#lockdown peter.sauerbrei

[CL 2232011 by Josh Adams in Main branch]
2014-07-25 16:05:21 -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