Commit Graph

3 Commits

Author SHA1 Message Date
Ben Marsh
6748a24fb1 Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3232619)
#lockdown Nick.Penwarden
#rb none

==========================
MAJOR FEATURES + CHANGES
==========================

Change 3121996 on 2016/09/12 by Ben.Marsh

	Add support for Visual Studio 2017 (aka "15"; assuming consistent naming with other versions until final name is announced).

	* Compiler, STL implementation and CRT are binary compatible with VS2015 (see https://blogs.msdn.microsoft.com/vcblog/2016/08/24/c1417-features-and-stl-fixes-in-vs-15-preview-4/), so no new third-party libraries needed so far. WindowsPlatform.GetVisualStudioCompilerVersionName() returns "2015" as a result.
	* Default compiler for compiling and generating project files is still VS 2015 for now. Pass -2017 on the command line to GenerateProjectFiles.bat to generate VS2017 projects. Projects generated for VS2017 will use the 2017 compiler by default.
	* Visual Studio source code accessor can talk to VS 2017 instances.
	* Added a VS2017 configuration for UnrealVS, and added precompiled vsix package.
	* Switched GetVSComnTools to check the SOFTWARE\Microsoft\VisualStudio\SxS\VS7 registry key rather than the individual product install registry key. "15" doesn't seem to have it's own "InstallDir" key, but this system seems to work for all versions of Visual Studio (including previous releases of VS Express).
	* Removed ATL dependency from VisualStudioSourceCodeAccessor. It's not installed with VS by default any more, and is only used for a couple of smart pointer classes.

	Tested running the editor and packaging TP_Flying for Win64. Packaging from the editor still defaults to using the 2015 compiler, so ConfigureToolchain() needs to be overriden from the .target.cs file if multiple Visual Studio versions are installed.

Change 3189363 on 2016/11/07 by Ben.Marsh

	Consolidate functionality for determining the path to MSBuild.exe to use for compiling UE4 tools into a single batch file (GetMSBuildToolPath) and fix "Clean" not working on PS4 due to include/library paths being set to something by the Visual Studio environment.

Change 3210598 on 2016/11/27 by Ben.Marsh

	UBT: Prevent the name of each file compiled being output twice on XboxOne. Compiler already outputs this string; the action doesn't need to.

Change 3210601 on 2016/11/27 by Ben.Marsh

	PR #2967: Add silent version of switch game version (Contributed by EricLeeFriedman)

Change 3210602 on 2016/11/27 by Ben.Marsh

	PR #2964: GitDependencies shouldn't try to clean up working directory files that are excluded or ignored (Contributed by joelmcginnis)

Change 3210605 on 2016/11/27 by Ben.Marsh

	UGS: Add a warning when syncing latest would remove changes that have been authored locally. Typically happens when working with precompiled binaries.

Change 3211656 on 2016/11/28 by Ben.Marsh

	UBT: Move ModuleRules and TargetRules into their own file.

Change 3211797 on 2016/11/28 by Ben.Marsh

	UBT: Remove utility functions from TargetRules for checking different classes of target types. Moving TargetRules to be data-only.

Change 3211833 on 2016/11/28 by Ben.Marsh

	UBT: Remove overridable configuration name from target rules. This feature is not used anywhere.

Change 3211859 on 2016/11/28 by Ben.Marsh

	UBT: Deprecate the GetGeneratedCodeVersion() callback in favor of a member variable instead.

Change 3211942 on 2016/11/28 by Ben.Marsh

	UBT: Remove legacy code which tries to change the output paths for console binaries. Output paths for monolithic binaries are always in the project folder now.

Change 3215333 on 2016/11/30 by Ben.Marsh

	UBT: Replace the GetSupportedPlatforms() callback on TargetRules with a SupportedPlatforms attribute. Since a TargetRules object can only be instantiated with an actual platform, it doesn't make sense for it to be an instance method.

Change 3215482 on 2016/11/30 by Ben.Marsh

	UBT: Remove the GetSupportedConfigurations() callback on the TargetRules class. A configuration is required to construct a TargetRules instance, so it doesn't make sense to need to call an instance method to find out which configurations are supported.

Change 3215743 on 2016/11/30 by Ben.Marsh

	UBT: Deprecate the TargetRules.ShouldCompileMonolithic() function: this function requires access to the global command line to operate correctly, which prevents creating target-specific instances, and does not use the platform/configuration passed into the TargetRules constructor.

	Rather than being a callback, the LinkType field can now be set to TargetLinkType.Modular or TargetLinkType.Monolithic from the constructor as appropriate. The default value (TargetLinkType.Default) results in the default link type for the target type being used. Parsing of the command-line overrides is now done when building the TargetDescriptor.

Change 3215778 on 2016/11/30 by Ben.Marsh

	UBT: Mark overrides of the TargetRules.GetModulesToPrecompile method as obsolete.

Change 3217681 on 2016/12/01 by Ben.Marsh

	UAT: Prevent UE4Build deleting .modules files when running with the -Clean argument; these files are artifacts generated by UBT itself, not by the exported XGE script.

Change 3217723 on 2016/12/01 by Ben.Marsh

	UBT: Run pre- and post-build steps for all plugins that are being built, not just those that are enabled.

Change 3217930 on 2016/12/01 by Ben.Marsh

	UGS: Add a perforce settings window, allowing users to set optional values for tuning Perforce performance on unreliable connections.

Change 3218762 on 2016/12/02 by Ben.Marsh

	Enable warnings whenever an undefined macro is used in a constant expression inside an #if or #elif directive, and fix existing violations.

Change 3219161 on 2016/12/02 by Ben.Marsh

	Core: Use the directory containing the current module to derive the UE4 base directory, rather than the executable directory. Allows UE4 to be hosted by a process in a different directory.

Change 3219197 on 2016/12/02 by Ben.Marsh

	Core: When loading a DLL from disk, convert any relative paths to absolute before calling LoadLibrary. The OS resolves these paths relative to the directory containing the process executable -- not the working directory -- so paths need to be absolute to allow UE4 to be hosted by a process elsewhere.

Change 3219209 on 2016/12/02 by Ben.Marsh

	Replace some calls to LoadLibrary() with FPlatformProcess::GetDllHandle(). The UE4 function makes sure that relative paths are resolved relative to the correct base directory, which is important when the host executable is not in Engine/Binaries/Win64.

Change 3219610 on 2016/12/02 by Ben.Marsh

	Add the -q (quiet) option to the Mac unzip command, since it's creating too much log output to be useful.

Change 3219731 on 2016/12/02 by Ben.Marsh

	UBT: Add option to disable IWYU checks regarding the use of monolithic headers (Engine.h, UnrealEd.h, etc...) and including the matching header for a cpp file first. bEnforceIWYU can be set to false in UEBuildConfiguration or on a per-module basis in the module rules.

Change 3220796 on 2016/12/04 by Ben.Marsh

	Remove PrepForUATPackageOrDeploy from the UEBuildDeploy base class. It never has to be accessed through the base class anyway.

Change 3220825 on 2016/12/04 by Ben.Marsh

	UBT: Change all executors to derive from a common base class (ActionExecutor).

Change 3220834 on 2016/12/04 by Ben.Marsh

	UBT: Remove the global CommandLineContains() function.

Change 3222706 on 2016/12/05 by Ben.Marsh

	Merging CL 3221949 from //UE4/Release-4.14: Fixes to code analysis template causing problems with stock install of VS2017.

Change 3222712 on 2016/12/05 by Ben.Marsh

	Merging CL 3222021 from //UE4/Release-4.14: Change detection of MSBuild.exe path to match GetMSBuildPath.bat

Change 3223628 on 2016/12/06 by Ben.Marsh

	Merging CL 3223369 from 4.14 branch: Use the same logic as GetMsBuildPath.bat inside FDesktopPlatformBase to determine path to MSBuild.exe

Change 3223817 on 2016/12/06 by Ben.Marsh

	Remove non-ANSI characters from source files. Compiler/P4 support is patchy for this, and we want to avoid failing prey to different codepages resulting in different interpretations of the source text.

Change 3224046 on 2016/12/06 by Ben.Marsh

	Remove the need for the iOS/TVOS deployment instances to have an IOSPlatformContext instance. The only dependency between the two -- a call to GetRequiredCapabilities() -- is now implemented by querying the INI file for the supported architectures when neeeded.

Change 3224792 on 2016/12/07 by Ben.Marsh

	UBT: Touch PCH wrapper files whenever the file they include is newer rather than writing the timestamp for the included file into it as a comment. Allows use of ccache and similar tools.

Change 3225212 on 2016/12/07 by Ben.Marsh

	UBT: Move settings required for deployment into the UEBuildDeployTarget class, allowing them to be serialized to and from a file the intermediate directory without having to construct a phony UEBuildTarget to deploy.

	Deployment is now performed by a method on UEBuildPlatform, rather than having to create a UEBuildPlatformContext and using that to create a UEBuildDeploy object.

	The -prepfordeploy UBT invocation from UAT, previously done by the per-platform PostBuildTarget() callback when building with XGE, is replaced by running UBT with a path to the serialized UEBuildDeployTarget object, and can be done in a platform agnostic manner.

Change 3226310 on 2016/12/07 by Ben.Marsh

	PR #3015: Fixes wrong VSC++ flags being passed for .c files (Contributed by badlogic)

Change 3228273 on 2016/12/08 by Ben.Marsh

	Update copyright notices for QAGame.

Change 3229166 on 2016/12/09 by Ben.Marsh

	UBT: Rewritten config file parser. No longer requires hard-coded list of sections to be parsed, but parses them on demand. Measured 2x faster read speeds (largely due to eliminating construction of temporary string objects when parsing each line, to trim whitespace and so on). Also includes an attribute-driven parser, which allows reading named config values for marked up fields in an object.

Change 3230601 on 2016/12/12 by Ben.Marsh

	Swarm: Change Swarm AgentInterface to target .NET framework 4.5, to remove dependency on having 4.0 framework installed.

Change 3230737 on 2016/12/12 by Ben.Marsh

	UAT: Stop UE4Build deriving from CommandUtils. Confusing pattern, and causes problems trying to access instance variables that are only set for build commands.

Change 3230751 on 2016/12/12 by Ben.Marsh

	UAT: Move ParseParam*() functions which use the instanced parameter list from CommandUtils to BuildCommand, since that's the only thing that it's instanced for.

Change 3230804 on 2016/12/12 by Ben.Marsh

	UBT: Add the IsPromotedBuild flag to Build.version, and only set the bFormalBuild flag in UBT if it's set. This allows UGS users to avoid having to compile separate RC files for each output binary.

Change 3230831 on 2016/12/12 by Ben.Marsh

	UGS: Warn when trying to switch streams if files are checked out.

Change 3231281 on 2016/12/12 by Chad.Garyet

	Fixing a bug where .modules files were getting put into receipts with their absolute path instead of their relative one

Change 3231496 on 2016/12/12 by Ben.Marsh

	Disable code analysis in CrashReportProcess; causes warnings when compiled with VS2015.

Change 3231979 on 2016/12/12 by Ben.Marsh

	UBT: Suppress LNK4221 when generating import libraries. This can happen often when generating import libraries separately to linking.

Change 3232619 on 2016/12/13 by Ben.Marsh

	Fix "#pragma once in main file" errors on Mac, which are occurring in //UE4/Main.

[CL 3232653 by Ben Marsh in Main branch]
2016-12-13 11:58:16 -05:00
Ben Marsh
20bf0eb6a1 Updating copyright notices to 2017 (copying from //Tasks/UE4/Dev-Copyright-2017).
#rb none
#lockdown Nick.Penwarden

[CL 3226823 by Ben Marsh in Main branch]
2016-12-08 08:52:44 -05:00
Ben Marsh
3dbefdf14d Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3047776)
#lockdown Nick.Penwarden
#rb none

==========================
MAJOR FEATURES + CHANGES
==========================

Change 3021930 on 2016/06/21 by Ben.Marsh

	BuildGraph: Better diagnostic message if the source directory for copies does not exist.

Change 3022391 on 2016/06/21 by Ben.Marsh

	Rework copy task slightly so that all code paths result in files being tagged.

Change 3026592 on 2016/06/24 by Ben.Marsh

	BuildGraph: Add a ForEach element, which will assign a local property to each of a semicolon separated list of values, and expand the elements within it. Added an example in Properties.xml.

Change 3028708 on 2016/06/27 by Matthew.Griffin

	Converting Engine build process to BuildGraph script
	Added Tag Receipts task to retrieve list of build products/dependencies from *.target files.
	Changed Pak File task so that you can specify an existing response file, rather than creating one from the file list.
	Changed base task so that you can resolve filespec from a list of file patterns if you already have them separated, which was the case with wildcards in runtime dependencies.
	Added EngineMajorVersion, EngineMinorVersion and EnginePatchVersion as default properties available to BuildGraph
	Added FinalizeInstalledBuild command to write out InstalledBuild.txt file and config entries for installed platforms
	Included .exe.config and exe.mdb files to build products of CsCompile task if they exist
	Added TagReferences option to CsCompile so that you can get any external references projects have that need to be included when staging
	Added RunOptions parameter to SpawnTask, so that you can specify these for the exe you want to run
	Added missing Runtime Dependency for ICU on Mac

Change 3030209 on 2016/06/28 by Matthew.Griffin

	Renamed EngineBuild.xml to InstalledEngineBuild.xml to make its purpose more clear.
	Removed reference to xcodeunlock.sh from Mac Installed build dependencies as the file itself has been deleted.
	Added myself to list of notifiers for failures in the UE4 Binary build.

Change 3034068 on 2016/06/30 by Ben.Marsh

	BuildGraph: Change scoping rules for properties. Local properties can no longer shadow global properties with the same name (or vice versa), and local properties are always modified in the scope that they were first declared, rather than being re-declared in a narrower scope.

Change 3034070 on 2016/06/30 by Ben.Marsh

	BuildGraph: Warn when referencing a property which is not defined, and add new attributes to the <Property> element to set the default value for a property if it's not already set, and validating that it's one of a list of valid values if it is (eg. <Property Name="WithWin64" Restrict="true;false" Default="false"/>).

Change 3034110 on 2016/06/30 by Matthew.Griffin

	Updated Installed Build so that properties are consistently named Exceptions and that the right versions are used
	Added Filter and Exception properties for each target platform to add any files that can't be figured out via dependencies
	Added Default values for various properties used across Engine build scripts - IsReleaseBranch, IsPreflight, OutputDir, BuildLabel, WithWin64 etc.
	Tagged Generated Includes from each target so that they can be included in Installed Build
	Added additional Android architectures to Shipping build
	Changed SwarmCoordinator to build for Any CPU
	Removed Local HostPlatform property from DDC nodes
	Changed Installed Build target platforms to use Do blocks so that we only have to check With... property once
	Reordered stripping and signing process so that we use the Exception check in less places

Change 3035499 on 2016/07/01 by Ben.Marsh

	BuildGraph: Remove the <Local> element, and just make all <Property> declarations scoped. Also add an error if a property is later declared in a parent scope, since the earlier assignment won't be visible to the later one.

Change 3035520 on 2016/07/01 by Ben.Marsh

	BuildGraph: Add support for <, <=, >, >= operators in condition expressions.

Change 3035666 on 2016/07/01 by Matthew.Griffin

	Added more parameters to Chunk and Label Build tasks
	Updated all remaining uses of Local to Property in Installed Build script
	Made sure Feature Packs use paths compatible with Mac and also changed the node to use a ForEach element

Change 3037020 on 2016/07/04 by Matthew.Griffin

	Ensured that TempStorageFileList uses forward slashes as its path separators so that it's easily used on Mac and Windows
	Was causing the results of the Make Feature Packs node to be tagged using Windows style paths, meaning they would throw an error if you tried to copy them on Mac

Change 3037052 on 2016/07/04 by Ben.Marsh

	Move FJsonValue::ErrorMessage into cpp file, since it depends on the log class defined in Json.h (which includes it).

Change 3037283 on 2016/07/05 by Matthew.Griffin

	Removed EnterScope and LeaveScope from ReadGraphBody so that included files are treated as being in the same scope (allows use of properties across files)

Change 3037547 on 2016/07/05 by Ben.Marsh

	UAT: Allow CommandUtils.Run() to check directories listed in the PATH environment variable for the executable before failing.

Change 3037552 on 2016/07/05 by Ben.Marsh

	BuildGraph: Add an <Unzip> task, which extracts a zip file to an output directory.

Change 3039109 on 2016/07/06 by Matthew.Griffin

	Moved tagging of UAT build products to the Installed Build step as it's the only thing that needs them
	Moved Strip and Sign filters to the filters file, made sure they're used for all operations and added stripping back to UE4Editor nodes
	Changed BuildPatchTool to be built in shipping mode
	Changed all C# projects to be compiled for AnyCPU as they ended up in different output folders otherwise
	Added all files referenced by C# projects to avoid having to filter them manually
	Changed filters to get files included for Linux closer to the old pattern
	Changed Build DDC command to ignore empty entries in FeaturePacks list, don't want to fail the process if a list begins with a ;
	Changed UE4Game to use shipping PhysX libs for Shipping builds
	Added glut32.dll as a Runtime Dependency for PhysX
	Added libsteam_api.so as a Runtime Dependency for Steamworks on Linux

Change 3039676 on 2016/07/06 by Ben.Marsh

	Core: Move definitions for FORCEINLINE'd FMath functions into UnrealMathUtility. Prevents link errors if including one without the other.

Change 3039681 on 2016/07/06 by Ben.Marsh

	Core: Move implementation of GetTypeHash(FTimespan) into CPP file, to remove implicit dependency on the inline implementation of GetTypeHash(int64) being included.

Change 3039735 on 2016/07/06 by Ben.Marsh

	Core: Move USE_DELEGATE_TRYGETBOUNDFUNCTIONNAME into a separate header, so delegate headers can be included separately.

Change 3039878 on 2016/07/06 by Ben.Marsh

	Core: Move FOperatorFunctionID out of TOperatorJumpTable to allow MSVC to compile it and catch errors before the template is instantiated.

Change 3040156 on 2016/07/06 by Ben.Marsh

	Core: Move FDateTime::GetTypeHash() into cpp file to eliminate dependency on TypeHash.h being included before it.

Change 3041009 on 2016/07/07 by Matthew.Griffin

	Changed UE4Game to only use shipping PhysX libraries on Windows

Change 3041015 on 2016/07/07 by Leigh.Swift

	UBT: Support creating C# programs that will be included in the UE4.sln Programs list.
	To have your program listed, remove the sln file that may have been created for you, and add a file named "UE4CSharp.prog" next to your csproj file.

Change 3041234 on 2016/07/07 by Matthew.Griffin

	Added building of Launcher Samples to BuildGraph system
	Added Command to Build Sample projects, which distills to temp directory, builds DDC if needed and then chunks/posts to MCP

Change 3041244 on 2016/07/07 by Ben.Marsh

	Core: Change PlatformIncludes.h to include all the individual PlatformMemory.h, PlatformTime.h, etc... headers rather than including separate per-platform headers which include them all. Makes it much easier to optimize header file usage, and eliminates redundant typedefs in the individual Platform*.h files. Also fixes some headers that previously didn't compile.

Change 3042518 on 2016/07/08 by Matthew.Griffin

	Added content modifiers to those notified about Sample failures
	Throw exception if RocketPromoteBuild tries to promote all samples
	Throw exceptions for missing parameters in BuildLauncherSample command, corrected EngineDir parameter name.

Change 3042545 on 2016/07/08 by Ben.Marsh

	Core: Push/Pop defines for MAX_uint8, MAX_uint16, MAX_uint32, MAX_int32 around Windows.h includes, so we don't need to be careful about the order in which we include NumericLimits.h.

Change 3042546 on 2016/07/08 by Ben.Marsh

	Core: Put standard CRT includes into their own header, so we can include it without taking all of PlatformIncludes.h (and make any platform-specific additions as needed)

Change 3042548 on 2016/07/08 by Ben.Marsh

	Core: Include PlatformCompilerSetup headers from Platform.h, as well as all the defaults for non-platform overriden defines. Allows including Platform.h to get all the basic types, defines and compile environment set up without having to include a large number of system headers or unnecessary functionality.

Change 3044424 on 2016/07/11 by Ben.Marsh

	Merge fixes for QFE installer (CL 3044412) from 4.11 branch.

Change 3044584 on 2016/07/11 by Ben.Marsh

	Core: Move FMath::FormatIntToHumanReadable() to UnrealMath.cpp, since it's a very large/expensive function to try to inline (and introduce a FString dependency for)

Change 3044603 on 2016/07/11 by Matthew.Griffin

	Added PS4 and XboxOne to installed build as options that will always be disabled by default
	Standardised some of the agent names
	Removed logging from the Installed Build nodes as it takes a huge amount of time to write out the list for little reward

Change 3044608 on 2016/07/11 by Ben.Marsh

	Core: Split out definition of SIMD VectorRegister class into its own header, so it's not forcibly included with UnrealMathUtility.

Change 3044638 on 2016/07/11 by Matthew.Griffin

	Added internal build jobs for all games with compile, cook and package nodes.
	Added Documentation, Localization and NonUnity steps.

Change 3045959 on 2016/07/12 by Matthew.Griffin

	Removed Aggregates from Installed Build script as they weren't used/necessary.

Change 3045961 on 2016/07/12 by Matthew.Griffin

	Fixed various issues with Full Build
	Switch to build non-client/server configurations for some games
	Included PS4 and Xbox game targets in our internal monolithics aggregate
	Added Requirements for steps that need UHT, SCW etc.
	Added list of Packaged Game Nodes that we can build up as they're defined
	Added targets that were previously in the Internal Tools nodes
	Changed APIDocTool to build Release as that's what the solution uses and made use of the path created for it
	Removed -clean from the NonUnity targets as that doesn't actually build anything
	Changed mail notifications so that individual nodes are used for content modifiers, not every preceeding node too

Change 3047068 on 2016/07/12 by Ben.Marsh

	BuildGraph: Reduce the amount of log output when compiling a C# project; use /verbosity:minimal and /nolog, as Visual Studio does.

Change 3047298 on 2016/07/12 by Ben.Marsh

	EC: Add a workspace setting specifying that it should be synced incrementally.

Change 3047626 on 2016/07/13 by Matthew.Griffin

	Added PackageToNetwork property, which will default to false, which determines whether to put staged builds on the P: drive or within the LocalBuilds folder of the root dir
	Also changed WorldExplorers to use P:/Builds/Friday instead of WEX, as no one is now clearing up the WEX folder regularly

Change 3047762 on 2016/07/13 by Matthew.Griffin

	Added -nodebuginfo to all compile tasks with -precompile to reduce the size of libs produced
	Added plugin intermediates to list of files excluded from installed build

[CL 3047809 by Ben Marsh in Main branch]
2016-07-13 09:16:28 -04:00