84 lines
4.1 KiB
C#
84 lines
4.1 KiB
C#
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
using EpicGames.Core;
|
|
using UnrealBuildTool;
|
|
using System;
|
|
using System.Linq;
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
public class BuildSettings : ModuleRules
|
|
{
|
|
public BuildSettings(ReadOnlyTargetRules Target) : base(Target)
|
|
{
|
|
CppCompileWarningSettings.DeterministicWarningLevel = WarningLevel.Off; // This module intentionally uses __DATE__ and __TIME__ macros
|
|
CppCompileWarningSettings.UnsafeTypeCastWarningLevel = WarningLevel.Error;
|
|
|
|
PrivateIncludePathModuleNames.Add("Core");
|
|
|
|
bRequiresImplementModule = false;
|
|
|
|
PrivateDefinitions.Add($"ENGINE_VERSION_MAJOR={Target.Version.MajorVersion}");
|
|
PrivateDefinitions.Add($"ENGINE_VERSION_MINOR={Target.Version.MinorVersion}");
|
|
PrivateDefinitions.Add($"ENGINE_VERSION_HOTFIX={Target.Version.PatchVersion}");
|
|
PrivateDefinitions.Add($"ENGINE_VERSION_STRING=\"{Target.Version.MajorVersion}.{Target.Version.MinorVersion}.{Target.Version.PatchVersion}-{Target.BuildVersion}\"");
|
|
PrivateDefinitions.Add($"ENGINE_IS_LICENSEE_VERSION={(Target.Version.IsLicenseeVersion ? "true" : "false")}");
|
|
PrivateDefinitions.Add($"ENGINE_IS_PROMOTED_BUILD={(Target.Version.IsPromotedBuild ? "true" : "false")}");
|
|
|
|
if (!Target.GlobalDefinitions.Any(x => x.Contains("CURRENT_CHANGELIST", StringComparison.Ordinal)))
|
|
{
|
|
PrivateDefinitions.Add($"CURRENT_CHANGELIST={Target.Version.Changelist}");
|
|
}
|
|
|
|
PrivateDefinitions.Add($"COMPATIBLE_CHANGELIST={Target.Version.EffectiveCompatibleChangelist}");
|
|
PrivateDefinitions.Add($"BRANCH_NAME=\"{Target.Version.BranchName}\"");
|
|
PrivateDefinitions.Add($"BUILD_VERSION=\"{Target.BuildVersion}\"");
|
|
PrivateDefinitions.Add($"BUILD_SOURCE_URL=\"{Target.Version.BuildURL}\"");
|
|
|
|
string userName = string.Empty;
|
|
string userDomainName = string.Empty;
|
|
string machineName = string.Empty;
|
|
if (Target.bEnablePrivateBuildInformation)
|
|
{
|
|
userName = Environment.UserName;
|
|
userDomainName = Environment.UserDomainName;
|
|
machineName = UnrealBuildBase.Unreal.MachineName;
|
|
}
|
|
PrivateDefinitions.Add($"BUILD_USER=\"{userName}\"");
|
|
PrivateDefinitions.Add($"BUILD_USERDOMAINNAME=\"{userDomainName}\"");
|
|
PrivateDefinitions.Add($"BUILD_MACHINENAME=\"{machineName}\"");
|
|
|
|
PrivateDefinitions.Add("SUPPRESS_PER_MODULE_INLINE_FILE"); // This module does not use core's standard operator new/delete overloads
|
|
|
|
if (Target.bWithLiveCoding && Target.LinkType == TargetLinkType.Monolithic)
|
|
{
|
|
PrivateDefinitions.Add(String.Format("UE_LIVE_CODING_ENGINE_DIR=\"{0}\"", UnrealBuildBase.Unreal.EngineDirectory.FullName.Replace("\\", "\\\\")));
|
|
if (Target.ProjectFile != null)
|
|
{
|
|
PrivateDefinitions.Add(String.Format("UE_LIVE_CODING_PROJECT=\"{0}\"", Target.ProjectFile.FullName.Replace("\\", "\\\\")));
|
|
}
|
|
}
|
|
|
|
PrivateDefinitions.Add("UE_PERSISTENT_ALLOCATOR_RESERVE_SIZE=" + GetPersistentAllocatorReserveSize().ToString() + "ULL");
|
|
|
|
if (Target.bBuildEditor)
|
|
{
|
|
bDisableAutoRTFMInstrumentation = true;
|
|
}
|
|
}
|
|
|
|
private ulong GetPersistentAllocatorReserveSize()
|
|
{
|
|
// We have to separate persistent allocator reserve into Editor and Engine as some platforms, like iOS have very limited VM by default, so we can't reserve a lot of vm just in case
|
|
ConfigHierarchyType ConfigHierarchy = Target.Type == TargetType.Editor ? ConfigHierarchyType.Editor : ConfigHierarchyType.Engine;
|
|
ConfigHierarchy Ini = ConfigCache.ReadHierarchy(ConfigHierarchy, Target.BuildEnvironment == TargetBuildEnvironment.Unique ? DirectoryReference.FromFile(Target.ProjectFile) : null, Target.Platform);
|
|
int SizeOfPermanentObjectPool = 0;
|
|
if (Ini.GetInt32("/Script/Engine.GarbageCollectionSettings", "gc.SizeOfPermanentObjectPool", out SizeOfPermanentObjectPool))
|
|
{
|
|
Target.Logger.LogWarning("/Script/Engine.GarbageCollectionSettings, gc.SizeOfPermanentObjectPool ini for Project {0} setting was deprecated in a favor of MemoryPools, PersistentAllocatorReserveSizeMB", Target.ProjectFile.ToString());
|
|
}
|
|
int PersistentAllocatorReserveSizeMB = 0;
|
|
Ini.GetInt32("MemoryPools", "PersistentAllocatorReserveSizeMB", out PersistentAllocatorReserveSizeMB);
|
|
return (ulong)PersistentAllocatorReserveSizeMB * 1024 * 1024;
|
|
}
|
|
}
|