Commit Graph

35 Commits

Author SHA1 Message Date
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
Marc Audy
a7f9391231 Merge UE5/Release-Engine-Staging @ 14811410 to UE5/Main
This represents UE4/Main @ 14768117

For ReleaseObjectVersion.h
#lockdown Marcus.Wassmer

[CL 14811440 by Marc Audy in ue5-main branch]
2020-11-24 18:42:39 -04:00
Ben Marsh
598149c0c8 Add an option to force warnings as errors, even for deprecations. Need to enable in CIS to force determinism.
#rb none

[CL 14463055 by Ben Marsh in ue5-main branch]
2020-10-09 14:25:24 -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
PJ Kack
ef8a7b620e AUTO MERGE
Merging //UE4/Main @ 11112898 to //UE4/Dev-Core (dev-core-l0178)

#rb none

(ushell-p4-mergedown)

[CL 11113593 by PJ Kack in Dev-Core branch]
2020-01-26 11:35:42 -05:00
michael noland
d7901307b8 Adding preliminary support for enabling the warning C4244 ('argument': conversion from 'type1' to 'type2', possible loss of data) on a module by module basis to help catch int64->int32 and double->float / float<->int confusion
- UnsafeTypeCastWarningLevel can be set to WarningLevel.Warning or WarningLevel.Error in ModuleName.Build.cs (off by default)
- Currently only supported on MS compilers (Clang ignores the setting for now)
#jira UE-86949
#rb ben.marsh


#ROBOMERGE-SOURCE: CL 11050203 via CL 11050250 via CL 11050262
#ROBOMERGE-BOT: (v637-11041722)

[CL 11050266 by michael noland in Main branch]
2020-01-17 13:27:48 -05:00
Matt Peters
505284e41e Allow TruncToFloat intrinsics used on platforms that support them.
Add SSE and AVX defines to allow specifying availability on PC, MAC, and Linux.
SSE and AVX defines have ALWAYS_HAS and MAYBE_HAS variants to distinguish between available to compile and available to run without the need to check cpuid.
Add templated base classes TUnrealPlatformMathSSEBase and TUnrealPlatformMathSSE4Base to remove the boilerplate overrides added by each of the platformmaths that use the sse overrides.
#rb Steve.Robb
#rn Minor

[CL 10942197 by Matt Peters in Dev-Core branch]
2020-01-10 11:58:11 -05: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
michael lentine
f302c5d5fc Add cross platform ISPC support from Dev-Anim to accelerate Chaos computations.
#rb Ben.Marsh


#ROBOMERGE-OWNER: michael.lentine
#ROBOMERGE-AUTHOR: michael.lentine
#ROBOMERGE-SOURCE: CL 10727300 via CL 10727303 via CL 10727314 via CL 10727316
#ROBOMERGE-BOT: (v610-10636431)

[CL 10727317 by michael lentine in Main branch]
2019-12-13 23:35:01 -05:00
ben marsh
9170b5f44a Enable shadow variable warnings as errors by default for projects that are using the latest UBT build settings. Allow setting the warning/error level on a per-module and per-target basis.
The engine will always be built with it as an error.

#rb none
[FYI] Marc.Audy
#jira none

#ROBOMERGE-SOURCE: CL 9839163 in //UE4/Release-4.24/...
#ROBOMERGE-BOT: RELEASE (Release-4.24 -> Main) (v546-9757112)

[CL 9839167 by ben marsh in Main branch]
2019-10-25 10:39:37 -04:00
Ben Marsh
44f9817f27 UBT: Add a -preprocess argument, which will just preprocess the source code rather than compile it. Can be used in conjunction with -SingleFile=... to preprocess a single source file.
#rb none

[CL 8983800 by Ben Marsh in Main branch]
2019-09-23 15:26:04 -04:00
Joakim Lindqvist
c838e09d2f Added ability to override Unity and Optimization per module in BuildConfiguration. This should eliminate most needs to disable unity builds in Build.cs (as disabling it for local iteration times was the primary argument for it).
Thus we renamed bFasterWithoutUnity to bUseUnity (note the inversion of the statement) which is what you should use if a module does not support building in Unity mode.

#jira UE-73054
#rb ben.marsh

[CL 7099374 by Joakim Lindqvist in Dev-Build branch]
2019-06-20 03:53:43 -04:00
Ben Marsh
cfe09c649f Merging //UE4/Dev-Main to Dev-Build (//UE4/Dev-Build)
#rb none
#rnx

[CL 6922670 by Ben Marsh in Dev-Build branch]
2019-06-10 19:47:29 -04:00
chris gagnon
72ba51c5bd Copying //UE4/Dev-Editor to Dev-Main (//UE4/Dev-Main) for 4.23 From CL 6837861
#rb none


#ROBOMERGE-OWNER: ben.marsh
#ROBOMERGE-AUTHOR: chris.gagnon
#ROBOMERGE-SOURCE: CL 6838042 in //UE4/Main/...
#ROBOMERGE-BOT: BUILD (Main -> Dev-Build) (v366-6836689)

[CL 6874679 by chris gagnon in Dev-Build branch]
2019-06-07 05:27:42 -04:00
Josh Adams
1e4b186150 - Big update to platforms: PlatformExtensions
- This allows for Confidential platforms to exist outside of the engine, and insert themselves in as needed
- Directory structure is, where .... mirrors the directory structure for Engine and projects
     - /Platforms/XXX/....
- Moving to more data driven approach for ShaderPlatforms and PlatformInfo, where they can be read from DataDrivenPlatformInfo.ini files that live in the platform config folders
- Removed platform mentions from UBT, by way of changing some enums to partial classes with static members (see UnrealTargetPlatform)
- Various other UBT/UAT modifications to allow for looking in other locations for files
- THIS IS NOT A COMPLETE AND FINAL SOLUTION. WE WILL CONTINUE WORK IN DEV-BUILD BEFORE ITS READY FOR PRIMETIME
#rb ben.marsh

[CL 6271418 by Josh Adams in Dev-Build branch]
2019-05-03 08:03:23 -04:00
Ryan Durand
534e68ec2c UBT: Implementing the recommended code fixes from Ben for the compile timing code.
#rb Ben.Marsh

[CL 6013626 by Ryan Durand in Dev-Build branch]
2019-04-19 11:26:11 -04:00
Ryan Durand
27e5e084dc UBT: Adding support for grabbing and parsing compile timing data for VCToolChain and aggregate it.
#rb none

[CL 5992181 by Ryan Durand in Dev-Build branch]
2019-04-18 15:07:10 -04:00
ben marsh
379b9bbefe Fix settings for enabling shadow variable and undefined identifier warnings not being treated as requiring a unique PCH. Also fix shared PCHs not enabling each by default. The compiler (at least on Windows) does not produce a warning/error on this mismatch, but does not respect the different settings passed via the command line.
#rb none
#jira

#ROBOMERGE-OWNER: ben.marsh
#ROBOMERGE-AUTHOR: ben.marsh
#ROBOMERGE-SOURCE: CL 5295902 in //UE4/Release-4.22/... via CL 5308945
#ROBOMERGE-BOT: BUILD (Main -> Dev-Build)

[CL 5325327 by ben marsh in Dev-Build branch]
2019-03-06 18:15:50 -05:00
Ben Marsh
b5b67b6bab UBT: Allow setting the C++ standard version for the compiler on a per-target or per-module basis. Currently only implemented for MSVC.
Example:

    CppStandard = CppStandardVersion.Cpp17;

Or:

    CppStandard = CppStandardVersion.Latest;

#rb none
#fyi Steve.Robb

[CL 4681321 by Ben Marsh in Dev-Build branch]
2019-01-04 10:13:55 -05:00
Ben Marsh
78ebc86abd UBT: Change UEBuildTarget.Build() to return a construct and return a makefile.
#rb none
#rnx

[CL 4672505 by Ben Marsh in Dev-Build branch]
2018-12-20 17:29:52 -05:00
Ben Marsh
0270d8f66a UBT: Add a cache for source file metadata (containing text from the first include directive, and a flag for whether the file contains reflection markup). Replaces the previous include dependency cache, since we now only require the first include directive. Saves ~2s whenever UHTModuleInfo array has to be regenerated.
#rb none

[CL 4668325 by Ben Marsh in Dev-Build branch]
2018-12-18 10:21:34 -05:00
Ben Marsh
0c9707d678 UBT: Use compiler-generated dependency information for source file dependencies. This ensures that the dependency list is accurate, and makes incremental builds more reliable.
* A standalone Win32 application called cl-filter is used to parse output from running the Visual Studio compiler with the /showIncludes option, and generate a dependency list similar to Clang.
* Actions which produce an external dependency list declare it explicitly. If the dependency list is missing, or any of the contents are out of date, the action is rebuilt.
* The contents of dependency lists are cached by the CppDependencyCache class for future iterations.

#rb none

[CL 4665060 by Ben Marsh in Dev-Build branch]
2018-12-16 14:22:47 -05:00
Ben Marsh
530369c613 Merging //UE4/Dev-Main to Dev-Build (//UE4/Dev-Build)
#rb none
#rnx

[CL 4662695 by Ben Marsh in Dev-Build branch]
2018-12-14 14:49:12 -05:00
Ben Marsh
f849ae3927 UBT: Fix resource strings on Windows for program targets. Custom version strings can now only affect resources with a unique build environment, and the default product name for programs is now taken from the target name (via the UE_APP_NAME setting). The default product name in the editor is left blank to allow the target name to be used as the default.
#rb none
#jira UE-67440

[CL 4653592 by Ben Marsh in Dev-Build branch]
2018-12-12 12:54:14 -05:00
Ben Marsh
51d3c12e4f UBT: Remove the unused CppCompileEnvironment.LocalShadowDirectory variable.
#rb none
#rnx

[CL 4590481 by Ben Marsh in Dev-Build branch]
2018-11-23 19:37:20 -05:00