Commit Graph

80 Commits

Author SHA1 Message Date
joe kirchoff
3cde89ad9a BuildSettingsVersion.V4: Default CppStandard to Cpp20. Latest is not being updated to V4 with this change and will happen at a later date
* Add new setting CppStandardEngine so this can be controlled separately for engine module
* CppStandard no longer requires RequiresUniqueBuildEnvironment as it does not affect engine modules

#rb christopher.waters

[CL 25821375 by joe kirchoff in ue5-main branch]
2023-06-06 13:38:28 -04:00
galeone
431c09150e [UBT] Add support for Code coverage on Linux
#rb Brandon.Schaefer, Jerome.Delattre, Joe.Kirchoff

[CL 25794147 by galeone in ue5-main branch]
2023-06-05 12:03:25 -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
joe kirchoff
57a8fe409c UnrealBuildTool: Use expression body for simple properties and accessors
#rnx
#preflight 64766abcfe6a3b258a04cb50

[CL 25691579 by joe kirchoff in ue5-main branch]
2023-05-30 18:01:50 -04:00
brandon schaefer
918a67f6d9 Support enabling AutoRTFM instrumentation on a Module level in UBT
#rb Neil.Henning, Joe.Kirchoff
#preflight 646655bd743f7c995bc7a7ff

[CL 25532181 by brandon schaefer in ue5-main branch]
2023-05-18 15:44:35 -04:00
Joe Kirchoff
328db31586 UnrealBuildTool: Always compile engine modules with C++20, unless the platform doesn't support it
* Add MaxCppStandard option to the target, so the CppStd can be limited if it would be set higher for any reason. HoloLens for example does not support c++20 because it uses the /ZW flag to enable WinRT and these are incompatible. I will look into making WinRT only be added if it is required for a Module at a later time
* Any module that sets bTreatAsEngineModule will be upgraded to c++20 unless it has already overridden it to c++17, unless MaxCppStandard is set.
* Some modules, mostly in plugins, are set in the ModuleRules to always build with c++17. This is generally because third party source is included that are incompatible with c++20 but there are a few cases that should be looked into later
* VS2019 needed a few extra fixes but also supports c++20. Reminder that support for the 2019 toolchain is going to be removed in 5.5

#jira UE-182121
#rb Francis.Hurteau
#preflight 6441adee434155a8f8688d45
#preflight 6441adfcf030f684d53981c5

[CL 25153700 by Joe Kirchoff in ue5-main branch]
2023-04-21 17:04:15 -04:00
Joe Kirchoff
bcedb28640 UnrealBuildTool: MSVC deterministic mode pch variant
#rnx
#rb trivial
#preflight 643f391a211b661dc483c71f

[CL 25099894 by Joe Kirchoff in ue5-main branch]
2023-04-18 22:23:21 -04:00
Joe Kirchoff
60234ab3bb UnrealBuildTool: Update support for minimum cpu arch for x64 platforms. Replaces ModuleRules.bUseAVX
* Add MinimumCpuArchitectureX64 enum, valid values are None, AVX, AVX2, & AVX512. Default value is None
* Obsolete boolean bUseAVX in favor of MinCpuArchX64
* Add MinCpuArchX64 setting to TargetRules
* Add Optional MinCpuArchX64 to ModuleRules, will override any target setting if not null
* Only pass this /arch for x64 platforms
* Can be controlled on the command line with -MinCpuArchX64=

#jira UE-181851
#rb Bryan.Sefcik
#preflight 6425fc7f91589478cdc7867c

[CL 24861220 by Joe Kirchoff in ue5-main branch]
2023-03-30 17:52:50 -04:00
joe kirchoff
88c89989cd UnrealBuildTool: Update -Deterministic to not have a per module setting as this doesn't work due to PCH requirements and instead add a setting to control warning level
#rb Henrik.Karlsson

[CL 24647188 by joe kirchoff in ue5-main branch]
2023-03-14 19:43:44 -04:00
joe kirchoff
e44f248987 UnrealBuildTool: Fix issue generating visual studio solution because of incorrect check if a PCH is in use which was causing modules to use an incorrect SharedPCH when a Private PCH should have been used
#jira UE-177193
#rb Josh.Adams
#lockdown Francis.Hurteau
#preflight 6409298f827cf9251b4fc513

[CL 24579368 by joe kirchoff in ue5-main branch]
2023-03-09 13:42:19 -05:00
Andrew Scheidecker
02f9686b0f Fix ClangToolchain omitting global compiler options from the command line on platforms that don't use a shared response file.
#jira none
#rb Joe.Kirchoff
#preflight 6408d6096c1b9295b9bddca7

[CL 24564056 by Andrew Scheidecker in ue5-main branch]
2023-03-08 13:59:38 -05:00
Joe Kirchoff
04b2b155bc UnrealBuildTool: Make CStandard enum consistent with CppStandard
#rnx
#preflight 6407c690c13b7130d276f1b8

[CL 24551440 by Joe Kirchoff in ue5-main branch]
2023-03-07 18:41:02 -05:00
LouisPhilippe Seguin
a21f510ae7 UnrealBuildTool
* Added option to generate assembly files while compiling cpp files.
* Supported only on MSVC compiler for now.
* The generated files have the .asm extension and are located in the same Intermediate folder as the corresponding .obj

#jira none
#rb Joe.Kirchoff
#preflight

[CL 24545403 by LouisPhilippe Seguin in ue5-main branch]
2023-03-07 14:20:51 -05:00
joe kirchoff
1ad009dd27 UnrealBuildTool: Stash shared paths in the CppCompileEnvironment after creating a shared response file so those paths can still be used for validation
#rnx
[FYI] Henrik.Karlsson

[CL 24493752 by joe kirchoff in ue5-main branch]
2023-03-02 20:29:33 -05:00
bryan sefcik
4522523cb7 Fixed a PCH issue when compiling with multiple architectures at the same time.
#preflight 63eebdc13c1eb56f05661567

[CL 24272931 by bryan sefcik in ue5-main branch]
2023-02-16 18:55:59 -05:00
bryan sefcik
1cc61ecdd1 Possible fix for android having issues with PCHs
[CL 24253388 by bryan sefcik in ue5-main branch]
2023-02-16 04:16:25 -05:00
bryan sefcik
0ef675123b Possible fix for SNDBS when compiling with PCH chains.
#jira
#rb joe.kirchoff
#preflight 63ed1d817d2ec3d2fd4c3452

[CL 24251837 by bryan sefcik in ue5-main branch]
2023-02-16 02:02:35 -05:00
bryan sefcik
592942fad7 Added support for Clang PCH chaining
https://clang.llvm.org/docs/PCHInternals.html#chained-precompiled-headers

Linux - EngineTestEditor -allmodules
Before:
Total PCH Size: 3.41 GB

After:
Total PCH Size: 2.65 GB

#jira
#rb joe.kirchoff
#preflight 63e57da9636f66aac7dc1818

[CL 24114121 by bryan sefcik in ue5-main branch]
2023-02-09 22:37:30 -05:00
henrik karlsson
0de807f1a8 [UBT]
* Added support for additional response files (will be used by header units)
* Added support for shared response files and changed so normal cpp/h build path uses it if toolchain supports it.
* Enabled shared response files on all platforms but android (which doesnt seem to support reponse files including response files)
* Some cleanup in the iwyu toolchain related to shared rsp files

#preflight 63d9af169b3bb6a66cec9a8e
#rb joe.kirchoff

[CL 23943501 by henrik karlsson in ue5-main branch]
2023-01-31 21:24:28 -05:00
henrik karlsson
bce2998aaa [UBT]
* Fixed so only colliding headers gets hash suffix for files in immediate folder

#preflight 63d86e11f626715201a3daa5
#rb joe.kirchoff

[CL 23924099 by henrik karlsson in ue5-main branch]
2023-01-31 01:29:20 -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
Joe Kirchoff
24ebcdfb1d UnrealBuildTool: Support msvc analyzer extensions
Enable by setting ModuleRules.bStaticAnalyzerExtensions = true.

It is recommended to use ModuleRules.StaticAnalyzerRulesets to filter the warnings that are reported as this will enable a large number of additional warnings.

Please see the following links for more details:
https://learn.microsoft.com/en-us/cpp/code-quality/using-the-cpp-core-guidelines-checkers
https://learn.microsoft.com/en-us/cpp/code-quality/using-rule-sets-to-specify-the-cpp-rules-to-run

#jira UE-174521
#rb trivial
#preflight 63c9e333977c626356cdf40f

[CL 23784396 by Joe Kirchoff in ue5-main branch]
2023-01-19 19:46:12 -05:00
Joe Kirchoff
bbefa5c0f5 UnrealBuildTool: Add missing FileInlineGenCPPMap to CppEnvironment copy constructor. Via UDN.
#rnx
#rb Bryan.Sefick
#preflight 63b471ff2540a78d27b999af

[CL 23567986 by Joe Kirchoff in ue5-main branch]
2023-01-03 13:34:49 -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