Commit Graph

34 Commits

Author SHA1 Message Date
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
Ben Marsh
072fc6469d Don't add APKs to manifest for static libraries.
#codereview Chris.Babcock

[CL 2487260 by Ben Marsh in Main branch]
2015-03-21 21:56:18 -04:00
Ben Marsh
733b23cc85 Fix linking against binaries relative to the engine root on Android.
#codereview Chris.Babcock

[CL 2487256 by Ben Marsh in Main branch]
2015-03-21 20:49:17 -04:00
Ben Marsh
908707f460 Remove Android symbol stripping as part of Rocket build process. Will make stripping part of the build process instead.
#codereview Chris.Babcock

[CL 2486568 by Ben Marsh in Main branch]
2015-03-20 15:17:09 -04:00
Josh Adams
a98d6d5f5c - Changed Android ES31+AEP support from a TargetPlatform to a checkbox that works with any Android TP
- Moved HighQualityLightmap support check to IOSTargetPlatform so it can check project settings for Metal support
- Fixed some issues running on an x86_64 device
- Cleaned up some unused functions in TargetPlatform
#codereview niklas.smedberg

[CL 2478853 by Josh Adams in Main branch]
2015-03-13 14:05:13 -04:00
Josh Adams
f7f1b0f944 - Moved SDK and NDK versions from BuildConfig.xml to ProjectSettings
- Fixed a logic error in iterative packaging dependency checking

[CL 2414384 by Josh Adams in Main branch]
2015-01-21 16:25:42 -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
Michael Trepka
9c522df7ef Initial support for Android deployment on Mac
[CL 2386013 by Michael Trepka in Main branch]
2014-12-11 15:30:24 -05:00
Josh Adams
fd3d1c2a1a [Important BUNs in here]
- Enabled ES31 for GitHub/P4 users (currently only works on a Tegra K1 with recent system software)
- Always use separate APKs - this means that all APKs will have -armv7-es2 (or whatever) in their name. This may affect scripts, etc people have written
- Fixed a bug when using multiple java libraries (for users who add their own libs)
- Properly collapse Android devices into a single device with multiple variants. LaunchOn will now choose the best format based on the connected device. If you want to override the format, you will need to use the ProjectLauncher
- Added Android serial number to the device type, in case you have multiple devices of the same type (also fixes [UE-3770])
#codereview niklas.smedberg,chris.babcock

[CL 2385821 by Josh Adams in Main branch]
2014-12-11 13:44: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
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
Chris Babcock
6d7e8e5f34 Strip debug symbols from Rocket builds
#android
#ue4
#codereview Josh.Adams,Peter.Sauerbrei

[CL 2357608 by Chris Babcock in Main branch]
2014-11-12 17:18:51 -05:00
Rene Rivera
3e3e8a5cad Fix android_native_app_glue and cpu-features not getting built & included in the build.
#codereview josh.adams

[CL 2350676 by Rene Rivera in Main branch]
2014-11-05 16:28:52 -05:00
Josh Adams
d418292594 - Fixed an issue with missing a library for distribution builds [UE-4837]
- Improved code signing/zipalign support in SDK 21
- Forcing NDK 19, since NDK 21 will generate code that cannot run on previous OSs

[CL 2350652 by Josh Adams in Main branch]
2014-11-05 16:18:52 -05:00
Josh Adams
6ca46f77c0 - Upgraded to support API 21 (Android 5.0, Lollipop)
- Lots of Android iteration speedups:
   - When compiling from UBT (Visual Studio) perform incremental APK generation - it doesn't wipe the Intermadiate/APK directory between runs
   - Don't update project settings every run:
      - Looks at the project.properties for both game and google play services to make sure they are built with current SDK API version, if not, fixup project.properties, etc
   - Even with a non-incremental build (from Editor/UAT), keep the pre-dexed libraries (currently GooglePlayServices [GPS] only) for HUGE speedup
   - We can't just pre-dex GPS and check-in, that's not going to be safe with different java/SDK versions.
   - Removed the project.properties and proguard-project.txt from p4, as they will be generated if needed. A game can pre-supply those if needed, but we will still check API version and update if required
#codereview chris.babcock,ryan.gerleve,michael.noland

[CL 2341079 by Josh Adams in Main branch]
2014-10-27 13:07:43 -04:00
Josh Adams
602ee28bdb - Fixed a problem with fat binary linking after the GPU architecture fat binary changes
#codereview niklas.smedberg

[CL 2304676 by Josh Adams in Main branch]
2014-09-19 19:46:02 -04:00
Niklas Smedberg
bb8f417304 Support for OpenGL ES 3.1 + Android Extension Pack
[CL 2303212 by Niklas Smedberg in Main branch]
2014-09-18 17:49:40 -04:00
Josh Adams
093967cff1 - Fixed Android PCHs with "fat" binaries
[CL 2282074 by Josh Adams in Main branch]
2014-09-02 17:48:19 -04:00
Josh Adams
ddea2d2fe0 - Changed UBT to allow for multiple OutputPaths in a given UE binary (this is needed by Android to output multiple .so files per UBT run, for armv7, x86, etc)
#codereview ben.marsh

[CL 2281777 by Josh Adams in Main branch]
2014-09-02 14:26:49 -04:00
Josh Adams
23d72bff05 - Fixed another Android manifest issue
#codereview sangwoo.lee

[CL 2274395 by Josh Adams in Main branch]
2014-08-27 14:12:35 -04:00
JJ Hoesing
7fd5fb104e Initial Sunstone ThirdParty setup.
[CL 2273875 by JJ Hoesing in Main branch]
2014-08-27 03:22:56 -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
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