Commit Graph

32 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
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
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
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
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
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
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
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
Dmitry Rekman
677b1058f7 Linux: more rpath hardcoding.
[CL 2133988 by Dmitry Rekman in Main branch]
2014-07-03 23:40:45 -04:00
Dmitry Rekman
973a6f0561 Linux: dirty hack for modular builds.
[CL 2133987 by Dmitry Rekman in Main branch]
2014-07-03 23:30:39 -04:00
Dmitry Rekman
3895c57d53 Fix building of projects with space in the path name.
(Fixes 4.3 TTP #338978).

[CL 2131800 by Dmitry Rekman in Main branch]
2014-07-03 16:39:13 -04:00
Peter Sauerbrei
6ef7196656 Fix for Linux using an old variable for architecture
#ue4

[CL 2100885 by Peter Sauerbrei in Main branch]
2014-06-10 17:14:40 -04:00
Jaroslaw Palczynski
220c44b806 [GitHub] 132 : Introduce NativeBuildEnvironmentConfiguration
#github 132
#ttp 334942

[CL 2098971 by Jaroslaw Palczynski in Main branch]
2014-06-09 11:12:01 -04:00
Robert Manuszewski
283e939959 GitHub pull request #194: Full binary type. Removing hardcoded binary file extensions
[CL 2095675 by Robert Manuszewski in Main branch]
2014-06-05 12:11:58 -04:00
Dmitry Rekman
4411762b66 UBT: support different architectures (target triplets) in Linux toolchain.
[CL 2089710 by Dmitry Rekman in Main branch]
2014-05-30 10:58:16 -04:00
Dmitry Rekman
623d381f10 Linux toolchain: disable RTTI.
(Shaves off ~1 MB from a stripped Shipping binary).

[CL 2088815 by Dmitry Rekman in Main branch]
2014-05-29 17:47:36 -04:00
Dmitry Rekman
5ace6a8679 Linux: do not export overriden operators new/delete.
This is needed to avoid other shared objects (particularly Steam) picking them up and possibly crashing due to incorrect usage. This has already happened in the wild and the issue was reported on UDN.
Controlling visibility by attributes does not work due to those operators being defined with default visibility in system headers (same issue: http://lists.apple.com/archives/xcode-users/2006/Jan/msg00696.html)

#codereview Josh.Adams, Michael.Trepka, Daniel.Lamb

[CL 2083596 by Dmitry Rekman in Main branch]
2014-05-29 16:54:33 -04:00