Commit Graph

170 Commits

Author SHA1 Message Date
Joe Kirchoff
90760d72b0 UnrealBuildTool: Fix output typo
#preflight skipped

[CL 24550420 by Joe Kirchoff in ue5-main branch]
2023-03-07 18:05:10 -05:00
joe kirchoff
a6e3258893 UnrealBuildTool: If module valdiation is set to Error, raise an exception if any errors are found
#rnx
#jira UE-177808

[CL 24452688 by joe kirchoff in ue5-main branch]
2023-02-28 17:08:32 -05:00
Joe Kirchoff
ddcb912fe5 UnrealBuildTool: Remove CanUseParallelExecutor as it is no longer needed as the UAT ParallelExecutor has been removed and is obsolete.
#rnx
#rb trivial
#preflight 63fe749add78dd50f6247b02

[CL 24452546 by Joe Kirchoff in ue5-main branch]
2023-02-28 17:01:41 -05:00
joe kirchoff
606c42edeb Module include path validation. Disabled until outstanding issues are fixed
#rnx
#jira UE-177808
#rb Tim.Smith

[CL 24412746 by joe kirchoff in ue5-main branch]
2023-02-24 19:01:37 -05:00
Josh Adams
0f1dbb1c49 - Added MarkUsed flag to CommandLineAttribute
- Fixed up how UnrealArchitectureConfig classes have commandline applied
- Proper fix for UE-176691
#jira UE-176691
#rb joe.kirchoff
#preflight 63ebd379514832b2425b83c2

[CL 24217163 by Josh Adams in ue5-main branch]
2023-02-14 13:57:08 -05:00
joe kirchoff
2871eccc2c UnrealBuildTool: Fix issue that is causing -Compiler= to not be applied to WindowsTargetRules by applying arch configs and command lines in the TargetRules. Partial back out of 23931789
#rnx
#jira UE-176691
[FYI] Josh.Adams
#preflight 63e58a7dcf3b0e3deea9303e

[CL 24114144 by joe kirchoff in ue5-main branch]
2023-02-09 22:37:55 -05:00
Josh Adams
bff11d0cb8 - Another HoloLens compiler fix for allowing XmlConfig and CommandLine overrides for compiler version (to specify 2019 compiler). Only project settings were being respected before
- Apply commandline options to UnrealArchitectureConfig objects in Build and GenProject modes
- Also fixed a commant for XML documentation
#rb tim.smith
#jira UE-175633
#preflight 63d9525931334253e599eaa5

[CL 23930591 by Josh Adams in ue5-main branch]
2023-01-31 12:48:45 -05:00
josh adams
1610c3bee3 UnrealArch/UnrealArchitectures changes
- Creates the UnrealArchitectures class, which wraps a list of UnrealArch objects
 - UnrealArch is a single architecture, expandable enum-like struct
 - There is no more concept of "no/default architecture", there is always a valid active architecture when building
 - Most uses of "string Architecture" are replaced with one of the two above, depending if multiple architectures are supported or not
 - UnrealArch has some platform-extensions for platform-specific naming (like Linux adds in LinuxName that turns, for instance, Arm64 -> aarch64-unknown-linux-gnueabi, which is used in folder names, etc)
 - UnrealArch has bIsX64 which can be used determine intel instruction set (as opposed to arm)
 - TargetRules class has an "Architecture" accessor that will return a single architecture if the active architectures is a single architecture, or throw an exception if multiple. This is useful in a majority of the cases where a paltform can only have a single architecture active in TargetRules (microsoft platforms, for instance, will create separate targets when compiling multiple architectures at once)
 - Added UnrealArchitectureConfig class, which contains all the architecture information for a platform (what architectures are supported, what ones are currently active for given project, etc)

#preflight 63c81fb5b065224750a1759e
#rb mike.fricker,roman.dzieciol,joe.kirchoff,dmytro.vovk,brandon.schaefer [various parts]
#p4v-preflight-copy 23562471

[CL 23829977 by josh adams in ue5-main branch]
2023-01-24 09:30:28 -05:00
Josh Adams
622efc4c0d - More Architecture cleanup
- Added UAT params to pass architecture by target type (-editorarchitecture, -clientarchitecture, -serverarchitecture, -programarchitecture). Keeping -specifiedarchitecture for compat, and it will set all the other 4 if they are not specified
- Changed ProjectGenerator to find Program .uproject files (logic was looking for .Target files under the .uproject's directory, which is not the case for Programs)
- Added two params to GetProjectArchitectures:
    - bGetAllSupported - used to get all supported architectures, not just the ones currently being built for (needed for XcodeProject to know what architectures to allow in the dropdown)
    - bIsDistributionMode - used to get architectures to compile when making distribution builds (probably want to compile all architectures for distro's)
- Removed the MacExports.TargetsAlowedForAppleSilicon, updated XcodeProject code to use the new GetProjectArchitectures()
#rb david.harvey
#jira none
#preflight 63909f217e0feab0b7bd8241

[CL 23428114 by Josh Adams in ue5-main branch]
2022-12-07 09:42:34 -05:00
Josh Adams
e6d0fb6486 - Added to new architecture APIs to UEBuildPlatform
- ConvertToReadableArchitecture() - turn an internal platform arch string to a printable version
  - IsX86Architecture() - returns true if the platform arch string represents an x86 architecture
- Changed Linux to use the HumanReadableName as the FolderNameForArchitecture, so it's shorter and it is not obfuscated anymore
#rb brandon.schaefer
#preflight 638fc65e9549ddaa288ccf73
#fyi dan.thompson

[CL 23419149 by Josh Adams in ue5-main branch]
2022-12-06 18:21:19 -05:00
Josh Adams
1e0b0a3eff - Added GetProjectArchitectures, which UBT will use to determine the architecture to build with when -architecture is not specified (UEBuildMac is now using it to control architectures for programs/projects)
- Changed the very high level loop over targets and architectures to move the Architecture as innermost loop - this allows each target to compile with different architectures in the case of mutli-target compiling
- Added [Editor]DefaultArchitecture to Mac ini's - the [Editor]TargetArchitecture property is now what the target _supports_, and Default is what it will be built with if no architecture is specified (usually will be "Host" to indicate that whatever the current host platform is will be what is compiled. "All" can be used to compile Fat binaries by default.
- Updated the LinkEnvironment constructor that takes another LinkEnvironment and an Architecture, to filter the input files for that architecture, and removed the similar code from MacToolchain
- Updates for Programs for Mac compilation, either:
  -  Adding an .ini and a .uproject files - programs need a .uproject for UBT to be able to find their Config directory in a standard way)
  - Marking the Target as not supporting Mac (some programs call Windows code directly)
  - Updating libs to be fat (intel+arm)
#rb david.harvey
#preflight 638e47395624e6da5e9658d6

[CL 23397419 by Josh Adams in ue5-main branch]
2022-12-05 14:57:26 -05:00
Josh Adams
b337b06556 - Allow for a platform to compile for multiple architectures, and have the high-level compile separately, and then link not separately (this means we can't use the one-target-per-architecture stuff that is already present)
- Mac changes to compile separately,  but link together (with lipo) after making two .dylibs/executables
- Removed FixDylibDependencies on Mac by making "stub dylibs" to mimic what Windows does with import libs, to solve circular dependencies
- Added DependenciesToSkipByArchitecture to ModuleRules that is used, when making a new single-arch LinkEnvironment from a multi-arch LinkEnvironment, to strip out libraries, etc, that should not be included with that single architecture
#preflight 6387891b4004f73f623c85a0
#rb zack.neyland

[CL 23336522 by Josh Adams in ue5-main branch]
2022-11-30 13:38:45 -05:00
adam kinge
47d47510ab Add a static library version check for iOS/tvOS and Mac. A BuildException will be thrown if a library is not built with the minimum supported Xcode (13.4.1 or earlier for 5.1).
#jira UE-151508
#review-21059319
#preflight 62cdaa973d7ef9abccf8215b

[CL 22112491 by adam kinge in ue5-main branch]
2022-09-21 10:23:44 -04:00
joe kirchoff
9cb4952d3c UnrealBuildTool: Support automatically downgrading project if platform sdk does not support a version of visual studio
This is required to update the default visual studio version, however that change is currently on hold due to a compiler issue

#rnx
#rb trivial
#preflight 6328f2df826e0c2fe90f097a

[CL 22088638 by joe kirchoff in ue5-main branch]
2022-09-20 00:48:51 -04:00
joe kirchoff
c40bc8f0d5 [Backout] - CL21728329
#fyi Joe.Kirchoff
Original CL Desc
-----------------------------------------------------------------
UnrealBuildTool: Set VS2022 as default compiler and generated solution if all available platforms are supported
Add messaging when generating if the default solution must be downgraded to VS2019 due to a platform that does not support VS2022
Unban 17.3-14.33

#rb Francis.Hurteau
#rb Josh.Adams
#preflight 63080ed91670d55ad5de0945
#preflight 630fb22c660db81edbbe7d12

[CL 21732165 by joe kirchoff in ue5-main branch]
2022-08-31 19:25:13 -04:00
Joe Kirchoff
3384dbfc26 UnrealBuildTool: Set VS2022 as default compiler and generated solution if all available platforms are supported
Add messaging when generating if the default solution must be downgraded to VS2019 due to a platform that does not support VS2022
Unban 17.3-14.33

#rb Francis.Hurteau
#rb Josh.Adams
#preflight 63080ed91670d55ad5de0945
#preflight 630fb22c660db81edbbe7d12

[CL 21728329 by Joe Kirchoff in ue5-main branch]
2022-08-31 16:55:58 -04:00
Wojciech Krywult
dc47ecf009 Modular builds: UBT: Added an option to generate .loadorder manifest file that includes a list of all dynamic modules in the order in which they are meant to be loaded (based on their dependencies).
It's needed on some platforms that don't handle DLLs dependencies out of the box. Generation of this file is integrated into the build metadata generation but is only triggered for platforms that explicitly indicate that it's needed (UEBuildPlatform.RequiresLoadOrderManifest()).

#rb Joe.Kirchoff
#preflight 62d57764f156340c79b98306

[CL 21149087 by Wojciech Krywult in ue5-main branch]
2022-07-18 11:31:22 -04:00
David Harvey
684d168454 Remove HoloLens platform references from UnrealBuildTool.
#jira UE-149794
#rnx
#rb Jeff.Fisher
#preflight 628f4064f622d972b5ca0202

[CL 20377314 by David Harvey in ue5-main branch]
2022-05-26 05:57:47 -04:00
Ben Marsh
cbb950c578 UBT: Use ILogger throughout UBT, rather than legacy EpicGames.Core.Log methods. All output going forwards should use structured logging rather than String.Format style logging.
#preflight 628e9dc6e746de4961f60032

[CL 20373777 by Ben Marsh in ue5-main branch]
2022-05-25 19:55:37 -04:00
Marc Audy
0c3be2b6ad Merge Release-Engine-Staging to Test @ CL# 18240298
[CL 18241953 by Marc Audy in ue5-release-engine-test branch]
2021-11-18 14:37:34 -05:00
aurel cordonnier
a12d56ff31 Merge from Release-Engine-Staging @ 17791557 to Release-Engine-Test
This represents UE4/Main @17774255, Release-5.0 @17791557 and Dev-PerfTest @17789485

[CL 17794212 by aurel cordonnier in ue5-release-engine-test branch]
2021-10-12 21:21:22 -04:00
brandon schaefer
a90cdbe7c2 Rename LinuxAArch64 to LinuxArm64
#jira UE-118127
#rb Michael.Sartain
[FYI] Marc.Audy, Aurel.Cordonnier

#ROBOMERGE-SOURCE: CL 16660821 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v834-16658389)

[CL 16660830 by brandon schaefer in ue5-release-engine-test branch]
2021-06-14 13:40:06 -04:00
aurel cordonnier
50944fd712 Merge UE5/RES @ 16162155 to UE5/Main
This represents UE4/Main @ 16130047 and Dev-PerfTest @ 16126156

[CL 16163576 by aurel cordonnier in ue5-main branch]
2021-04-29 19:32:06 -04:00
Marc Audy
0cbbc781ca Merge UE5/Release-Engine-Staging @ 15740152 to UE5/Main
This represents UE4/Main @ 15709114

[CL 15740605 by Marc Audy in ue5-main branch]
2021-03-18 15:20:03 -04:00
Josh Adams
b0e4357576 - UBT Code changes to remove 32-bit Windows support (C++ code for 32-bit still exists)
#rb marc.audy (concept, not each file)

[CL 15265424 by Josh Adams in ue5-main branch]
2021-01-31 15:09:58 -04:00