Commit Graph

72 Commits

Author SHA1 Message Date
Jeff Campeau
35d4842420 Disable some warnings for VS2015
[CL 2651883 by Jeff Campeau in Main branch]
2015-08-11 17:19:03 -04:00
Mikolaj Sieluzycki
ddf0f7e588 Add basic UObject thread safety checks to UnrealCodeAnalyzer.
[CL 2631991 by Mikolaj Sieluzycki in Main branch]
2015-07-24 04:48:48 -04:00
Ben Marsh
dd08437233 Rename BuildReceipt to TargetReceipt, to clarify its purpose.
[CL 2629145 by Ben Marsh in Main branch]
2015-07-22 13:10:12 -04:00
Mikolaj Sieluzycki
13819dc17d Make UnrealCodeAnalyzer public.
- Move UnrealCodeAnalyzer to Programs/UnrealCodeAnalyzer
- Move clang/llvm binaries and includes to ThirdParty/llvm
#codereview Robert.Manuszewski

[CL 2613304 by Mikolaj Sieluzycki in Main branch]
2015-07-08 05:11:51 -04:00
Lee Clark
d8c6aca65d SN-DBS support for distributed compilation of Win64 builds
* Modules that use #import (DatabaseSupport & VisualStudioSourceCodeAccessor) are forced to be built locally due to SN-DBS limitation . These are very small modules so have a minimal impact on build time.

#codereview Mike.Fricker

[CL 2610243 by Lee Clark in Main branch]
2015-07-03 05:23:01 -04:00
Steve Robb
db5429d360 AVX support in UnrealBuildTool.
#codereview robert.manuszewski

[CL 2604153 by Steve Robb in Main branch]
2015-06-29 12:24:33 -04:00
Ben Marsh
e0a010415b Treat shadow variable warnings as errors in non-unity builds.
[CL 2582001 by Ben Marsh in Main branch]
2015-06-09 18:14:52 -04:00
Ben Marsh
16473b93ed Turn shadow variable warnings back into warnings; they are breaking too many builds.
#codereview Marc.Audy

[CL 2561102 by Ben Marsh in Main branch]
2015-05-21 13:59:00 -04:00
Mike Fricker
ca39745810 Renamed WinUAP platform to UWP
- Microsoft renamed Universal App Platform to Universal Windows Platform
- https://msdn.microsoft.com/en-us/library/dn894631.aspx

[CL 2547380 by Mike Fricker in Main branch]
2015-05-12 12:00:23 -04:00
Ben Marsh
6b1d263572 Make bEnableShadowVariableWarnings a per-module setting, so we don't break reuse of shared build intermediates.
#codereview Marc.Audy, Wes.Hunt

[CL 2547047 by Ben Marsh in Main branch]
2015-05-12 08:03:21 -04:00
Mike Fricker
65bbc0e732 Initial Unreal Build Tool support for Visual Studio 2015 and UAP (disabled by default)
- Merged in Microsoft's Unreal Build Tool changes for VS 2015 support, and Universal App Platform support
- VS 2015 support is disabled by default (the engine is not yet compiling with VS 2015)
- Use the new '-2015' option when generating project files to enable VS 2015 support
- Windows SDK 8.1 is used by default.  To use Windows SDK 10, enable WindowsPlatform.bUseWindowsSDK10
- UAP support is disabled (not supported yet, work in progress.)  Use WinUAPPlatform.bEnableUAPSupport to enable it.
- Various loose ends still remain (search for "@todo UAP" in Unreal Build Tool code)

[CL 2537920 by Mike Fricker in Main branch]
2015-05-05 15:32:10 -04:00
Mike Fricker
290f5e6d82 Miscellaneous fixes for Clang on windows
These changes allow UE4 to compile and run (in Debug) on Clang 3.7 alpha (r231657 only!)
  - Disabled editor source file discovery (crashes with Clang currently)
  - Disabled FThreadIdleStats in UnrealHeaderTool with Clang on Windows (causes link errors due to inlining bugs with Clang and DLL imports)
  - Use MSVC linker by default, even when compiling with Clang (can be tweaked with bAllowClangLinker)
  - Enabled shadow variable warnings on Windows with Clang
  - Limited max size of reflection code source files (Clang on Windows crashes with huge source files)
  - Fixed UE4 deprecation warnings not showing up when using Clang on Windows
  - Make sure initialization list order only triggers a warning on Clang for Windows

Other changes:
  - Fixed issues with pushed pragmas not getting popped (PRAGMA_ENABLE_DEPRECATION_WARNINGS)
  - Removed EMIT_DEPRECATED_WARNING_MESSAGE, wasn't used
  - Fixed various third party library includes not being treated as system headers (prevents compiler warnings)

To test Clang on Windows (beta!!):

- Get latest UE4 main branch (4.9)

- Install LLVM+Clang for Windows version r231657.  It's a quick install, you don't need to compile anything yourself.

- Open UEBuildWindows.cs, and change bCompileWithClang to true.  Be careful not to check that in.  We'll probably make this config-driven later, after the Clang toolchain gets more mature.

- Switch to Debug Editor configuration.  (See below for more info.)

- Rebuild the game or engine

Notes:

- You must use Clang r231657 (3.7.0 alpha).  There are no other releases that I've found that are able to compile UE4 successfully.  Most of the newer releases crash during compiling, and older releases aren't able to digest Windows header files well enough.

- Compiling in Development currently will not work due to bugs with Clangs handling of inlining and DLL exports.  Monolithic builds should work, though.

- Occasionally you may see runtime crashes (stack overflows or access violations) when running UE4 compiled with Clang on Windows.  These may very well be bugs in Clang (remember, we're using an alpha release of Clang 3.7.0.)  Unfortunately without better debugger support, it can be difficult to workaround these

- When debugging, you will only have functions and line numbers, no variables or parameters.  Clang only has preliminary support for Microsoft's PDB format currently.
XGE is fully supported with Clang on Windows.  Best case rebuild times I've seen are 3.5 minutes in Debug.

- Shared PCHs aren't supported yet (similar to on Mac and Linux), so iterative compile times may be slower compared to Visual C++.  However the Clang compiler is actually quite fast for rebuilds, probably because of missing debug info though.

- There may be some compiler warnings that are different between Mac/Linux and Windows.  We haven't done a line-by-line comparison yet.

- Build products and executables for Clang and VC++ overlap on disk.  So you have to rebuild to switch back and forth.  Sorry.

- Clang on Windows has a few bugs that we've had to work around.  You might see some strange things from time to time.  Every new release of Clang has different behavior on Windows.

- We still use the VC++ Linker, even when compiling using Clang.  The new Clang linker (lld.exe) can be enabled with bAllowClangLinker but it will crash when linking some modules.  It also doesn't produce usable debug symbols by Visual Studio (yet).

#codereview mikolaj.sieluzycki

[CL 2532260 by Mike Fricker in Main branch]
2015-04-30 14:24:21 -04:00
Wes Hunt
0255802490 Enable /Bt+ and /time+ in VC local builds when UEBuildWindows.bLogDetailedCompilerTimingInfo is true.
#codereview:mike.fricker

[CL 2528520 by Wes Hunt in Main branch]
2015-04-28 10:53:30 -04:00
Ben Marsh
f1d8b60d57 Add symbol stripping at the IUEToolChain level. Implemented for Windows, Linux, Android arm7.
#codereview Dmitry.Rekman, Chris.Babcock

[CL 2527125 by Ben Marsh in Main branch]
2015-04-27 12:53:24 -04:00
Ben Marsh
deeac5b6c9 Don't include the module name in the generated PCH; it's in the directory name already, and pushes filenames closer to MAX_PATH on Windows.
Pathalogical case in the ExtendingTheEditor sample was using a PCH name of: D:\\BuildFarm\\buildmachine_++depot+UE4\\Samples\\Sandbox\\ExtendingTheEditor\\Plugins\\DemoEditorExtensions\\Intermediate\\Build\\Win64\\ExtendingTheEditor\\Debug\\DemoEditorExtensionsRuntime\\PCH.DemoEditorExtensionsRuntime.DemoEditorExtensionsRuntimePrivatePCH.h.cpp

[CL 2523558 by Ben Marsh in Main branch]
2015-04-23 18:09:00 -04:00
Mike Fricker
305f5925be Don't treat VC++ compiler differently than other executables for XGE
- Experimenting with disabling this to see if we notice any drawbacks (seems fine after a few days of testing)

[CL 2517690 by Mike Fricker in Main branch]
2015-04-20 11:35:11 -04:00
Matthew Griffin
72cfe6033f Added NotForLicensees to another section of code that builds a path for UnrealCodeAnalyzer
[CL 2506491 by Matthew Griffin in Main branch]
2015-04-09 04:16:50 -04:00
Ben Marsh
3a7e022d4c Generate build receipts from UBT, which keep a record of all the files written for a target and records any metadata needed to stage or deploy it.
[CL 2501101 by Ben Marsh in Main branch]
2015-04-03 10:25:57 -04:00
Mike Fricker
701ad40823 Improved support for Clang C++ compiler on Windows
- The entire editor can now be compiled using Clang on Windows.  It also runs (as long as you use the MSVC linker.)
- Use UEBuildWindows.bCompileWithClang=true to help test Clang support
- Most UE4 programs can now be compiled using Clang on Windows, and linked using the Clang linker on Windows
- Many C++ syntax fixes to resolve Clang errors and warnings when on Windows
- Clang on Windows now supports PCH files properly (but not "shared" PCHs, yet.)
- Hacked the DirectX XAudio2 headers slightly to work around a macro pasting bug in Clang

[CL 2494439 by Mike Fricker in Main branch]
2015-03-27 16:44:10 -04:00
Ben Marsh
0116941f19 Shorten the -precompilemodules argument to -precompile, and -useprecompiledmodules to -useprecompiled.
[CL 2493651 by Ben Marsh in Main branch]
2015-03-27 09:13:06 -04:00
Ben Marsh
dc179de867 Add a "InShippingBuildsOnly" setting for code optimization, so it's possible to disable optimization for engine modules in Development/DebugGame configurations.
[CL 2487683 by Ben Marsh in Main branch]
2015-03-23 09:00:18 -04:00
Ben Marsh
c4c411f61d Removing last few calls to BuildingRocket()!
* Import libraries are added to the build manifest whenever precompiling modules
* UHT now just generates headers to the project directory, and headers aren't included in the engine distribution. UHT was generating them anyway, just not writing them.
* Plugins binaries now just use UE4Game prefix in Rocket (since that's where they're built from), rather than using a special name.
* Platform-specific plugins are not explicitly excluded from builds - will be stripped out by directory instead
* XMPP is not manually excluded from Rocket builds.
* Removed BuildingRocket() function.

[CL 2487163 by Ben Marsh in Main branch]
2015-03-21 07:58:39 -04:00
Ben Marsh
2c2e53eae7 Always strip the full binary path name from PDBs; we always keep them side-by-side with the binary, and want them to be usable on different machines.
[CL 2486667 by Ben Marsh in Main branch]
2015-03-20 16:03:24 -04:00
Ben Marsh
920258d55a Fix handling of compiler definitions which contain spaces; AddDefinition() only looks at value, which is always null when adding define from the compile environment.
[CL 2481784 by Ben Marsh in Main branch]
2015-03-17 13:09:18 -04:00
Ben Marsh
71dd26c6cf Remove unnecessary ref keywords.
[CL 2478511 by Ben Marsh in Main branch]
2015-03-13 10:16:25 -04:00