Commit Graph

45 Commits

Author SHA1 Message Date
Steve Robb
7adc9ca97d Generated code information separated into if the module *has* any and if so, *if* we're generating it now... then using the 'has' information to generate the linker fixup file.
#ttp 342622: CRITICAL: Regression: BINARY: PLATFORMERGAME: white square on the screen in cooked version

#codereview robert.manuszewski,ben.marsh

[CL 2240877 by Steve Robb in Main branch]
2014-08-02 09:44:00 -04:00
Mike Fricker
80f6dc9362 UnrealBuildTool: Experimental fast C++ include dependency scanning
- Adds experimental super-fast C++ outdated file checking
- This feature is turned off for now as we continue to test and improve it
      - You can try it out by enabling "bUseExperimentalFastDependencyScan" option in your BuildConfiguration.xml
- Here is the basic idea:
     - We no longer exhaustively scan all includes and build up a big graph every invocation
     - Instead, source files whose build products are missing have their includes scanned asynchronously while being compiled
     - The flat list of dependent includes for every outdated C++ is saved into a new cache file ("FlatCPPIncludes.bin")
     - On the next run, we quickly load that up and "just know" which files to check timestamps on to determine what is out of date
- Lots of "@todo fastubt" comments were added to UnrealBuildTool for potential performance optimizations and further improvements on this feature.

UnrealBuildTool: Determination of which modules have UObjects is now faster
- We now cache which modules have UObjects and load those for the next session

UnrealBuildTool: Module "shared" precompiled header determination is now much faster
- We no longer scan all C++ includes for a module to figure out which "shared" PCH to use
- Instead, we use the module dependencies specified in the module's *.Build.cs file
- For example, if your module depends on "Engine" and "UnrealEd", we choose "UnrealEd"'s shared PCH

Other UBT optimizations:
- Reduced calls to string formatting functions when setting up API definitions for all modules
- Added new performance diagnostics when bPrintPerformanceInfo is enabled in BuildConfiguration.xml
- We no longer check for "external" headers when scanning includes (this code didn't work at all)
- Optimized CleanDirectorySeparators() utility function to avoid string copies

Fixed UnrealBuildTool not saving DependencyCache under a platform-named folder

[CL 2238266 by Mike Fricker in Main branch]
2014-07-31 09:34:11 -04:00
Michael Trepka
e5fa9d51e7 Initial support for specifying additional files or folders that need to be copied to Mac app bundle in module's Build.cs file. For now only used for Mac CoreAudio's RadioEffectUnit plugin. More files and support for iOS bundles will follow soon.
[CL 2234811 by Michael Trepka in Main branch]
2014-07-28 14:55:48 -04:00
Jaroslaw Palczynski
51ba0ff826 CORE: UBT should detect and prevent linkage that violates our EULA.
If UBT is building a non-editor configuration it throws an error if the produced binaries has non-redistributable dependencies.

User can avoid throwing error and change it to warning at the end with flag BuildConfiguration.bBreakBuildOnLicenseViolation = false.

In general module to be redistributable it must not be neither Development nor Editor type. This behavior can be overridden though. One have to just assign true or false to IsRedistributableOverride field of ModuleRules in <ModuleName>.Build.cs file.

UBT will not check for the dependencies also if the module being built is non-redistributable (e.g. some internal programs).

#ttp 335755
#codereview Robert.Manuszewski

[CL 2225366 by Jaroslaw Palczynski in Main branch]
2014-07-21 04:28:22 -04:00
Mike Fricker
2e3e66c699 UnrealBuildTool: No longer scans all includes before running UHT, unless UObject modules are out of date (part 2)
- Fixed initial problems with partially rolled back change in CL 22223765

[CL 2223870 by Mike Fricker in Main branch]
2014-07-18 16:34:12 -04:00
Mike Fricker
9744e95b42 Fixed monolithic link errors (regression)
- Partially backed out experimental UBT changes from CL 2223639

[CL 2223765 by Mike Fricker in Main branch]
2014-07-18 14:28:35 -04:00
Mike Fricker
1d09e223f1 UnrealBuildTool: No longer scans all includes before running UHT, unless UObject modules are out of date
- This can reduce the time it takes for UBT to run when no UObject files were changed

[CL 2223639 by Mike Fricker in Main branch]
2014-07-18 14:20:08 -04:00
Mike Fricker
120b80ad3d Removed obsoleted UObject source file checking code
- This hasn't been needed for a few months, since the new GetUHTModuleInfo() implementation

[CL 2223479 by Mike Fricker in Main branch]
2014-07-18 10:25:51 -04:00
Mike Fricker
c0914df231 Improved UnrealBuildTool performance diagnostics for time spent on PCHs
[CL 2220746 by Mike Fricker in Main branch]
2014-07-16 12:14:22 -04:00
Mike Fricker
c70c37ec4a UnrealBuildTool compile times fixes
- Fixed modules that supply shared PCHs not generating and using their own unique PCH in monolithic builds
- Fixed monolithic builds not detecting that a unique PCH was needed for modules that supply shared PCHs when header file names were different
- Added better verbose debug output to detect problems with shared PCH headers

#codereview robert.manuszewski, ben.marsh

[CL 2220721 by Mike Fricker in Main branch]
2014-07-16 12:13:57 -04:00
Ben Marsh
a2c31c3437 Fix jumbo sized static libraries in Rocket builds. Engine doesn't use a PCH any more, which causes massive redundancy in object files.
[CL 2182571 by Ben Marsh in Main branch]
2014-07-09 19:00:45 -04:00
Ben Marsh
ab4133ad03 Allow the DebugGame configuration setting to be compiled into monolithic executables. The -debug command line parameter is still used for editor builds.
#codereview Marcus.Wassmer

[CL 2176139 by Ben Marsh in Main branch]
2014-07-08 13:49:35 -04:00
Josh Markiewicz
b37f250b75 #Fort weekly dev->main using approved smoketest CL#2118999
UE4-Fortnite-CL-2118999
CL# 2118999
MCP CL# 2117450
Linux Dedicated Server
Backend: Testing

  "app" : "fortnite",
  "moduleName" : "Fortnite-PublicService",
  "branch" : "TRUNK",
  "build" : "217",
  "cln" : "2117450",
  "version" : "UNKNOWN"

[CL 2123380 by Josh Markiewicz in Main branch]
2014-07-01 11:28:39 -04:00
Steve Robb
610ca4bb81 Fix for absolute paths in compiler response file.
#codereview robert.manuszewski

[CL 2113891 by Steve Robb in Main branch]
2014-06-23 07:57:23 -04:00
Ben Marsh
8ffc82bbd0 Add concept of an 'API version' for modules, which is used for determining compatibility of DLLs. By default, the API version is the current changelist number, but can be set to previous changelists when making hotfixes. The API version number is stored in a special resource section for DLLs on Windows, and in the current-version field for dylibs on Mac.
In contrast to the previous system, this does not require special-casing for Rocket builds and will work correctly for nightlies and other out-of-band releases. It also removes the requirement for games to adhere to a strict format of version string on Windows for the editor to be able to load them, since the new data is injected indepdendently of the default resource by UBT.

#codereview Robert.Manuszewski, Michael.Trepka

[CL 2111949 by Ben Marsh in Main branch]
2014-06-20 13:02:34 -04:00
Ben Marsh
856da88e2c Add Rocket static libraries to the linker using absolute paths, to fix Android linking from a different working directory.
[CL 2110456 by Ben Marsh in Main branch]
2014-06-19 10:52:34 -04:00
Josh Adams
cf74a1c788 - Merging EAGLView and MetalView into one class, they share a bunch of stuff, and there are too many if (Delegate.MetalView? Delegate.MetalView : Delegate.EAGLViewl) type things around
- Added better checking for device support for Metal
- Added proper support for WeakFrameworks in UBT

[CL 2109654 by Josh Adams in Main branch]
2014-06-18 15:57:40 -04:00
Mike Fricker
2a5375dfb8 Removed bEnableInlining setting from module build rules
- This setting wasn't really used for anything; we always enable inlining for all C++ modules

[CL 2099220 by Mike Fricker in Main branch]
2014-06-09 11:51:22 -04:00
Jaroslaw Palczynski
220c44b806 [GitHub] 132 : Introduce NativeBuildEnvironmentConfiguration
#github 132
#ttp 334942

[CL 2098971 by Jaroslaw Palczynski in Main branch]
2014-06-09 11:12:01 -04:00
Robert Manuszewski
cb6eca96e7 Removing debug code
[CL 2094570 by Robert Manuszewski in Main branch]
2014-06-04 12:36:41 -04:00
Robert Manuszewski
48d28fba01 Fixing shared pch warnings. Making sure Engine.h is not included in any Engine public header nor in any public header of modules used by the engine.
[CL 2094299 by Robert Manuszewski in Main branch]
2014-06-04 08:05:42 -04:00
Robert Manuszewski
f3effc54c2 Temporarily back out changelist 2094170 (due to CIS failures)
[CL 2094242 by Robert Manuszewski in Main branch]
2014-06-04 05:55:27 -04:00
Robert Manuszewski
96e59643ec Fixing shared pch warnings. Making sure Engine.h is not included in any Engine public header nor in any public header of modules used by the engine.
[CL 2094170 by Robert Manuszewski in Main branch]
2014-06-04 04:04:51 -04:00
Robert Manuszewski
f905cf180c GitHub pull request #190: Detailed module types for plugins
[CL 2088170 by Robert Manuszewski in Main branch]
2014-05-29 17:37:45 -04:00
Steve Robb
8523702bd7 Fix for hot reload.
#ttp CRITICAL: Regression: EDITOR: Game Hot Recompile Fails

#change UEBuildModule.SourceFiles renamed to SourceFilesToBuild.
#add UEBuildModule.SourceFilesFound which are used for PCH determination.
#change Source file categorization by extension moved into its own function.
#fix Source files always discovered (except during project generation) and passed to the module so that the found versions can always be found, but the built versions only exist if we need them to.
#change Spelling error fixed.

#codereview robert.manuszewski,matt.kuhlenschmidt

[CL 2083377 by Steve Robb in Main branch]
2014-05-29 16:51:44 -04:00