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. ///