Add USE_AOT define to C# when compiling with AOT-enabled

This commit is contained in:
Wojtek Figat
2023-04-01 21:23:49 +02:00
parent 809a1041b3
commit 2196a3d791
5 changed files with 30 additions and 22 deletions

View File

@@ -129,8 +129,6 @@ API_ENUM() enum class BuildPlatform
iOSARM64 = 14,
};
extern FLAXENGINE_API const Char* ToString(const BuildPlatform platform);
/// <summary>
/// Game build configuration modes.
/// </summary>
@@ -152,8 +150,6 @@ API_ENUM() enum class BuildConfiguration
Release = 2,
};
extern FLAXENGINE_API const Char* ToString(const BuildConfiguration configuration);
/// <summary>
/// .NET Ahead of Time Compilation (AOT) modes.
/// </summary>
@@ -180,6 +176,10 @@ enum class DotNetAOTModes
MonoAOTStatic,
};
extern FLAXENGINE_API const Char* ToString(const BuildPlatform platform);
extern FLAXENGINE_API const Char* ToString(const BuildConfiguration configuration);
extern FLAXENGINE_API const Char* ToString(const DotNetAOTModes mode);
#define BUILD_STEP_CANCEL_CHECK if (GameCooker::IsCancelRequested()) return true
/// <summary>

View File

@@ -149,7 +149,7 @@ const Char* ToString(const BuildPlatform platform)
case BuildPlatform::iOSARM64:
return TEXT("iOS ARM64");
default:
return TEXT("?");
return TEXT("");
}
}
@@ -164,7 +164,24 @@ const Char* ToString(const BuildConfiguration configuration)
case BuildConfiguration::Release:
return TEXT("Release");
default:
return TEXT("?");
return TEXT("");
}
}
const Char* ToString(const DotNetAOTModes mode)
{
switch (mode)
{
case DotNetAOTModes::None:
return TEXT("None");
case DotNetAOTModes::ILC:
return TEXT("ILC");
case DotNetAOTModes::MonoAOTDynamic:
return TEXT("MonoAOTDynamic");
case DotNetAOTModes::MonoAOTStatic:
return TEXT("MonoAOTStatic");
default:
return TEXT("");
}
}

View File

@@ -188,8 +188,8 @@ bool CompileScriptsStep::Perform(CookingData& data)
LOG(Info, "Starting scripts compilation for game...");
const String logFile = data.CacheDirectory / TEXT("CompileLog.txt");
auto args = String::Format(
TEXT("-log -logfile=\"{4}\" -build -mutex -buildtargets={0} -platform={1} -arch={2} -configuration={3}"),
target, platform, architecture, configuration, logFile);
TEXT("-log -logfile=\"{4}\" -build -mutex -buildtargets={0} -platform={1} -arch={2} -configuration={3} -aotMode={5}"),
target, platform, architecture, configuration, logFile, ToString(data.Tools->UseAOT()));
#if PLATFORM_WINDOWS
if (data.Platform == BuildPlatform::LinuxX64)
#elif PLATFORM_LINUX

View File

@@ -58,22 +58,9 @@ bool PrecompileAssembliesStep::Perform(CookingData& data)
const Char *platform, *architecture, *configuration = ::ToString(data.Configuration);
data.GetBuildPlatformName(platform, architecture);
const String logFile = data.CacheDirectory / TEXT("AotLog.txt");
const Char* aotModeName = TEXT("");
switch (aotMode)
{
case DotNetAOTModes::ILC:
aotModeName = TEXT("ILC");
break;
case DotNetAOTModes::MonoAOTDynamic:
aotModeName = TEXT("MonoAOTDynamic");
break;
case DotNetAOTModes::MonoAOTStatic:
aotModeName = TEXT("MonoAOTStatic");
break;
}
auto args = String::Format(
TEXT("-log -logfile=\"{}\" -runDotNetAOT -mutex -platform={} -arch={} -configuration={} -aotMode={} -binaries=\"{}\" -intermediate=\"{}\""),
logFile, platform, architecture, configuration, aotModeName, data.DataOutputPath, data.ManagedCodeOutputPath);
logFile, platform, architecture, configuration, ToString(aotMode), data.DataOutputPath, data.ManagedCodeOutputPath);
for (const String& define : data.CustomDefines)
{
args += TEXT(" -D");

View File

@@ -76,6 +76,10 @@ namespace Flax.Build
{
options.ScriptingAPI.Defines.Add(GetCSharpBuildDefine(options.Configuration));
options.ScriptingAPI.Defines.Add(GetCSharpPlatformDefine(options.Platform.Target));
if ((options.Platform != null && !options.Platform.HasDynamicCodeExecutionSupport) || Configuration.AOTMode != DotNetAOTModes.None)
{
options.ScriptingAPI.Defines.Add("USE_AOT");
}
}
internal static string GetCSharpBuildDefine(TargetConfiguration configuration)