Files
UnrealEngine/Engine/Source/Runtime/BuildSettings/BuildSettings.Build.cs
Brandyn / Techy fcc1b09210 init
2026-04-04 15:40:51 -05:00

91 lines
4.4 KiB
C#

// Copyright Epic Games, Inc. All Rights Reserved.
using EpicGames.Core;
using Microsoft.Extensions.Logging;
using System;
using System.Linq;
using UnrealBuildBase;
using UnrealBuildTool;
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;
if (Target.bBuildEditor)
{
bDisableAutoRTFMInstrumentation = true;
}
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}\"");
PrivateDefinitions.Add($"BUILD_USER=\"{(Target.bEnablePrivateBuildInformation ? Environment.UserName : String.Empty)}\"");
PrivateDefinitions.Add($"BUILD_USERDOMAINNAME=\"{(Target.bEnablePrivateBuildInformation ? Environment.UserDomainName : String.Empty)}\"");
PrivateDefinitions.Add($"BUILD_MACHINENAME=\"{(Target.bEnablePrivateBuildInformation ? Unreal.MachineName : String.Empty)}\"");
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($"UE_LIVE_CODING_ENGINE_DIR=\"{Unreal.EngineDirectory.FullName.Replace("\\", "\\\\")}\"");
if (Target.ProjectFile != null)
{
PrivateDefinitions.Add($"UE_LIVE_CODING_PROJECT=\"{Target.ProjectFile.FullName.Replace("\\", "\\\\")}\"");
}
}
PrivateDefinitions.Add($"UE_PERSISTENT_ALLOCATOR_RESERVE_SIZE={GetPersistentAllocatorReserveSize()}ULL");
if (!FilesToGenerate.ContainsKey("RHIStaticShaderPlatformNames.gen.h"))
{
FilesToGenerate.TryAdd("RHIStaticShaderPlatformNames.gen.h", [
"#pragma once",
"#include \"HAL/Platform.h\"",
"struct FStaticNameMapEntry { const TCHAR* Name; const TCHAR* Platform; const int Enum; };",
"extern BUILDSETTINGS_API FStaticNameMapEntry GStaticShaderNames[];"
]);
FilesToGenerate.Add("RHIStaticShaderPlatformNames.gen.cpp", [
"#include \"RHIStaticShaderPlatformNames.gen.h\"",
"BUILDSETTINGS_API FStaticNameMapEntry GStaticShaderNames[] = ",
"{",
" { nullptr, nullptr, 0 },",
"};"
]);
}
}
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);
if (Ini.GetInt32("/Script/Engine.GarbageCollectionSettings", "gc.SizeOfPermanentObjectPool", out int _))
{
Target.Logger.LogWarning("/Script/Engine.GarbageCollectionSettings, gc.SizeOfPermanentObjectPool ini for Project {Project} setting was deprecated in a favor of MemoryPools, PersistentAllocatorReserveSizeMB", Target.ProjectFile);
}
Ini.GetInt32("MemoryPools", "PersistentAllocatorReserveSizeMB", out int PersistentAllocatorReserveSizeMB);
return (ulong)PersistentAllocatorReserveSizeMB * 1024 * 1024;
}
}