Commit Graph

18 Commits

Author SHA1 Message Date
Ben Marsh
c82d6fd3e7 [INTEGRATE] Change 2422587 by Mike.Fricker@MFRICKER_G3686_Alpha on 2015/01/28 14:18:12
UnrealBuildTool: Minor progress text clean-ups for consistency with editor

[CL 2425866 by Ben Marsh in Main branch]
2015-01-30 11:05:55 -05:00
Mike Fricker
7d2f5740a2 Improved support for compiling and linking using Clang on Windows platform
- Disclaimer: This is all experimental forward-looking stuff, we don't recommend using this yet!
- Added native support for Clang command-line on Windows ('clang-cl' is not required, but still supported)
- Clang debug symbols are now Visual Studio compatible (use latest Clang 3.6.0 prelease build.)
- Clang linker (LLD.exe) now works with most UE4 binaries, but debug symbols won't work
- New 'WindowsPlatform.bUseVCCompilerArgs' that controls whether to the VC-style wrapper with Clang
- Implemented precompiled header support (requires native Clang binary.)  There are still a few bugs in Clang with struct packing which prevent us from using PCHs on Windows though.
- Editor still can't compile under Clang because of some DX header file issues, possibly system include related.
- Unreal Build Tool: Reduced default performance spew when using the local executor (non-XGE builds.)

[CL 2393051 by Mike Fricker in Main branch]
2014-12-18 16:52:27 -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
Jaroslaw Palczynski
354877d63e [GitHub] 450 : Added UBT build option to limit number of jobs.
#ttp 347138

[CL 2309629 by Jaroslaw Palczynski in Main branch]
2014-09-25 08:10:40 -04:00
Mike Fricker
649b2db782 UnrealBuildTool: Minor console output cleanups
- Changed formatting of some console output
- No longer print notification about full C++ rescan unless that feature is active

[CL 2264360 by Mike Fricker in Main branch]
2014-08-20 11:47:58 -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
ea50e1def7 Added code to handle COM crashes when detecting physical processor count in UBT
[CL 2244406 by Robert Manuszewski in Main branch]
2014-08-05 13:03:54 -04:00
Mark Satterthwaite
d922524627 Implemented support for Distcc + DMUCs as an alternative to XGE on Mac OS X.
By either manually configuring distcc & DMUCS as per their documentation, or using the DistCode Xcode plugin compilation can be distributed amongst networked Macs.
All Macs must have the same developer tools installed & the same distcc/DMUCS/DistCode and be on the same local network.
This works for compiling for Mac & iOS and it should be possible to configure distcc & DMUCS manually for use on build farms for remote building from Windows.
Linux could also use this for local builds or remote build farms - but I'm not in a position to test this.

[CL 2238171 by Mark Satterthwaite in Main branch]
2014-07-31 07:33:17 -04:00
Josh Adams
ec94935229 - Added the ability for remote compiles to have the [x/y] text in UBT output
[CL 2229125 by Josh Adams in Main branch]
2014-07-23 18:42:01 -04:00
Daniel Lamb
14e2e29af5 Changed the running directory for clang on android so that we can use relative path names for library files.
Gets around issue with too many commandline parameters going to the linker :(.

[CL 2107042 by Daniel Lamb in Main branch]
2014-06-16 11:10:54 -04:00
Ben Marsh
7655980f4b Get UBT to write out progress information while compiling. Also fix missing output if telemetry fails to initialize.
[CL 2074584 by Ben Marsh in Main branch]
2014-05-15 15:33:29 -04:00
Dmitry Rekman
72d389f2cb UBT: Apply memory-based job heuristics to all Mono platforms
#codereview Michael.Trepka, Mark.Satterthwaite, Niklas.Smedberg, Daniel.Wright

[CL 2074086 by Dmitry Rekman in Main branch]
2014-05-15 08:35:20 -04:00
Dmitry Rekman
fd7b570421 Linux: UBT: limit number of parallel jobs by RAM available.
Limit number of parallel actions by introducing memory budget per each action - arguably a better heuristic than just dividing number of cores by two.

#codereview Robert.Manuszewski, Michael.Trepka, Mark.Satterthwaite

[CL 2072899 by Dmitry Rekman in Main branch]
2014-05-14 09:53:05 -04:00
Mark Satterthwaite
040ae73079 #summary Respect Xcode's compiler options & analyze feature.
#change Parse the compiler selected in Xcode & find the Xcode plugin which contains the executable to run when it isn't the default.
#change When the analyze option is enabled (either standalone or as a build setting) we need to pass through the analyze clang flag.
#change Pass in the Xcode max. parallel build tasks default to UBT as an environment variable rather than just assuming we want to use half the CPUs.
#notes This means we can use an external compiler (even a GPL one like distcc) without any direct dependency. Editor builds still use the default compiler since it isn't clear how to know which compiler is intended to be used in that case - the Xcode environment variable won't have been set.
#codereview michael.trepka, jack.porter

[CL 2072854 by Mark Satterthwaite in Main branch]
2014-05-14 09:23:11 -04:00
Dmitry Rekman
74907c7330 Show progress (action number/total actions) when executing actions locally.
Also, do not halve number of processors when running on mono (unnecessary generalization).
Part of pull request 49 by sbc, see https://github.com/EpicGames/UnrealEngine/pull/49 for details.

#codereview Ben.Marsh

[CL 2045177 by Dmitry Rekman in Main branch]
2014-04-23 18:40:26 -04:00
Michael Trepka
e0d9ed4212 Added Action.CommandDescription to UBT and used it in MacToolChain to make the build log nicer.
[CL 2039860 by Michael Trepka in Main branch]
2014-04-23 17:31:19 -04:00
UnrealBot
db494a6e69 Engine source (Main branch up to CL 2037954) 2014-04-02 18:09:23 -04:00
Tim Sweeney
324683ce78 Engine source (Main branch up to CL 2026164) 2014-03-14 14:13:41 -04:00