Commit Graph

383 Commits

Author SHA1 Message Date
Ben Marsh
abe8c13ef6 Fix modules being incompatible after being compiled on editor startup; build ID was being set to a new value, but the editor had already read it.
[CL 2692431 by Ben Marsh in Main branch]
2015-09-15 17:06:03 -04:00
Peter Sauerbrei
e2e7e2edb6 missed some ini sections that need to be loaded
[CL 2692430 by Peter Sauerbrei in Main branch]
2015-09-15 17:05:07 -04:00
Peter Sauerbrei
e706287759 Speed up reading and accessing ini files from UAT/UBT
#uat
#ubt
#codereview ben.marsh, wes.hunt

[CL 2691637 by Peter Sauerbrei in Main branch]
2015-09-15 09:29:42 -04:00
Ben Marsh
01b1901137 Cache checks for whether a module has source files.
[CL 2684672 by Ben Marsh in Main branch]
2015-09-09 10:47:39 -04:00
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
ca0012cbeb Cache the list of libraries to link dependencies with rather than recalculating every time.
[CL 2682888 by Ben Marsh in Main branch]
2015-09-08 08:00:41 -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
cbca80c79b Don't create receipts when generating project files; they aren't needed.
[CL 2681977 by Ben Marsh in Main branch]
2015-09-06 12:50:15 -04:00
Ben Marsh
f67b68a903 Restore missing runtime dependencies in target receipts for editor configurations. Includes runtime dependencies for precompiled modules in monolithic targets at the moment.
[CL 2681947 by Ben Marsh in Main branch]
2015-09-06 11:30:38 -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
09aa8b2f62 Reduce time taken to generate receipts by using the target's view of the required modules, rather than recursively finding them from all the binaries. Also use the FileReferences for build products to optimize the way we escape build product paths.
[CL 2681758 by Ben Marsh in Main branch]
2015-09-05 18:10:25 -04:00
Ben Marsh
6870744ad2 Cache directory searches when looking for include paths. When generating project files we do this many times over.
[CL 2681652 by Ben Marsh in Main branch]
2015-09-05 11:12:19 -04:00
Ben Marsh
b10ae33186 Simplify logic for adding additional include paths to a module, and switch it to use FileReference/DirectoryReference. Compared exported XGE for building FortniteGame; should be identical apart from a few places that have more consistent directory separators now.
[CL 2681641 by Ben Marsh in Main branch]
2015-09-05 09:32:27 -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
8aec191675 Remove some esoteric options from the project file generator (for only showing public headers, and hiding NoRedist folders) to improve performance of directory scanning.
[CL 2679439 by Ben Marsh in Main branch]
2015-09-03 17:31:11 -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
28f7c6d8f9 Move the AddDefaultIncludePathsToModuleRules() function into UEBuildTarget, since it's not related to the RulesCompiler.
[CL 2674243 by Ben Marsh in Main branch]
2015-08-31 12:47:36 -04:00
Ben Marsh
d06ce0c4a0 Compile rules for the engine into separate assemblies than rules for each project, so we aren't redundantly compiling them more than once. Also compile rules for each foreign plugin into its own assembly. Reduces time taken to generate project files by almost half (~40s to ~26s) in local testing.
#codereview Peter.Sauerbrei

[CL 2674225 by Ben Marsh in Main branch]
2015-08-31 12:39:51 -04:00
Ben Marsh
0a89383b5a Explicitly compile the rules assembly and pass it around as a parameter, rather than caching it as global state in RulesCompiler.
[CL 2674051 by Ben Marsh in Main branch]
2015-08-31 10:33:16 -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
Mike Fricker
e85564743c [INTEGRATE] Unreal Build Tool: Adaptive unity builds (experimental!)
- New UBT support for "adaptive unity builds", which can greatly increase iterative compile times
- This feature allows UBT to keep track of which source files you're currently editing between runs
- UBT will exclude your "working set" source files from all unity blob files, allowing for fast iterative compiles!
- Currently, adaptive unity builds relies on files being writable vs. read-only to determine what you're working on (P4 edit)
- Enable this new feature in your BuildConfiguration.xml file.

    <BuildConfiguration>
           <bUseAdaptiveUnityBuild>true</bUseAdaptiveUnityBuild>
    </BuildConfiguration>

[CL 2671467 by Mike Fricker in Main branch]
2015-08-27 16:33:06 -04:00
Ben Marsh
3d6c0e0a81 Convert target receipts to JSON, so they can be read early at startup like version manifests, and unify the way that target receipts and version manifests are loaded and saved.
[CL 2669100 by Ben Marsh in Main branch]
2015-08-26 08:25:10 -04:00
Wes Hunt
bb27f83e9a CleanDirectory now ignores DirectoryNotFoundExceptions to harden against outside sources deleting that folder before it gets to it. I ran into this when manually deleting a subset to Intermediates to iterate on the UBT bug.
[CL 2664873 by Wes Hunt in Main branch]
2015-08-21 16:09:56 -04:00