Commit Graph

51 Commits

Author SHA1 Message Date
Dmitry Rekman
9b249a3480 Linux: clean up and fix rpaths.
- Removed old rpaths for libs which we now link statically.
- Added rpath useful for target platform modules and other fixes from PR #442.

[CL 2314947 by Dmitry Rekman in Main branch]
2014-09-30 17:04:15 -04:00
Dmitry Rekman
b7442750eb Disable XGE for Linux builds since it still crashes on farm.
#codereview Kellan.Carr, Ben.Marsh

[CL 2314803 by Dmitry Rekman in Main branch]
2014-09-30 15:59:01 -04:00
Dmitry Rekman
6f2fe48268 Reduce optimization level for Linux builds (TTP #347022).
- clang 3.5.0 (and Ubuntu's 3.5-trunk) seems to miscompile PlatformerGame (bControlsLocked bitfield becomes true for some reason, doesn't happen with -O2 and -O0).
- fixes TTP #347022.

[CL 2312439 by Dmitry Rekman in Main branch]
2014-09-28 23:27:35 -04:00
Ben Marsh
c9c73fece9 Support for Linux targets in binary Rocket.
#codereview Dmitry.Rekman

[CL 2305714 by Ben Marsh in Main branch]
2014-09-22 12:34:00 -04:00
Dmitry Rekman
713fce30f5 UBT: Proper dependencies for modular builds + fix Linux cross-build.
[CL 2300046 by Dmitry Rekman in Main branch]
2014-09-16 16:32:04 -04:00
Dmitry Rekman
3ab3dfb704 Fix crashes on broken/old toolchains.
- UBT was invoking non-existent compiler to determine its version.
- Happened during AutoSDK switch as well.

[CL 2295597 by Dmitry Rekman in Main branch]
2014-09-12 17:06:44 -04:00
Kellan Carr
4cbbc45d20 build script, reenable xge for linux, android, and ps4
[CL 2293858 by Kellan Carr in Main branch]
2014-09-11 12:09:06 -04:00
Dmitry Rekman
2d64990948 UBT: Do not spam with compiler version when cross-compiling.
[CL 2290852 by Dmitry Rekman in Main branch]
2014-09-09 12:19:16 -04:00
Dmitry Rekman
839ace6b16 Determine compiler version on Linux in runtime.
This allows us to better match switches given the multitude of (cross-)toolchains in use currently.

[CL 2289904 by Dmitry Rekman in Main branch]
2014-09-08 16:47:10 -04:00
Dmitry Rekman
f15ad7011a Switching Linux builds to clang 3.5.0-based toolchain.
- Temporarily suppressed a warning until we resolve if (!this) checks.
- Upped optimization from -O2 to -O3 (as was the case a year ago).

Note: 3.5.0 generates much more compact debug info, reducing development server binary size from 1GB to roughly 600 MB.

#codereview Bob.Tellez, Kellan.Carr

[CL 2288345 by Dmitry Rekman in Main branch]
2014-09-07 12:44:30 -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
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
Dmitry Rekman
7fb45d090a Support more output devices on Linux.
- Partially based on PR #306 submission, corrected for cross-compiling.
- Each platform is now able to set up output devices for logging according to its own needs.

#codereview Josh.Adams, Michael.Trepka

[CL 2249193 by Dmitry Rekman in Main branch]
2014-08-08 21:42:14 -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
Dmitry Rekman
edc8ff25f0 Support for Linux in shader compiler.
- Part of PR #306 by amigo and #ue4linux folks.
- Undoing my previous change with cross-compilation define (too dangerous).

#codereview Josh.Adams, Michael.Trepka

[CL 2243292 by Dmitry Rekman in Main branch]
2014-08-04 18:28:10 -04:00
Dmitry Rekman
b07f61eca2 UBT: preprocessor define for cross/native compilation.
- Applies to Linux only for now.

#codereview Josh.Adams, Michael.Trepka

[CL 2243186 by Dmitry Rekman in Main branch]
2014-08-04 18:27:46 -04:00
Peter Sauerbrei
dee247b733 remove HTML5 target platform dll from being built as part of the mac and linux editor builds for rocket
TTP342631
#ue4
#html5

[CL 2242372 by Peter Sauerbrei in Main branch]
2014-08-04 09:48:56 -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
Marcus Wassmer
64eec3f77a Force all builders into a clean state for autosdks
[CL 2232443 by Marcus Wassmer in Main branch]
2014-07-25 21:56:32 -04:00
Dmitry Rekman
5a866a4e0d UBT: fix warning.
[CL 2230110 by Dmitry Rekman in Main branch]
2014-07-24 11:55:02 -04:00
Dmitry Rekman
ede1c1d619 Prefer AutoSDKs for Linux.
[CL 2230035 by Dmitry Rekman in Main branch]
2014-07-24 11:09:55 -04:00
Dmitry Rekman
e5f34239b9 Linux: fix building editor natively (in toolchain).
[CL 2228012 by Dmitry Rekman in Main branch]
2014-07-23 00:30:22 -04:00
Marcus Wassmer
460b2d20d1 Refactor AutoSDKs in preparation for doing doing AutoSDK setup for the editor.
[CL 2223660 by Marcus Wassmer in Main branch]
2014-07-18 14:21:02 -04:00
Dmitry Rekman
f870b2ac35 Linux: one more hardcoded rpath to a TPS lib.
[CL 2223045 by Dmitry Rekman in Main branch]
2014-07-17 23:57:18 -04:00
Dmitry Rekman
6b8046d3a5 Linux toolchain: replace slashes properly (also account for escaped ones).
[CL 2222564 by Dmitry Rekman in Main branch]
2014-07-17 15:50:19 -04:00