Files
UnrealEngineUWP/Engine/Source/Runtime/Core/Core.Build.cs
bryan sefcik 07894f4a07 Removed redundant private include paths from build.cs files.
Fixed include paths to be relative to the private or public folders.
Hid or removed includes that reached into other private module folders.
Updated PublicInclude paths when necessary.

#jira
#preflight 631a717cec45fbf3d74d4ba7

[CL 21916033 by bryan sefcik in ue5-main branch]
2022-09-09 00:53:22 -04:00

335 lines
12 KiB
C#

// Copyright Epic Games, Inc. All Rights Reserved.
using UnrealBuildTool;
using System;
using System.IO;
public class Core : ModuleRules
{
public Core(ReadOnlyTargetRules Target) : base(Target)
{
PrivatePCHHeaderFile = "Private/CorePrivatePCH.h";
SharedPCHHeaderFile = "Public/CoreSharedPCH.h";
PrivateDependencyModuleNames.Add("BuildSettings");
if (Target.Platform == UnrealTargetPlatform.Android && Target.Configuration != UnrealTargetConfiguration.Shipping)
{
PrivateDependencyModuleNames.Add("HWCPipe"); // Performance counters for ARM CPUs and ARM Mali GPUs
PrivateDependencyModuleNames.Add("heapprofd"); // Exposes custom allocators to Google's Memory Profiler
}
PrivateDependencyModuleNames.Add("BLAKE3");
PrivateDependencyModuleNames.Add("OodleDataCompression");
PublicDependencyModuleNames.Add("TraceLog");
PublicIncludePaths.Add("Runtime/TraceLog/Public");
PrivateIncludePaths.AddRange(
new string[] {
"Runtime/SynthBenchmark/Public",
"Runtime/Engine/Public",
}
);
PrivateIncludePathModuleNames.AddRange(
new string[] {
"TargetPlatform",
"DerivedDataCache",
"InputDevice",
"Analytics",
"RHI"
}
);
if (Target.bBuildEditor == true)
{
DynamicallyLoadedModuleNames.Add("SourceCodeAccess");
PrivateIncludePathModuleNames.Add("DirectoryWatcher");
DynamicallyLoadedModuleNames.Add("DirectoryWatcher");
}
if (Target.Platform.IsInGroup(UnrealPlatformGroup.Windows))
{
AddEngineThirdPartyPrivateStaticDependencies(Target,
"zlib");
AddEngineThirdPartyPrivateStaticDependencies(Target,
"IntelTBB",
"IntelVTune"
);
// We do not want the static analyzer to run on thirdparty code
if (Target.StaticAnalyzer == StaticAnalyzer.None)
{
PublicSystemIncludePaths.Add(Path.Combine(Target.UEThirdPartySourceDirectory, "mimalloc/include"));
PrivateDefinitions.Add("PLATFORM_BUILDS_MIMALLOC=1");
}
if (Target.WindowsPlatform.bUseBundledDbgHelp)
{
PublicDelayLoadDLLs.Add("DBGHELP.DLL");
PrivateDefinitions.Add("USE_BUNDLED_DBGHELP=1");
RuntimeDependencies.Add("$(EngineDir)/Binaries/ThirdParty/DbgHelp/dbghelp.dll");
}
else
{
PrivateDefinitions.Add("USE_BUNDLED_DBGHELP=0");
}
PrivateDefinitions.Add("YIELD_BETWEEN_TASKS=1");
if (Target.WindowsPlatform.bPixProfilingEnabled && Target.Configuration != UnrealTargetConfiguration.Shipping)
{
PrivateDependencyModuleNames.Add("WinPixEventRuntime");
}
if (Target.Configuration != UnrealTargetConfiguration.Shipping && Target.Type != TargetType.Program)
{
PublicDefinitions.Add("UE_MEMORY_TAGS_TRACE_ENABLED=1");
}
}
else if (Target.Platform == UnrealTargetPlatform.Mac)
{
AddEngineThirdPartyPrivateStaticDependencies(Target,
"IntelTBB",
"zlib",
"PLCrashReporter"
);
PublicFrameworks.AddRange(new string[] { "Cocoa", "Carbon", "IOKit", "Security" });
PublicSystemIncludePaths.Add(Path.Combine(Target.UEThirdPartySourceDirectory, "mimalloc/include"));
PrivateDefinitions.Add("PLATFORM_BUILDS_MIMALLOC=1");
if (Target.bBuildEditor == true)
{
string XcodeRoot = Utils.RunLocalProcessAndReturnStdOut("/usr/bin/xcode-select", "--print-path");
PublicAdditionalLibraries.Add(XcodeRoot + "/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/Current/MultitouchSupport.tbd");
}
}
else if (Target.Platform == UnrealTargetPlatform.IOS || Target.Platform == UnrealTargetPlatform.TVOS)
{
AddEngineThirdPartyPrivateStaticDependencies(Target,
"zlib"
);
PublicFrameworks.AddRange(new string[] { "UIKit", "Foundation", "AudioToolbox", "AVFoundation", "GameKit", "StoreKit", "CoreVideo", "CoreMedia", "CoreGraphics", "GameController", "SystemConfiguration", "DeviceCheck", "UserNotifications" });
if (Target.Platform == UnrealTargetPlatform.IOS)
{
PublicFrameworks.AddRange(new string[] { "CoreMotion", "AdSupport", "WebKit" });
AddEngineThirdPartyPrivateStaticDependencies(Target,
"PLCrashReporter"
);
}
PrivateIncludePathModuleNames.Add("ApplicationCore");
bool bSupportAdvertising = Target.Platform == UnrealTargetPlatform.IOS;
if (bSupportAdvertising)
{
PublicFrameworks.AddRange(new string[] { "iAD" });
}
// export Core symbols for embedded Dlls
ModuleSymbolVisibility = ModuleRules.SymbolVisibility.VisibileForDll;
}
else if (Target.IsInPlatformGroup(UnrealPlatformGroup.Android))
{
AddEngineThirdPartyPrivateStaticDependencies(Target,
"cxademangle",
"zlib",
"libunwind"
);
}
else if (Target.IsInPlatformGroup(UnrealPlatformGroup.Unix))
{
AddEngineThirdPartyPrivateStaticDependencies(Target,
"zlib",
"jemalloc"
);
// Core uses dlopen()
PublicSystemLibraries.Add("dl");
PublicSystemIncludePaths.Add(Path.Combine(Target.UEThirdPartySourceDirectory, "mimalloc/include"));
PrivateDefinitions.Add("PLATFORM_BUILDS_MIMALLOC=1");
}
if (Target.bCompileICU == true)
{
AddEngineThirdPartyPrivateStaticDependencies(Target, "ICU");
}
PublicDefinitions.Add("UE_ENABLE_ICU=" + (Target.bCompileICU ? "1" : "0")); // Enable/disable (=1/=0) ICU usage in the codebase. NOTE: This flag is for use while integrating ICU and will be removed afterward.
// If we're compiling with the engine, then add Core's engine dependencies
if (Target.bCompileAgainstEngine && !Target.bBuildRequiresCookedData)
{
DynamicallyLoadedModuleNames.AddRange(new string[] { "DerivedDataCache" });
DynamicallyLoadedModuleNames.AddRange(new string[] { "Virtualization" });
}
if (Target.Platform.IsInGroup(UnrealPlatformGroup.Desktop))
{
// Enabling more crash information on Desktop platforms.
PublicDefinitions.Add("WITH_ADDITIONAL_CRASH_CONTEXTS=1");
}
// On Windows platform, VSPerfExternalProfiler.cpp needs access to "VSPerf.h". This header is included with Visual Studio, but it's not in a standard include path.
if (Target.Platform.IsInGroup(UnrealPlatformGroup.Windows))
{
bool VSPerfDefined = false;
string VisualStudioInstallation = Target.WindowsPlatform.IDEDir;
if (VisualStudioInstallation != null && VisualStudioInstallation != string.Empty && Directory.Exists(VisualStudioInstallation))
{
string SubFolderName = "x64/PerfSDK/";
string PerfIncludeDirectory = Path.Combine(VisualStudioInstallation, String.Format("Team Tools/Performance Tools/{0}", SubFolderName));
if (File.Exists(Path.Combine(PerfIncludeDirectory, "VSPerf.h"))
&& Target.Configuration != UnrealTargetConfiguration.Shipping)
{
PrivateIncludePaths.Add(PerfIncludeDirectory);
PublicDefinitions.Add("WITH_VS_PERF_PROFILER=1");
VSPerfDefined = true;
}
}
if (!VSPerfDefined)
{
PublicDefinitions.Add("WITH_VS_PERF_PROFILER=0");
}
}
// Superluminal instrumentation support, if one has it installed
if (Target.Platform.IsInGroup(UnrealPlatformGroup.Windows))
{
string SuperluminalInstallDir = Microsoft.Win32.Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Superluminal\Performance", "InstallDir", null) as string;
if (String.IsNullOrEmpty(SuperluminalInstallDir))
{
SuperluminalInstallDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), "Superluminal/Performance");
}
string SuperluminalApiDir = Path.Combine(SuperluminalInstallDir, "API/");
string SubFolderName = "lib/x64/";
string SuperluminalLibDir = Path.Combine(SuperluminalApiDir, SubFolderName);
if (Target.Configuration != UnrealTargetConfiguration.Shipping &&
File.Exists(Path.Combine(SuperluminalApiDir, "include/Superluminal/PerformanceAPI_capi.h")))
{
if (Target.bDebugBuildsActuallyUseDebugCRT == true && Target.Configuration == UnrealTargetConfiguration.Debug)
{
PublicAdditionalLibraries.Add(Path.Combine(SuperluminalLibDir, "PerformanceAPI_MDd.lib"));
}
else
{
PublicAdditionalLibraries.Add(Path.Combine(SuperluminalLibDir, "PerformanceAPI_MD.lib"));
}
PublicDefinitions.Add("WITH_SUPERLUMINAL_PROFILER=1");
PublicSystemIncludePaths.Add(Path.Combine(SuperluminalApiDir, "include/"));
}
else
{
PublicDefinitions.Add("WITH_SUPERLUMINAL_PROFILER=0");
}
}
// Detect if the Concurrency Viewer Extension is installed
if (Target.Platform.IsInGroup(UnrealPlatformGroup.Windows))
{
bool VSCVDefined = false;
string VisualStudioInstallation = Target.WindowsPlatform.IDEDir;
if (VisualStudioInstallation != null && VisualStudioInstallation != string.Empty && Directory.Exists(VisualStudioInstallation))
{
string SubFolderName = @"Common7\IDE\Extensions\jcn3iwfw.vp2\SDK\Native\Inc";
string IncludeDirectory = Path.Combine(VisualStudioInstallation, SubFolderName);
if (File.Exists(Path.Combine(IncludeDirectory, "cvmarkers.h"))
&& Target.Configuration != UnrealTargetConfiguration.Shipping)
{
PrivateIncludePaths.Add(IncludeDirectory);
PublicDefinitions.Add("WITH_CONCURRENCYVIEWER_PROFILER=1");
VSCVDefined = true;
}
}
if (!VSCVDefined)
{
PublicDefinitions.Add("WITH_CONCURRENCYVIEWER_PROFILER=0");
}
}
if (Target.bWithDirectXMath && Target.Platform == UnrealTargetPlatform.Win64)
{
PublicDefinitions.Add("WITH_DIRECTXMATH=1");
}
else
{
PublicDefinitions.Add("WITH_DIRECTXMATH=0");
}
if ((Target.Platform == UnrealTargetPlatform.Mac) || (Target.Platform == UnrealTargetPlatform.IOS) || (Target.Platform == UnrealTargetPlatform.TVOS)
|| (Target.Platform == UnrealTargetPlatform.Android))
{
PublicDefinitions.Add("IS_RUNNING_GAMETHREAD_ON_EXTERNAL_THREAD=1");
}
// Set a macro to allow FApp::GetBuildTargetType() to detect client targts
if (Target.Type == TargetRules.TargetType.Client)
{
PrivateDefinitions.Add("IS_CLIENT_TARGET=1");
}
else
{
PrivateDefinitions.Add("IS_CLIENT_TARGET=0");
}
// Setup definitions to include / exclude Iris modifications to UObject Note: Only the definition is required as we do not depend on Iris in any way.
if (Target.bUseIris == true)
{
PublicDefinitions.Add("UE_WITH_IRIS=1");
}
else
{
PublicDefinitions.Add("UE_WITH_IRIS=0");
}
if (Target.Platform == UnrealTargetPlatform.Win64
&& Target.Configuration != UnrealTargetConfiguration.Shipping)
{
PublicDefinitions.Add("PLATFORM_SUPPORTS_PLATFORM_EVENTS=1");
PublicDefinitions.Add("PLATFORM_SUPPORTS_TRACE_WIN32_VIRTUAL_MEMORY_HOOKS=1");
PublicDefinitions.Add("PLATFORM_SUPPORTS_TRACE_WIN32_MODULE_DIAGNOSTICS=1");
PublicDefinitions.Add("PLATFORM_SUPPORTS_TRACE_WIN32_CALLSTACK=1");
PublicDefinitions.Add("UE_MEMORY_TRACE_AVAILABLE=1");
}
// temporary thing.
PrivateDefinitions.Add("PLATFORM_SUPPORTS_BINARYCONFIG=" + (SupportsBinaryConfig(Target) ? "1" : "0"));
PublicDefinitions.Add("WITH_MALLOC_STOMP=" + (bWithMallocStomp ? "1" : "0"));
PrivateDefinitions.Add("PLATFORM_COMPILER_OPTIMIZATION_LTCG=" + (Target.bAllowLTCG ? "1" : "0"));
PrivateDefinitions.Add("PLATFORM_COMPILER_OPTIMIZATION_PG=" + (Target.bPGOOptimize ? "1" : "0"));
PrivateDefinitions.Add("PLATFORM_COMPILER_OPTIMIZATION_PG_PROFILING=" + (Target.bPGOProfile ? "1" : "0"));
PrivateDefinitions.Add("UE_DEFINE_LEGACY_MATH_CONSTANT_MACRO_NAMES=0");
UnsafeTypeCastWarningLevel = WarningLevel.Error;
}
protected virtual bool SupportsBinaryConfig(ReadOnlyTargetRules Target)
{
return Target.Platform != UnrealTargetPlatform.Android;
}
// Decide if validating memory allocator (aka MallocStomp) can be used on the current plVatform.
// Run-time validation must be enabled through '-stompmalloc' command line argument.
protected virtual bool bWithMallocStomp
{
get =>
Target.Configuration != UnrealTargetConfiguration.Shipping &&
(Target.Platform == UnrealTargetPlatform.Mac ||
Target.Platform == UnrealTargetPlatform.Linux ||
Target.Platform == UnrealTargetPlatform.LinuxArm64 ||
Target.Platform == UnrealTargetPlatform.Win64);
}
}