Commit Graph

69 Commits

Author SHA1 Message Date
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
brandon schaefer
4f85084928 [UBT] Add options to enable pie and stack protector for target rules
disabled by default

#rb Josh.Adams, Zack.Neyland
#preflight 637526e4ee4d25f90aa62e6c

[CL 23163701 by brandon schaefer in ue5-main branch]
2022-11-16 17:02:54 -05:00
Rafa Lecina
df001c1d21 Support enable ARC in modules
#jira UE-107891
#review @Sam.Zamani @Bertrand.Carre @Chris.Varnsverry @Roman.Dzieciol @Josh.Adams  @Jack.Porter
#preflight

[CL 23133821 by Rafa Lecina in ue5-main branch]
2022-11-15 06:02:36 -05:00
joe kirchoff
48003d0b0a UnrealBuildTool: Remove property that disables generating cpp dependency files
#rnx
#rb trivial

[CL 22918025 by joe kirchoff in ue5-main branch]
2022-11-02 11:47:47 -04:00
bryan sefcik
3c6a04fdf6 Fixed an issue where SNDBS would fail to compile files on agents because the inlined gen.cpp files were not setup as prerequisites.
#rb joe.kirchoff

[CL 22464949 by bryan sefcik in ue5-main branch]
2022-10-11 16:49:17 -04:00
Robert Millar
a677dbc70e Allow disabling all static analysis on a module.
#rb joe.kirchoff
#jira none
#preflight https://horde.devtools.epicgames.com/job/6340540e174b13865728ca7c

[CL 22403984 by Robert Millar in ue5-main branch]
2022-10-07 13:30:19 -04:00
Joe Kirchoff
9b55ef770f UnrealBuildTool: Determinisitic build configuration update to manage via TargetRules and ModuleRules
#rnx
#rb none
#preflight 63056e3a516bef57ffc5a099

[CL 21527850 by Joe Kirchoff in ue5-main branch]
2022-08-23 20:33:31 -04:00
dmytro vovk
37b8ab825c Deprecated bCompileForSize UBT Target option and replaced with OptimizationMode enumto fine tune a balance between speed and\or code size
#jira none
#rb Joe.Kirchoff
#preflight 62ff99b0200ff87e07f75a69

[CL 21511266 by dmytro vovk in ue5-main branch]
2022-08-23 12:44:36 -04:00
Joe Kirchoff
371c0b0624 UnrealBuildTool: Move static analysis checker options into ModuleRules rather than TargetRules
#rnx
#rb none
#preflight 62f6e75de67510be05db43f9

[CL 21368307 by Joe Kirchoff in ue5-main branch]
2022-08-12 20:06:00 -04:00
kaffeewolf
a3acfba5d6 PR #9449: Add support for specifying C Standard when compiling plain C files (Contributed by kaffeewolf)
#rb none
#preflight 62f2f8c33f500fb6dc059f18

[CL 21305284 by kaffeewolf in ue5-main branch]
2022-08-09 20:34:50 -04:00
mickael gilabert
469a7e6fcb UBT: Add -CrashDiagnosticDirectory to set where to put crash report files (for platforms that support it)
[REVIEW] [at]jeff.newquist, [at]joe.kirchoff
#rnx

#ROBOMERGE-OWNER: mickael.gilabert
#ROBOMERGE-AUTHOR: mickael.gilabert
#ROBOMERGE-SOURCE: CL 19555896 via CL 19556567 via CL 19557148 via CL 19557163
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v937-19513599)

[CL 19561558 by mickael gilabert in ue5-main branch]
2022-03-30 14:42:23 -04:00
christopher waters
22de0b360d Adding a "deprecation" path for engine includes to allow types to be moved without breaking licensee module builds.
- Non-engine modules/targets will have to specify the "version" of includes via IncludeOrderVersion in TargetRules or ModuleRules.
- This setting will control the value of UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_XXX where XXX is the version of the engine.
- When moving types out of a header, users will need to include the new location of the type in the header it was removed from but only if UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_XXX is set.
- If a target does not change its IncludeOrderVersion to the latest version, UBT will print out a message telling users how to upgrade.
- This change introduces a new set of SharedPCH permutations to make sure modules with older versions get the PCH with UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_XXX set correctly.

#jira none
#rb jonathan.adamczewski, joe.kirchoff
#preflight 623e1d3d196f3ae80b4c37ee

[CL 19518359 by christopher waters in ue5-main branch]
2022-03-25 16:16:30 -04:00