Ben Marsh
b3dddeb541
Cache the name of the API define for each module and the relative path to its base directory, to avoid calculating them each time.
...
[CL 2683585 by Ben Marsh in Main branch]
2015-09-08 15:50:24 -04:00
Ben Marsh
404e121531
Store the list of valid plugins on the rules assembly, and allow looking up the plugin info for a module without having to scan the whole list.
...
[CL 2682885 by Ben Marsh in Main branch]
2015-09-08 07:59:23 -04:00
Ben Marsh
79120fe20e
Store module references rather than module names in UEBuildBinary. Removes several code paths that look them up more than once, or create redundant instances of module rules classes.
...
[CL 2681939 by Ben Marsh in Main branch]
2015-09-06 10:35:57 -04:00
Ben Marsh
af44f007b1
Only determine the module distribution level when it's actually required, and don't do it when generating project files.
...
[CL 2680154 by Ben Marsh in Main branch]
2015-09-04 08:02:30 -04:00
Ben Marsh
9610023ca5
Use FileReference and DirectoryReference classes instead of strings for paths. Massively reduces the amount of paranoid calls to GetFullPath(), CleanDirectorySeparators() et al., and improves performance for really common UBT operations like making relative paths or checking if files are under a directory. Strong typing ensures that intention of parameters is explicit.
...
[CL 2678429 by Ben Marsh in Main branch]
2015-09-03 08:47:24 -04:00
Ben Marsh
6f3e34fcae
Track references to dependent modules rather than just keeping their name. Saves having to look up module names repeatedly.
...
[CL 2672889 by Ben Marsh in Main branch]
2015-08-28 15:47:20 -04:00
Ben Marsh
766278f542
Pass the module rules into the constructor module instances, rather than passing all the parameters individually. The number of things that get passed around is getting silly, and keeping the two things as ideologically separate is time consuming and hard to maintain.
...
[CL 2672163 by Ben Marsh in Main branch]
2015-08-28 08:39:42 -04:00
Ben Marsh
42c53cf179
Change IUEBuildPlatform.ModifyNewlyLoadedModule to IUEBuildPlatform.ModifyModuleRules(). Only modifying the rules object rather than the implementation itself makes it easier to optimize caching module references.
...
[CL 2672146 by Ben Marsh in Main branch]
2015-08-28 07:27:26 -04:00
Ben Marsh
ddffc7e3dd
Fix PCH environment changing when a module has an include path dependency, but the decision to compile that module is dependent on something else. Now always generates a consistent compile environment regardless of whether the other module binary is actually built.
...
#jira UE-19783
[CL 2649648 by Ben Marsh in Main branch]
2015-08-10 13:10:18 -04:00
Mike Fricker
659cb89e9c
[INTEGRATE] UnrealBuildTool fixes for small modules
...
- Fixed small game-specific plugins always using non-unity and getting a unique PCH
- You can now override the default behavior of UBT which compiles small game modules for "fast iteration"
- Many small game modules have a low frequency of iteration, and never need a unique PCH or non-unity enabled
- You can use the following module-specific variables to override the default behavior:
MinSourceFilesForUnityBuildOverride = 1;
MinFilesUsingPrecompiledHeaderOverride = BuildConfiguration.MinFilesUsingPrecompiledHeader;
[CL 2648185 by Mike Fricker in Main branch]
2015-08-07 13:58:49 -04:00
Lee Clark
d8c6aca65d
SN-DBS support for distributed compilation of Win64 builds
...
* Modules that use #import (DatabaseSupport & VisualStudioSourceCodeAccessor) are forced to be built locally due to SN-DBS limitation . These are very small modules so have a minimal impact on build time.
#codereview Mike.Fricker
[CL 2610243 by Lee Clark in Main branch]
2015-07-03 05:23:01 -04:00
Steve Robb
db5429d360
AVX support in UnrealBuildTool.
...
#codereview robert.manuszewski
[CL 2604153 by Steve Robb in Main branch]
2015-06-29 12:24:33 -04:00
Steve Robb
0144ad9af6
Makefile fix for UHT types being added to or removed from existing headers.
...
CaselessDictionary made serializable.
New FileContentsCacheType for enabling simple lookup and caching of file contents.
Fix for module references differing in case from module definitions e.g. Http and HTTP.
Some general refactoring.
#codereview robert.manuszewski
[CL 2581357 by Steve Robb in Main branch]
2015-06-09 11:50:55 -04:00
Ben Marsh
0664b38ebb
Fix linking against static libraries which have circular references back to the original binary. Plugins depend on other engine modules, but linking a monolithic game should not add a library dependency on the monolithic executable.
...
[CL 2562433 by Ben Marsh in Main branch]
2015-05-22 08:57:34 -04:00
Jaroslaw Palczynski
0449062ef4
UE-15116: Engine *.generated.cpp files change during hot-reload
...
#codereview Robert.Manuszewski
[CL 2550523 by Jaroslaw Palczynski in Main branch]
2015-05-14 08:05:11 -04:00
Ben Marsh
92890dda05
Use a clean compile environment to build shared PCHs, instead of reusing the current module compile environment.
...
#codereview Mike.Fricker
[CL 2548754 by Ben Marsh in Main branch]
2015-05-13 07:52:34 -04:00
Ben Marsh
6b1d263572
Make bEnableShadowVariableWarnings a per-module setting, so we don't break reuse of shared build intermediates.
...
#codereview Marc.Audy, Wes.Hunt
[CL 2547047 by Ben Marsh in Main branch]
2015-05-12 08:03:21 -04:00
Steve Robb
dbd595a52f
UEBuildTarget stores its .Target.cs filename.
...
UEBuildModule stores its .Module.cs filename.
UEBuildTarget stores a map of dictionaries from module names to .Target.cs files.
Timestamps of serialized .Target.cs and .Module.cs files compared against makefile and used for invalidation.
More sensible Dictionary logic in ConditionallyCompileAndLoadRulesAssembly.
InstantiateModule can no longer return a null.
UEBuildModule constructors no longer default.
#codereview robert.manuszewski
[CL 2543446 by Steve Robb in Main branch]
2015-05-08 15:19:00 -04:00
Ben Marsh
0e07cb785e
Remove another global plugin module name loookup.
...
[CL 2519736 by Ben Marsh in Main branch]
2015-04-21 15:16:38 -04:00
Ben Marsh
be2b506c24
Simplify check for detecting an engine module whether to disable optimizations in DebugGame; just look if it's under the engine directory.
...
[CL 2519330 by Ben Marsh in Main branch]
2015-04-21 11:27:37 -04:00
Ben Marsh
a2560dd3d3
Store the generated code directory on the module object in UBT, so we don't need to query global plugin state to figure it out.
...
[CL 2518418 by Ben Marsh in Main branch]
2015-04-20 18:05:25 -04:00
Ben Marsh
208957aa7f
Implement PluginDescriptor and ModuleDescriptor in UBT in an identical way to the engine. Also add a wrapper for objects parsed by fastJSON, that allows easier retrieval of typed fields.
...
[CL 2517026 by Ben Marsh in Main branch]
2015-04-19 12:03:48 -04:00
Ben Marsh
28fe22e11b
Move GetGeneratedCodeDirectoryForModule into UEBuildTarget, so it can make use of shared logic with figuring out output paths.
...
[CL 2516280 by Ben Marsh in Main branch]
2015-04-17 15:21:14 -04:00
Ben Marsh
d2180e5f18
Don't force adding a module to a binary, even if we create it. Some targets have dependencies on include paths from other modules, but those modules never actually get built. (UnrealFileServer has an indirect dependency on DDCUtils this way, but it's not actually part of the target even though the module exists a bIncludeInTarget gets set).
...
[CL 2509637 by Ben Marsh in Main branch]
2015-04-11 15:31:07 -04:00
Ben Marsh
395c3bdbbe
Reduce the number of codepaths used for creating new binary modules.
...
[CL 2509610 by Ben Marsh in Main branch]
2015-04-11 13:09:16 -04:00