diff --git a/Source/Editor/Cooker/Steps/PrecompileAssembliesStep.cpp b/Source/Editor/Cooker/Steps/PrecompileAssembliesStep.cpp
index 74216f070..b28516630 100644
--- a/Source/Editor/Cooker/Steps/PrecompileAssembliesStep.cpp
+++ b/Source/Editor/Cooker/Steps/PrecompileAssembliesStep.cpp
@@ -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);
diff --git a/Source/Editor/Scripting/ScriptsBuilder.cpp b/Source/Editor/Scripting/ScriptsBuilder.cpp
index 5bdd515d1..8bd9dfd2c 100644
--- a/Source/Editor/Scripting/ScriptsBuilder.cpp
+++ b/Source/Editor/Scripting/ScriptsBuilder.cpp
@@ -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);
diff --git a/Source/Editor/Scripting/ScriptsBuilder.h b/Source/Editor/Scripting/ScriptsBuilder.h
index cf0019df5..f954b0fd0 100644
--- a/Source/Editor/Scripting/ScriptsBuilder.h
+++ b/Source/Editor/Scripting/ScriptsBuilder.h
@@ -40,6 +40,11 @@ public:
///
API_PROPERTY() static int32 GetCompilationsCount();
+ ///
+ /// Gets the full path to the Flax.Build app.
+ ///
+ API_PROPERTY() static String GetBuildToolPath();
+
///
/// Checks if last scripting building failed due to errors.
///