Commit Graph

126 Commits

Author SHA1 Message Date
Steve Robb
cbe5b79c73 Merging using Orion->UE4
CL# 2698724:
UHT speed improvements:

Code is now generated with tabs, rather than going through a separate Tabify step.
Some expensive temporaries created during iteration and during iteration have been removed.
FFunctionData::FunctionDataMap now uses unique ownership instead of shared ownership.
TCString::Spc (and the new TCString::Tab) now uses a compile-time array instead of one generated at runtime with a static.
TSet::Compact no longer rehashes if no compaction was performed.
TArray assignment no longer reallocs to the same capacity.

[CL 2698780 by Steve Robb in Main branch]
2015-09-21 07:53:49 -04:00
Robert Manuszewski
5da5fbf1cc Fix for running Z_ConstructUClass* for dynamic classes while constructing the UClass object.
[CL 2687840 by Robert Manuszewski in Main branch]
2015-09-11 10:08:33 -04:00
Robert Manuszewski
776997161a Dynamic classes can now be constructed by their StaticClass() functions (no need to call ConstructDynamicType)
[CL 2687686 by Robert Manuszewski in Main branch]
2015-09-11 06:51:32 -04:00
Dan Oconnor
87de01cf2c Code generator now supports UProperties that have a name that is different than the c++ symbol name
[CL 2685046 by Dan Oconnor in Main branch]
2015-09-09 14:07:28 -04:00
Robert Manuszewski
d02f2256d1 Basic support for 'dynamic' Utypes (types that don't need to be constructed at runtime, can be GC'd, etc). Native blueprint support for UHT.
[CL 2682947 by Robert Manuszewski in Main branch]
2015-09-08 09:23:57 -04:00
Robert Manuszewski
62635cffd9 Making FNativeClassHeaderGenerator::GetGeneratedFunctionTextDevice's MaxLinesPerCpp configurable via ini setting.
[CL 2680019 by Robert Manuszewski in Main branch]
2015-09-04 03:35:53 -04:00
Gareth Martin
125ac6132f Fix generated _getUObject() function not having "override" when it should
[CL 2664253 by Gareth Martin in Main branch]
2015-08-21 07:27:28 -04:00
Robert Manuszewski
43728870d0 When cooking saving package will now skip creating exports and imports that are editor-only (are instances of an editor class).
[CL 2662441 by Robert Manuszewski in Main branch]
2015-08-20 06:52:43 -04:00
MrMormon
9e4eadaf35 PR #1460: Fixed LogCompile typo: Tabify time was was... (Contributed by MrMormon)
[CL 2654482 by Robert Manuszewski in Main branch]
2015-08-13 09:24:50 -04:00
Mikolaj Sieluzycki
a53cf2e072 Make UEnums store values as uint8 instead of int8.
#codereview Robert.Manuszewski

[CL 2643276 by Mikolaj Sieluzycki in Main branch]
2015-08-04 08:20:16 -04:00
Maciej Mroz
ae93f71eb4 CodeGenerator sets CppType in Enum
UByteProperty::GetCPPType returns proper type

#codereview Steve.Robb

[CL 2641863 by Maciej Mroz in Main branch]
2015-08-03 09:58:36 -04:00
Martin Mittring
fcffaa7884 better %f seconds printout
[CL 2624557 by Martin Mittring in Main branch]
2015-07-17 13:48:35 -04:00
Jaroslaw Palczynski
98611dbff9 UHT: Added class range validation in exporting code to prevent crashes when they occur during bad parsing.
#codereview Robert.Manuszewski

[CL 2622001 by Jaroslaw Palczynski in Main branch]
2015-07-15 13:24:05 -04:00
Steve Robb
4e1172d62b Prevent UHT crash when looking up parent types during code generation.
#codereview robert.manuszewski

[CL 2619876 by Steve Robb in Main branch]
2015-07-14 06:27:34 -04:00
Mikolaj Sieluzycki
993cdb271f Make UHT parse TSubclassOf<USomeClass>& parameters to RPC without compilation error.
[CL 2616553 by Mikolaj Sieluzycki in Main branch]
2015-07-10 08:56:36 -04:00
Steve Robb
fab3d634d9 Forward declarations of DelegateWrapper functions removed from generated headers.
#codereview robert.manuszewski

[CL 2587625 by Steve Robb in Main branch]
2015-06-15 14:06:46 -04:00
Jaroslaw Palczynski
3901c239a4 UE-16079: Creating Factory in Runtime Module is not possible and has strange error.
Fixed UHT to detect that a parent class hasn't been parsed before it's child and display a better error message.

[CL 2573515 by Jaroslaw Palczynski in Main branch]
2015-06-02 02:12:11 -04:00
Robert Manuszewski
f26442b5f7 Fixing UHT not finding ScriptGeneratorPlugin
[CL 2566688 by Robert Manuszewski in Main branch]
2015-05-27 11:12:26 -04:00
Mikolaj Sieluzycki
ac339b4bbb Make UEnums tightly packed.
[CL 2564612 by Mikolaj Sieluzycki in Main branch]
2015-05-26 03:36:08 -04:00
Jaroslaw Palczynski
86fb0d52a1 UE-12916: Attempting to use the GameplayTags module in a binary code project will result in build failures in Visual Studio.
[CL 2562196 by Jaroslaw Palczynski in Main branch]
2015-05-22 02:54:27 -04:00
Marc Audy
64c7f7dbd5 Use PRAGMA_ENABLE_DEPRECATION_WARNINGS instead of PRAGMA_POP in generated code
[CL 2548037 by Marc Audy in Main branch]
2015-05-12 17:44:46 -04:00
Robert Manuszewski
cff51abde4 Fixing hot-reload not updating derived classes if the base class layout changed resulting in the derived class layout changes without changing the overall class size.
[CL 2540792 by Robert Manuszewski in Main branch]
2015-05-07 05:55:26 -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
Steve Robb
1421ef3d6f Fix for the skipping of DECLARE_MULTICAST_DELEGATE declarations.
Bunch of extra checks for this kind of failure in future.
Some scope bracing fixes.

#codereview robert.manuszewski

[CL 2531944 by Steve Robb in Main branch]
2015-04-30 10:25:31 -04:00
Ben Marsh
8be8504edc Remove some of the tedious layers of indirection from the plugin manager.
[CL 2521707 by Ben Marsh in Main branch]
2015-04-22 16:41:13 -04:00