Commit Graph

35 Commits

Author SHA1 Message Date
Dmitry Rekman
0dc3ccd3e0 Linux: support compiling for other architectures than x86_64.
[CL 2345608 by Dmitry Rekman in Main branch]
2014-10-30 19:44:12 -04:00
Dmitry Rekman
45ed24286b Fix linking to libraries located in path with spaces.
- PR #551 contributed by amigo.
- Fixes a quite common case of a project with plugins being located in "Unreal Projects" directory.
- UE-4651

[CL 2343090 by Dmitry Rekman in Main branch]
2014-10-28 20:44:29 -04:00
Dmitry Rekman
9fcf3ff7d6 Prevent compilation attempts that are known to fail.
- No clang 3.4.x nor gcc on Linux.

[CL 2339031 by Dmitry Rekman in Main branch]
2014-10-23 16:21:44 -04:00
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