Commit Graph

86 Commits

Author SHA1 Message Date
Mike Fricker
9c02829737 Fixed UBT compile warning (regress from CL 2537921)
[CL 2537959 by Mike Fricker in Main branch]
2015-05-05 15:57:44 -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
Marcus Wassmer
0ba5c5f2e1 Merge Morpheus 120hz and reprojection support.
Also fixes for NGS2A3D

[CL 2521711 by Marcus Wassmer in Main branch]
2015-04-22 16:41:54 -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
Marcus Wassmer
a0682fd4e2 Support for new Morpheus HMD Server. Morpheus PC preview now works. TargetSettings must set Demo mode to 'Demo'.
Modifies postprocessing pipeline so that distortion is done on buffers scaled by ScreenPercentage.  Scaling up ScreenPercentage will now have a bigger effect on aliasing in the HMD.
Modifies headtracking to be driven by VBLank events rather than the render thread.  Reduces tracking loss.
#codereview Nick.Whiting,JJ.Hoesing

[CL 2505935 by Marcus Wassmer in Main branch]
2015-04-08 17:24:01 -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
Mikolaj Sieluzycki
5dd319203e Fix linker errors on non-monolithic shipping builds.
[CL 2478401 by Mikolaj Sieluzycki in Main branch]
2015-03-13 06:29:19 -04:00
Mikolaj Sieluzycki
148cf5c4b5 Fix linker errors on non-monolithic shipping builds.
[CL 2476555 by Mikolaj Sieluzycki in Main branch]
2015-03-12 05:12:40 -04:00
Ben Marsh
9d3514c040 Use a post-build step to strip symbols on Windows for Rocket builds, using the version of PDBCopy distributed with MSBuild.
[CL 2474120 by Ben Marsh in Main branch]
2015-03-10 14:25:43 -04:00
Matthew Griffin
8b67140afc [INTEGRATE] Change 2449602 by Ben.Marsh@Ben.Marsh_T3245_Clean on 2015/02/17 21:30:32
Move code which detects the VS2012 toolchain for Windows. We don't support it, and UAT calling into it can cause attempts to stage the wrong DLLs for BP-only games. Leave the plumbing around for when we introduce VS2015 support. (UE-9991)

[CL 2450053 by Matthew Griffin in Main branch]
2015-02-18 09:22:42 -05:00
Josh Adams
56440f0048 - First checkin for the new DesktopTargetPlatform that will be able to cook packages for Windows, Mac, and Linux. So far, cooking on Windows and Mac and run on each other (with -opengl on Windows, since Mac can't currently compile D3D shaders)
[CL 2448658 by Josh Adams in Main branch]
2015-02-17 09:57:44 -05:00
Marcus Wassmer
b8c80563ab Update Morpheus to SDK 2.0
#codereview nick.whiting,jj.hoesing

[CL 2447548 by Marcus Wassmer in Main branch]
2015-02-16 14:26:39 -05:00
Terence Burns
98eb296c1a UE-3580
XP support was not able to be set from Bootstrap packaged game. Which meant the subsystem version wasnt valid on xp for this.

[CL 2430072 by Terence Burns in Main branch]
2015-02-03 11:57:21 -05:00