Commit Graph

48 Commits

Author SHA1 Message Date
jonathan adamczewski
de4f879f66 UnrealBuildTool:
Remove unnecessary check for Makefile validity.

#jira none
#rb none
#trivial

#ROBOMERGE-SOURCE: CL 17375405 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v865-17346139)

[CL 17375418 by jonathan adamczewski in ue5-release-engine-test branch]
2021-08-31 15:18:10 -04:00
jonathan adamczewski
05b7df7113 Various spelling & phrasing in comments & string
#jira none
##trivial

#ROBOMERGE-SOURCE: CL 17249885 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v855-17104924)

[CL 17249895 by jonathan adamczewski in ue5-release-engine-test branch]
2021-08-20 13:31:20 -04:00
jonathan adamczewski
79aed20146 UnrealBuildTool:
Support for writing files directly as lines, without converting to a single string first.

#jira none
#rb joe.kirchoff

#ROBOMERGE-SOURCE: CL 17162046 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v855-17104924)

[CL 17162059 by jonathan adamczewski in ue5-release-engine-test branch]
2021-08-12 20:46:22 -04:00
jonathan adamczewski
f270855eef AutomationTool: Compile script modules within the application
Add a layer of caching to avoid running msbuild as much as possible.

#jira UE-109181
#rb ben.marsh

#ROBOMERGE-SOURCE: CL 17102399 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v853-17066230)

[CL 17102408 by jonathan adamczewski in ue5-release-engine-test branch]
2021-08-09 10:39:35 -04:00
jonathan adamczewski
64c210d294 AutomationTool, BuildUtilities:
UnrealBuild -> Unreal for EngineDirectory, RootDirectory, IsEngineInstalled, UnrealBuildToolPath
Remove CommandUtils EngineDirectory, RootDirectory, IsEngineInstalled - use equvalents from UnrealBuildBase.Unreal

#jira none

#ROBOMERGE-SOURCE: CL 16648181 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v833-16641396)

[CL 16648203 by jonathan adamczewski in ue5-release-engine-test branch]
2021-06-11 18:21:35 -04:00
jonathan adamczewski
233b7719a5 <saved by Perforce>
#ROBOMERGE-SOURCE: CL 16642197 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v833-16641396)

[CL 16642206 by jonathan adamczewski in ue5-release-engine-test branch]
2021-06-11 11:37:42 -04:00
zousar shaker
0bfa0c6063 Allow TargetRules to specify pointer behavior overrides that will be applied when calling UnrealHeaderTool. This is to permit individual projects (eg: ShooterGame) to enforce use of TObjectPtr in place of raw pointer members without requiring that other projects do the same. Example usage from ShooterGameEditor.target.cs:
NativePointerMemberBehaviorOverride = PointerMemberBehavior.Disallow;

#rb jonathan.adamczewski

#ROBOMERGE-SOURCE: CL 16640935 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v831-16623017)

[CL 16640936 by zousar shaker in ue5-release-engine-test branch]
2021-06-11 10:08:10 -04:00
jonathan adamczewski
ad86e81438 UnrealBuildTool:
Add a StringComparison argument to CreateIntermediateTextFile() and require callers to make a decision about the case-sensitivity used when considering whether to re-write a file.

(This is intentionally explicit and verbose at the call-site - we should implement a better solution. This change makes it clear that there is work to be done to be able to simplify the interface and achieve reliable behavior.)

As a first pass, C++ files (headers, cpp files, pch files) will have a case-sensitive comparison (C++ code is, mostly, case sensitive), Linux script files have a case-sensitive comparison (case-sensitive filesystem), and all other files are compared disregarding case - to match pre-existing behavior, and with the desire to not borrow more surprises than necessary.

#jira none

#ROBOMERGE-SOURCE: CL 16616339 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v828-16531559)

[CL 16616345 by jonathan adamczewski in ue5-release-engine-test branch]
2021-06-09 19:45:21 -04:00
jonathan adamczewski
d58996b916 UnrealBuildTool: move some path constants into BuildUtilities
RootDirectory, EngineDirectory, UnrealBuildToolPath are now found in BuildUtilities' UnrealBuild namesapce.

The way these are computed has changed. Previously, it was assumed that the application is UnrealBuildTool, and paths were constructed relative to that assembly.

Now, the assumption is that the process is located under a "Engine/Build/DotNET" sub-path and paths are constructed relative to that.

#jira none

#ROBOMERGE-SOURCE: CL 16607440 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v828-16531559)

[CL 16607455 by jonathan adamczewski in ue5-release-engine-test branch]
2021-06-09 12:55:13 -04:00
jonathan adamczewski
a865a21fb0 Move FileItem and DirectoryItem into BuildUtilities
#jira none

#ROBOMERGE-SOURCE: CL 16596289 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v828-16531559)

[CL 16596323 by jonathan adamczewski in ue5-release-engine-test branch]
2021-06-08 19:06:03 -04:00
Ben Marsh
69d6f57566 UBT: Fix error trying to read makefile, due to value being null.
[CL 16170433 by Ben Marsh in ue5-main branch]
2021-04-30 13:31:27 -04:00
Marc Audy
bf80889353 UE5/Release-Engine-Staging to UE5/Main
This represents UE4/Main up to CL# 14958402

[CL 15028197 by Marc Audy in ue5-main branch]
2021-01-08 19:56:07 -04:00
Ben Marsh
6f927647b1 Changing C# code over to using EpicGames.Core over DotNETCommon.
#rb none
#rnx

[CL 14962096 by Ben Marsh in ue5-main branch]
2020-12-21 23:07:37 -04:00
Ben Marsh
68f5abeb09 UBT: Convert UnrealBuildTool to use nullable references.
#rb none
#rnx

[CL 14960546 by Ben Marsh in ue5-main branch]
2020-12-20 18:47:42 -04:00
Ben Marsh
7047e080af UBT: Rename IAction to IExternalAction, to distinguish it from actions which only exist within UBT.
#rb none
#rnx

[CL 14823490 by Ben Marsh in ue5-main branch]
2020-11-30 16:58:32 -04:00
Ben Marsh
96c997d826 UBT: Move logic for building response files and generating inputs and outputs for MSVC compilation into the VCCompileAction class.
#rb none
#rnx

[CL 14812826 by Ben Marsh in ue5-main branch]
2020-11-25 10:19:33 -04:00
Ben Marsh
b598d6ffd8 UBT: Remove Action.bPrintDebugInfo. This is no longer read by anything.
#rb none
#rnx

[CL 14810786 by Ben Marsh in ue5-main branch]
2020-11-24 16:15:02 -04:00
Ben Marsh
74732c7177 UBT: Convert a few more direct references to the Action class to IAction interfaces.
#rb none
#rnx

[CL 14810700 by Ben Marsh in ue5-main branch]
2020-11-24 15:42:08 -04:00
Ben Marsh
29bfdd417f UBT: Allow actions to implement custom serialization methods, and store abstract interfaces for actions in the makefile.
#rb none
#rnx

[CL 14810441 by Ben Marsh in ue5-main branch]
2020-11-24 14:37:31 -04:00
Ben Marsh
57d9b51398 Initial support for C++20 modules.
Requires Visual Studio 2019 15.8 Preview 3, and targets to specify bEnableCppModules = true. Unsupported on other compilers.

Notes:
- Module interfaces need to be placed in .IXX files.
- Module/module dependencies are determined by a post-makefile/pre-build scan of all module interfaces using the compiler, and cause additional prerequisites to be inserted into the dependency graph before execution.
- Available module IFC search paths use normal UE module dependency rules.
- Header units are not currently supported.
- Regular C++ files cannot currently implement functions defined in module interfaces, due to the macros force included by UBT. These macros need to be placed in the global module fragment, but declaring a global module fragment must be done from the translation unit being compiled (making force-included headers invalid).

#rb none

[CL 14354539 by Ben Marsh in ue5-main branch]
2020-09-20 15:04:30 -04:00
ryan vance
02bb20415f Copy up from DS to Main
#rb CopyUp



#ROBOMERGE-OWNER: ryan.vance
#ROBOMERGE-AUTHOR: ryan.vance
#ROBOMERGE-SOURCE: CL 12149088 via CL 12150247
#ROBOMERGE-BOT: (v659-12123632)

[CL 12150618 by ryan vance in Main branch]
2020-03-12 14:08:52 -04:00
ben marsh
0aa673b5fe UBT: Fix makefile being invalidated by response files updated during the build process. Also fix certain source files excluded from unity builds from triggering makefile invalidation.
Creation time of the makefile was being used to test whether dependencies have been modified, which is valid for external dependencies (since we want to catch any files modified after the build process starts), but not valid for files we create during the makefile building (such as response files).

Code attempting to detect response files was also incorrect, and would find any leaf files not included in a unity blob. Response files are now detected explicitly.

#rb none
#jira

#ROBOMERGE-SOURCE: CL 12039693 in //UE4/Release-4.25/... via CL 12039698
#ROBOMERGE-BOT: RELEASE (Release-4.25Plus -> Main) (v657-12064184)

[CL 12076084 by ben marsh in Main branch]
2020-03-09 13:20:18 -04:00
ben marsh
09ca12ccef Refactor UBT to use an interface (IActionGraphBuilder) to construct the action graph. Response files are also constructed through this interface, allowing them to be tracked as dependencies (will be added in subsequent change).
#rb none
#jira

#ROBOMERGE-SOURCE: CL 12038895 in //UE4/Release-4.25/... via CL 12038911
#ROBOMERGE-BOT: RELEASE (Release-4.25Plus -> Main) (v657-12064184)

[CL 12076066 by ben marsh in Main branch]
2020-03-09 13:20:14 -04:00
Ryan Durand
9ef3748747 Updating copyrights for Engine Programs.
#rnx
#rb none
#jira none

#ROBOMERGE-OWNER: ryan.durand
#ROBOMERGE-AUTHOR: ryan.durand
#ROBOMERGE-SOURCE: CL 10869242 in //Fortnite/Release-12.00/... via CL 10869536
#ROBOMERGE-BOT: FORTNITE (Main -> Dev-EngineMerge) (v613-10869866)

[CL 10870955 by Ryan Durand in Main branch]
2019-12-26 23:01:54 -05:00
Ben Marsh
ec2464a292 UBT: Add a mechanism for versioning which build settings UBT should use by default.
Any build targets have a DefaultBuildSettings property. For engine targets, this defaults to BuildSettingsVersion.Latest. For project targets, this defaults to BuildSettingsVersion.Release_4_23. For new projects, this will default to the engine version they are created from.

If a target is not using the latest default build settings, they will receive a message describing the settings that have changed, like this:

    [Upgrade]
    [Upgrade] Using UE 4.23 compatible build settings. The latest version of UE4 sets the following values by default, which may require code changes:
    [Upgrade]     bLegacyPublicIncludePaths = false                 => Omits subfolders from public include paths to reduce compiler command line length.
    [Upgrade]     PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs   => Set in build.cs files to enables IWYU-style PCH model. See https://docs.unrealengine.com/en-US/Programming/BuildTools/UnrealBuildTool/IWYU/index.html.
    [Upgrade] Suppress this message by setting 'DefaultBuildSettings = BuildSettingsVersion.Release_4_24;' in UnrealPak.Target.cs, and explicitly overriding desired settings.
    [Upgrade]

Intent is to reduce friction for users initially upgrading to new engine versions, while notifying them of more optimal build settings being available, and letting them choose when (or if) to use them.

#rb none

[CL 8556769 by Ben Marsh in Dev-Build branch]
2019-09-06 15:59:52 -04:00