Commit Graph

232 Commits

Author SHA1 Message Date
Mikolaj Sieluzycki
971400b7a7 Skip include path normalization and check for existence when generating intellisense.
#codereview Robert.Manuszewski

[CL 2293558 by Mikolaj Sieluzycki in Main branch]
2014-09-11 05:47:22 -04:00
Mikolaj Sieluzycki
cadb9a3944 Move all include and library search directories representation from List to HashSet to automatically avoid duplicates.
#codereview Robert.Manuszewski

[CL 2293482 by Mikolaj Sieluzycki in Main branch]
2014-09-11 03:21:51 -04:00
Michael Trepka
8532434e22 Use Clone() instead of assignment for arrays added to support multiple output items in UBT so they can be modified independently.
#codereview Josh.Adams

[CL 2282963 by Michael Trepka in Main branch]
2014-09-03 10:13:05 -04:00
Josh Adams
ddea2d2fe0 - Changed UBT to allow for multiple OutputPaths in a given UE binary (this is needed by Android to output multiple .so files per UBT run, for armv7, x86, etc)
#codereview ben.marsh

[CL 2281777 by Josh Adams in Main branch]
2014-09-02 14:26:49 -04:00
Mike Fricker
a3ab85edcc UnrealBuildTool: Even faster build iteration with bUseExperimentalFastBuildIteration
- Shaved over *half a second* of the best case iterative build times with UnrealBuildTool
- When assembling a build from an existing UBTMakefile, we now load Target information from the makefile instead of from the C# assembly

[CL 2278065 by Mike Fricker in Main branch]
2014-08-29 15:46:20 -04:00
Ben Marsh
76400f1a73 Build plugins in debug for DebugGame configurations. Engine always loads DebugGame versions of any modules under the game directory, but they are no longer set as UEBuildModuleType.Game in UBT.
#codereview Robert.Manuszewski

[CL 2272198 by Ben Marsh in Main branch]
2014-08-26 11:26:50 -04:00
Ben Marsh
bcd8c2c8a6 Remove code path from UBT which generates an XML build environment. APIDocTool now scrapes build environment from XGE export instead.
#codereview Mike.Fricker

[CL 2267338 by Ben Marsh in Main branch]
2014-08-22 09:03:54 -04:00
Mikolaj Sieluzycki
ea3ca22010 Regex fix.
#codereview Steve.Robb

[CL 2267313 by Mikolaj Sieluzycki in Main branch]
2014-08-22 08:28:48 -04:00
Mikolaj Sieluzycki
2bfd29de79 Remove non-existing include paths from compilation command lines.
#codereview Steve.Robb

[CL 2267311 by Mikolaj Sieluzycki in Main branch]
2014-08-22 08:23:53 -04:00
Mikolaj Sieluzycki
87a76354e0 Clean redundant include paths.
#codereview Steve.Robb

[CL 2265820 by Mikolaj Sieluzycki in Main branch]
2014-08-21 07:33:21 -04:00
Mike Fricker
dea18eaa41 UnrealBuildTool: Fast iteration mode fixes
- Fixed confusing exception when a generated code source file was missing
- No longer try compute PCH for a source file when in assembler only mode (PCH is loaded from UBTMakefile)

[CL 2262371 by Mike Fricker in Main branch]
2014-08-19 08:19:14 -04:00
Mike Fricker
0031e06f21 Experimental UnrealBuildTool makefile support
UnrealBuildTool 'Makefiles' allow for very fast iterative builds.
    - New BuildConfiguration.xml setting added: "bUseExperimentalFastBuildIteration"   (disabled by default)
    - Turning this on causes Unreal Build Tool to emit 'UBT Makefiles' for targets when they're built the first time.
    - Subsequent builds will load these Makefiles and begin outdatedness checking and build invocation very quickly.
    - The caveat is that if source files are added or removed to the project, UBT will need to gather information about those in order for your build to complete successfully.
    - Currently, you must run the project file generator after adding/removing source files to tell UBT to re-gather this information.
    - Events that can invalidate the 'UBT Makefile':
           - Adding/removing .cpp files
           - Adding/removing .h files with UObjects
           - Adding new UObject types to a file that didn't previously have any
           - Changing global build settings (most settings in this file qualify.)
           - Changed code that affects how Unreal Header Tool works
    - You can force regeneration of the 'UBT Makefile' by passing the '-Gather' argument, or simply regenerating project files
    - New command-line parameters added:
           - "-Gather": Tells UBT to always perform the gather step (slower but will catch project structural changes)
           - "-NoGather": Disables the gather step, unless UBT detects that it must be done.  This is the default when bUseExperimentalFastBuildIteration is enabled
           - "-GatherOnly": Runs the gather step and saves a UBTMakefile, but doesn't build anything
           - "-Assemble": Tells UBT to also assemble build products.  This always defaults to enabled
           - "-NoAssemble": Tells UBT to skip the assemble step, whether we gathered build products or not
           - "-AssembleOnly": Tells UBT to only assemble build products and not to gather, unless UBT determines it must

Other changes:
- UBT now keeps track of which targets it was building in an intermediate file, to help it invalidate cached includes in subsequent runs when the targets are different
- C++ includes are now stored in a class separate from the C++ compile enviroment (for easier serialization)
- The method that UBT uses to find the CoreUObject module timestamp was rewritten
- Various '@todo ubtmake' comments added to tag possible remaining Makefile tasks
- The 'FileItem' class had some member variable comments and code cleaned up, while making it serializable
- Cleaned up the comments and member variables in the "Action" class, while making it serializable
- Some UBT classes are now "serializable".  This is because we need to store the data in UBTMakefiles.
- Removed support for Actions to tinker with Stdout and Stderror (was not used for anything)
- Moved PrecompileHeaderEnvironment class to the UEBuildModule.cs source file
- Plugin intermediate include directories are now selected on demand rather than cached early
- Toolchain code for gathering prerequisite headers is now shared in a single function (AddPrerequisiteSourceFile)
- Removed Action.StatusDetailedDescription, was not used for anything
- Removed UEBuildConfiguration.bExcludePlugins, was not used for anything
- Removed ECompilationResult.FailedDueToHeaderChange, was not used for anything

[CL 2254472 by Mike Fricker in Main branch]
2014-08-13 08:17:43 -04:00
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