Commit Graph

151 Commits

Author SHA1 Message Date
Ben Marsh
6cecf89d14 UBT: Expose all the options for configuring the project file generator to the BuildConfiguration.xml files.
#rb none
#fyi Donal.MacCarthy

[CL 5708626 by Ben Marsh in Dev-Build branch]
2019-04-03 09:11:22 -04:00
Ben Marsh
305c1e8512 UBT: Exclude any source files in a ThirdParty folder from the generated solution, not just those under Engine/Source/ThirdParty. There are a lot of large third party modules in engine plugins.
#rb none

[CL 5618127 by Ben Marsh in Dev-Build branch]
2019-03-27 20:04:42 -04:00
Ben Marsh
07e535411b Merging //UE4/Dev-Main to Dev-Build (//UE4/Dev-Build)
#rb none
#rnx

[CL 5435186 by Ben Marsh in Dev-Build branch]
2019-03-18 16:38:36 -04:00
Ben Marsh
03ccbeb0a1 UBT: Exclude projects with temporary targets from generated project files by default. Can be re-enabled by passing -IncludeTempTargets to GenerateProjectFiles.bat.
#rb none
#jira UE-71318

[CL 5359427 by Ben Marsh in Dev-Build branch]
2019-03-11 10:57:27 -04:00
ben marsh
c58bb3b972 UBT: Include other files in the project directory within the generated projects.
#rb none
#rnx
#jira

#ROBOMERGE-OWNER: ben.marsh
#ROBOMERGE-AUTHOR: ben.marsh
#ROBOMERGE-SOURCE: CL 5271663 in //UE4/Release-4.22/... via CL 5271664
#ROBOMERGE-BOT: BUILD (Main -> Dev-Build)

[CL 5274379 by ben marsh in Dev-Build branch]
2019-03-01 21:00:43 -05:00
Ben Marsh
0f79d0e564 Merging //UE4/Dev-Main to Dev-Build (//UE4/Dev-Build)
#rb none
#rnx

[CL 4979967 by Ben Marsh in Dev-Build branch]
2019-02-12 21:08:26 -05:00
Ben Marsh
6bef1a9def UBT: Remove code to add the -Monolithic option when generating intellisense data. This only exists to prevent intellisense errors because the DLLEXPORT and DLLIMPORT macros are mismatched for the project containing all modules; we can achieve this by explicitly modifying the macros instead.
#rb none
#rnx

[CL 4686059 by Ben Marsh in Dev-Build branch]
2019-01-07 15:09:52 -05:00
Ben Marsh
973932605e UBT: Fix project file generator including all projects in the workspace in the solution, even if a specific project file is specified.
#rb none
#rnx

[CL 4685376 by Ben Marsh in Dev-Build branch]
2019-01-07 12:21:18 -05:00
Ben Marsh
7ad281502a UBT: Don't assume the default architecture for a platform is the empty string. It's not on Linux, which causes warnings when generating project files.
#rb none
#jira UE-68019
#rnx

[CL 4682487 by Ben Marsh in Dev-Build branch]
2019-01-04 14:51:43 -05:00
Ben Marsh
ab043601f1 UBT: Remove the project dependency on ShaderCompileWorker being compiled for any project targets. Instead, SCW is built through the same UBT invocation that builds the editor, allowing files to be built in parallel. This also removes the dependency on ShaderCompileWorker being built for non-editor targets (since Visual Studio does not support per-configuration project dependencies).
#rb none

[CL 4681497 by Ben Marsh in Dev-Build branch]
2019-01-04 10:58:28 -05:00
Ben Marsh
bd434e9387 UBT: Convert the -SingleFile= argument to be per-target.
#rb none
#rnx

[CL 4671876 by Ben Marsh in Dev-Build branch]
2018-12-20 12:10:57 -05:00
Ben Marsh
61701a788c UBT: Optimize file operations to use cached file/directory info, and to discover plugins/rules files in parallel. Also add more stats for different parts of the build.
#rb none
#rnx

[CL 4671815 by Ben Marsh in Dev-Build branch]
2018-12-20 10:46:51 -05:00
Ben Marsh
5b31a8c5a5 PR #5356: Modified fix to accommodate default build environment being set to shared by the time Intellisense is being gathered.
#rb none
#rnx

[CL 4669424 by Ben Marsh in Dev-Build branch]
2018-12-18 19:46:33 -05:00
Ben Marsh
0270d8f66a UBT: Add a cache for source file metadata (containing text from the first include directive, and a flag for whether the file contains reflection markup). Replaces the previous include dependency cache, since we now only require the first include directive. Saves ~2s whenever UHTModuleInfo array has to be regenerated.
#rb none

[CL 4668325 by Ben Marsh in Dev-Build branch]
2018-12-18 10:21:34 -05:00
Ben Marsh
f01ddb51ae UBT: Add support for building multiple targets in parallel.
* A makefile is now constructed for each target, and the outdated actions are combined into a single graph before execution.
* Makefiles are used in all build modes, regardless of whether they are saved to disk, and represent the vector by which a target's build actions are passed to the executor.
* The -JsonExport= argument has been removed, and a separate JsonExport mode has been added (invoke with eg. "-Mode=JsonExport UE4Editor Win64 Development")
* Multiple action history files are kept open at one time, and a hierarchy is used for each target.

#rb none

[CL 4667512 by Ben Marsh in Dev-Build branch]
2018-12-17 20:49:30 -05:00
Ben Marsh
2073022699 UBT: Rename UBTMakefile to TargetMakefile.
#rb none
#rnx

[CL 4665132 by Ben Marsh in Dev-Build branch]
2018-12-16 21:20:19 -05:00
Ben Marsh
0c9707d678 UBT: Use compiler-generated dependency information for source file dependencies. This ensures that the dependency list is accurate, and makes incremental builds more reliable.
* A standalone Win32 application called cl-filter is used to parse output from running the Visual Studio compiler with the /showIncludes option, and generate a dependency list similar to Clang.
* Actions which produce an external dependency list declare it explicitly. If the dependency list is missing, or any of the contents are out of date, the action is rebuilt.
* The contents of dependency lists are cached by the CppDependencyCache class for future iterations.

#rb none

[CL 4665060 by Ben Marsh in Dev-Build branch]
2018-12-16 14:22:47 -05:00
ahaczewski
84ca76f90f PR #5356: UE-67548: UBT: Fix for IntelliSense generation for game projects using engine source (Contributed by ahaczewski)
#rb none
#rnx

[CL 4662991 by Ben Marsh in Dev-Build branch]
2018-12-14 15:42:55 -05:00
Ben Marsh
530369c613 Merging //UE4/Dev-Main to Dev-Build (//UE4/Dev-Build)
#rb none
#rnx

[CL 4662695 by Ben Marsh in Dev-Build branch]
2018-12-14 14:49:12 -05:00
Ben Marsh
d142b482cf UBT: Removing a few unused/unnecessary properties and accessors, and moving the GetSupportedPlatforms() method from UEBuildTarget to TargetRules.
#rb none
#rnx

[CL 4643907 by Ben Marsh in Dev-Build branch]
2018-12-08 15:58:08 -05:00
Ben Marsh
a2d4bbe283 UBT: Remove unnecessary arguments array to UEBuildTarget.CreateTarget.
#rb none
#rnx

[CL 4643765 by Ben Marsh in Dev-Build branch]
2018-12-08 10:22:41 -05:00
Ben Marsh
3936a5597e UBT: Initial support for Visual Studio 2019.
#rb none

[CL 4631203 by Ben Marsh in Dev-Build branch]
2018-12-05 01:04:21 -05:00
Ben Marsh
4c5e2a0724 UBT: Store the project file on each target descriptor, and remove the need for a single "global" active project at any one time. Add support for specifying multiple targets on the command line via -Target arguments (eg. -Target="UnrealHeaderTool Win64 Development" -Target="UnrealPak Win64 Development"), and multiple platforms and configurations via + characters (eg. "UE4Editor Win64 Debug+Development")
#rb none

[CL 4625702 by Ben Marsh in Dev-Build branch]
2018-12-03 17:34:46 -05:00
Ben Marsh
8ffa740219 UBT: Replace UProjectInfo with the NativeProjects class, which caches the list of native projects to the engine. Foreign projects do not need to be registered with it, and the list of native projects is found on demand.
#rb none
#rnx

[CL 4623538 by Ben Marsh in Dev-Build branch]
2018-12-03 09:44:24 -05:00
Ben Marsh
435bc9778e Various changes to hot reload build process.
* Hot reload now shares the regular UBT makefile, significantly improving performance for first-time compile. The history of previous hot-reloads is stored in an intermediate file (see GetHotReloadStateFile()), allowing the action graph to be patched to the last hot reload state before executing the build rather than creating a separate makefile. (A nice side effect of this is that it allows tracking hot reload attempts, and assigning incremental suffixes rather than random numbers for each run).
* The list of modules eligable for hot reload is now explicitly saved to the makefile. During a hot reload from IDE invocation, we always try to build all out of date modules and only apply suffixes to those that support it. This prevents the confusing behavior where an editor open in the background will not attempt to build certain files.
* Logic for building dependent modules is now significantly more reliable. Only modules with changes are rebuilt, and all dependent modules of those modules are correctly rebuilt too. The -CanSkipLink option is no longer necessary, and has been removed.
* All code for dealing with hot-reload only happens when the action graph is executed. The construction of a target no longer has any knowledge of whether hot reload is enabled or not.

#fyi Steve.Robb
#rb none

[CL 4621192 by Ben Marsh in Dev-Build branch]
2018-12-01 16:20:37 -05:00