Commit Graph

74 Commits

Author SHA1 Message Date
josh adams
f6381544e2 - Allow a project to override the Main SDK version for a platform (the platform's project Engine.ini would set
[OverrideSDK]
  SDKVersion=x.y.z
and AutoSDK, or anything using GetMainVersion(), would use that version string instead
- If multiple targets are built in one run of UBT/UAT, it will error out because there is no support to switch SDKs (and builds happen in parallel, etc)
- This is not a complete solution, because it can cause problems with shared tools like ShaderCompileWorker, when different projects are on different SDKs and they have one SCW to share
- Renamed GetMainVersion to GetMainVersionInternal(), and wrapped that in a new non-vitual GetMainVersion() that calls GetMainVersionInternal() (and handles the ini overrides)
#rb david.harvey,dave.barrett
#jira UE-185364
#preflight 647a12e7b0670733186c928e

[CL 25767233 by josh adams in ue5-main branch]
2023-06-02 13:42:59 -04:00
joe kirchoff
acacd6a8de UnrealBuildTool: More automated code cleanup
* Use object type rather than var
* Remove double newlines
* Use pattern matching

#rnx
#preflight 647780095d23eca37d28a387

[CL 25706751 by joe kirchoff in ue5-main branch]
2023-05-31 13:37:21 -04:00
joe kirchoff
acf80ab609 [Backout] - CL25694851
[FYI] Joe.Kirchoff
Original CL Desc
-----------------------------------------------------------------
UnrealBuildTool: More automated code cleanup

#rnx

[CL 25695155 by joe kirchoff in ue5-main branch]
2023-05-30 19:55:37 -04:00
joe kirchoff
7ed1a39679 UnrealBuildTool: More automated code cleanup
#rnx

[CL 25694864 by joe kirchoff in ue5-main branch]
2023-05-30 19:36:05 -04:00
joe kirchoff
c04da27b3b UnrealBuildTool: More automated code cleanup
#rnx
#preflight 64767efb4b1ead7c7f428c7a

[CL 25693857 by joe kirchoff in ue5-main branch]
2023-05-30 18:59:32 -04:00
joe kirchoff
36d266e932 UnrealBuildTool: Automated code cleanup
#rnx
#preflight 6476799e947ff6973c225619

[CL 25693241 by joe kirchoff in ue5-main branch]
2023-05-30 18:38:07 -04:00
Josh Adams
9d4caec55a - Brought the idea of hybrid/temp targets for content only projects that need to be treated as code, to UBT instead of UAT. Generate temp targets when building or generating projects
- Only active when the project generator says it supports ContentOnly projects, although that is just for now until Xcode can test it out, in case it causes Visual Studio issues
#rb joe.kirchoff
#preflight 64638f4a4404e3cdd240327f

[CL 25490732 by Josh Adams in ue5-main branch]
2023-05-16 11:49:47 -04:00
mic rooney
8d82fa54b6 Allowing UBT to build individual plugins as though they were local.
* Also reverting a previous change that was building the whole project when adding new plugins.

#jira UE-171182
[REVIEW] [at]Josh.Adams, [at]Joe.Kirchoff
#preflight 640f5e7380540a5a36edb89d

[CL 24641918 by mic rooney in ue5-main branch]
2023-03-14 15:24:13 -04:00
Joe Kirchoff
eb868d8709 UnrealBuildTool: Fix issues with Modified Files Only compiles
#rnx
#rb tivial
#preflight 640294741d304a5471217842

[CL 24511169 by Joe Kirchoff in ue5-main branch]
2023-03-03 19:51:51 -05:00
henrik karlsson
fcb86aef13 [UnrealBuildTool]
* Change so SingleFile will not build dependents by default. This can be enabled with -SingleFileBuildDependents

#preflight skipped
#rb joe.kirchoff

[CL 24344617 by henrik karlsson in ue5-main branch]
2023-02-21 13:37:57 -05:00
henrik karlsson
5f74d114d5 [UBT]
Changed how single files are built. We don't want to invalidate makefile everytime we build single files since it destroys turnaround times. With this change a single file compile can take 2s (+ the actual compile time).

The new behavior injects a special action per module when creating the makefile. These actions can be used to on-the-fly create a proper compile action that follows the rules of the module that the specific file belongs to.. In a normal build these actions are ignored since the logic deciding which actions to build is backtraced from which binaries we want to create.

When a specific file compile is triggered, the logic deciding which files to build search up all these special actions and create a lookup based on which folders the special actions handle. It then try to find the special action that handles the specific file. The matching special action then creates a compile action that can handle that specific file and then queue up the action for execution. If no special action is found it falls back to try to use actions that have this specific file as input (ispc files for example)

Details:
* Removed lots of custom code for "specific files" handling
* Changed so pch (both private and shared) always use definition file. Added #pragma once and change so pch wrapper file include definition file. This made the adaptive path and specific file easy to implement (just disable pch in compile environment and it will just work)
* Added SingleFileAction for both VCToolChain and ClangToolChain. It now works to compile specific headers and cpp files. (It creates wrapper files on the fly to be able to compile all header files (compiling headers directly blow up if there are circular includes)
* Fixed so GenerateClangDatabase mode works with new changes
* Moved the logic that makes sure all (directly) depending cpp files are recompiled when .h are included in the singlefile option

#preflight 63dcc46f78716a01e8069649
#rb joe.kirchoff

[CL 24094027 by henrik karlsson in ue5-main branch]
2023-02-09 04:20:43 -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
6f8a642479 Android architecture overhaul (version 1, more can be done!)
- Changed -arm64 and -x64 to arm64 and x64
- Removed the Arches array and other multi-architecture stuff from Adnroid compiling and linking, and using the higher level UEToolchain functionality to handle multi-architecture
- AndroidToolchain is now a proper ClangToolchain subclass instead of overriding everything it did (being a proper ISPCToolchain subclass coming later)
- Updated some of the UEToolchain side stuff (Android is the first platform to need separate Link output, but still need a single Target)
- All the architecture stuff is driven by UEBuildAndroid, not AndroidToolchain, so the make-a-temp-toolchain object just to get architectures was removed
- Removed unused stuff like bAllowMissingNDK, bExecuteCompilerThroughShell, Arches/GPUArches arrays
- Added a high-levle ConvertToPlatformArchitecture() function that UBT can use to turn "x86_64" into the achitecture that Android wants of "x64"
#rb chris.babcock
#preflight 63bdb04271079a8d1c2ef110

[CL 23634002 by Josh Adams in ue5-main branch]
2023-01-10 16:44:45 -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
2b7f859ac4 - Removed handling of -Architectures= in UBT side until Android code is updated to not _also_ process it (this was a change meant for Android long term, so it will come back)
#rb chris.babock
#jira UE-172028
#preflight skip

[CL 23421486 by Josh Adams in ue5-main branch]
2022-12-06 19:42:30 -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
6de3f33131 - Fixed issue with null ProjectFile in UBT when architecture was specified on commandline
#rb trivial
#preflight skip

[CL 23417599 by Josh Adams in ue5-main branch]
2022-12-06 17:20:17 -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
UnrealBot
73409369c0 Branch snapshot for CL 21319338
[CL 21319338 in ue5-main branch]
2022-08-10 16:03:37 +00: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
chris constantinescu
28111d40fc Redundancy cleanup in UBT Low Level Tests:
- test-specific targets and modules are constructed by RulesAssembly which removes a lot of spaghetti code
- no more excluding the Tests folder by default which is guaranteed to mislead users #fyi Jon.Nabozny
- test compilation in Tests is controlled through WITH_LOW_LEVEL_TESTS
- preparation code for switching tests between Catch2 / TestAutomation Fmwk

Nightly LLT PF 6260431391376845adeb4c40

#rnx
#preflight 62602d50dd47b4ad2173c30b

[CL 19834665 by chris constantinescu in ue5-main branch]
2022-04-20 14:24:59 -04:00
jonathan adamczewski
06600f5b2d TargetDescriptor.cs: Warning suppression
#jira none
#trivial
#rnx
#preflight 6242512bc51908059a9116c8

[CL 19536030 by jonathan adamczewski in ue5-main branch]
2022-03-28 20:47:07 -04:00
jonathan adamczewski
5c68d1d9ef Revert //UE5/Main/... changelist 19531725 - return to NET Core 3.1
#preflight 62422fd0470aff98e946bfce
#jira UE-119846

[CL 19534572 by jonathan adamczewski in ue5-main branch]
2022-03-28 18:25:19 -04:00
jonathan adamczewski
18ac15cbb1 Upgrade to .NET 6.0
#jira UE-119846
#preflight 6241fc06470aff98e943c035

[CL 19531725 by jonathan adamczewski in ue5-main branch]
2022-03-28 15:30:56 -04:00