Files
UnrealEngine/Engine/Source/Runtime/BuildSettings/BuildSettings.Build.cs
2025-05-18 13:04:45 +08:00

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;
}
}