Reset AOT Assemblies game cooker cache when Flax.Build gets modified

This commit is contained in:
Wojtek Figat
2023-04-05 19:17:53 +02:00
parent 09bd7c696b
commit a9b706becf
3 changed files with 21 additions and 7 deletions

View File

@@ -21,7 +21,11 @@ void PrecompileAssembliesStep::OnBuildStarted(CookingData& data)
// Reset any AOT cache from previous run if the AOT mode has changed (eg. Mono AOT -> ILC on Desktop)
const String aotModeCacheFilePath = data.ManagedCodeOutputPath / TEXT("AOTMode.txt");
String aotModeCacheValue = String::Format(TEXT("{};{};{}"), (int32)aotMode, (int32)data.Configuration, (int32)buildSettings.SkipUnusedDotnetLibsPackaging);
String aotModeCacheValue = String::Format(TEXT("{};{};{};{}"),
(int32)aotMode,
(int32)data.Configuration,
(int32)buildSettings.SkipUnusedDotnetLibsPackaging,
FileSystem::GetFileLastEditTime(ScriptsBuilder::GetBuildToolPath()).Ticks);
for (const String& define : data.CustomDefines)
aotModeCacheValue += define;
if (FileSystem::DirectoryExists(data.ManagedCodeOutputPath))
@@ -60,7 +64,7 @@ bool PrecompileAssembliesStep::Perform(CookingData& data)
// Run AOT by Flax.Build (see DotNetAOT)
const Char *platform, *architecture, *configuration = ::ToString(data.Configuration);
data.GetBuildPlatformName(platform, architecture);
const String logFile = data.CacheDirectory / TEXT("AotLog.txt");
const String logFile = data.CacheDirectory / TEXT("AOTLog.txt");
String args = String::Format(
TEXT("-log -logfile=\"{}\" -runDotNetAOT -mutex -platform={} -arch={} -configuration={} -aotMode={} -binaries=\"{}\" -intermediate=\"{}\""),
logFile, platform, architecture, configuration, ToString(aotMode), data.DataOutputPath, data.ManagedCodeOutputPath);

View File

@@ -134,6 +134,15 @@ int32 ScriptsBuilder::GetCompilationsCount()
return _compilationsCount;
}
String ScriptsBuilder::GetBuildToolPath()
{
#if USE_NETCORE && (PLATFORM_LINUX || PLATFORM_MAC)
return Globals::StartupFolder / TEXT("Binaries/Tools/Flax.Build");
#else
return Globals::StartupFolder / TEXT("Binaries/Tools/Flax.Build.exe");
#endif
}
bool ScriptsBuilder::LastCompilationFailed()
{
return _lastCompilationFailed;
@@ -221,11 +230,7 @@ void ScriptsBuilder::Compile()
bool ScriptsBuilder::RunBuildTool(const StringView& args, const StringView& workingDir)
{
PROFILE_CPU();
#if USE_NETCORE && (PLATFORM_LINUX || PLATFORM_MAC)
const String buildToolPath = Globals::StartupFolder / TEXT("Binaries/Tools/Flax.Build");
#else
const String buildToolPath = Globals::StartupFolder / TEXT("Binaries/Tools/Flax.Build.exe");
#endif
const String buildToolPath = GetBuildToolPath();
if (!FileSystem::FileExists(buildToolPath))
{
Log::FileNotFoundException(buildToolPath).SetLevel(LogType::Fatal);

View File

@@ -40,6 +40,11 @@ public:
/// </summary>
API_PROPERTY() static int32 GetCompilationsCount();
/// <summary>
/// Gets the full path to the Flax.Build app.
/// </summary>
API_PROPERTY() static String GetBuildToolPath();
/// <summary>
/// Checks if last scripting building failed due to errors.
/// </summary>