From e6ba2402b715db660117182149828542af269a70 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Tue, 28 Sep 2021 20:06:26 +0200 Subject: [PATCH] Add `TryGetToolchain` to build platform #631 --- Source/Tools/Flax.Build/Build/Builder.Projects.cs | 4 ++-- .../Flax.Build/Build/NativeCpp/Builder.NativeCpp.cs | 4 ++-- Source/Tools/Flax.Build/Build/Platform.cs | 10 ++++++++++ 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/Source/Tools/Flax.Build/Build/Builder.Projects.cs b/Source/Tools/Flax.Build/Build/Builder.Projects.cs index c91fd9f9c..5214b62f8 100644 --- a/Source/Tools/Flax.Build/Build/Builder.Projects.cs +++ b/Source/Tools/Flax.Build/Build/Builder.Projects.cs @@ -34,7 +34,7 @@ namespace Flax.Build var platform = Platform.BuildPlatform; var architecture = TargetArchitecture.AnyCPU; var architectureName = "AnyCPU"; - var toolchain = platform.HasRequiredSDKsInstalled ? platform.GetToolchain(architecture) : null; + var toolchain = platform.TryGetToolchain(architecture); var configuration = TargetConfiguration.Debug; var configurationName = "Debug"; @@ -113,7 +113,7 @@ namespace Flax.Build if (platform is IProjectCustomizer customizer) customizer.GetProjectArchitectureName(project, platform, architecture, ref architectureName); - var toolchain = platform.HasRequiredSDKsInstalled ? platform.GetToolchain(architecture) : null; + var toolchain = platform.TryGetToolchain(architecture); var targetBuildOptions = GetBuildOptions(target, platform, toolchain, architecture, configuration, project.WorkspaceRootPath); var modules = CollectModules(rules, platform, target, targetBuildOptions, toolchain, architecture, configuration); foreach (var module in modules) diff --git a/Source/Tools/Flax.Build/Build/NativeCpp/Builder.NativeCpp.cs b/Source/Tools/Flax.Build/Build/NativeCpp/Builder.NativeCpp.cs index 6e210904b..494288a05 100644 --- a/Source/Tools/Flax.Build/Build/NativeCpp/Builder.NativeCpp.cs +++ b/Source/Tools/Flax.Build/Build/NativeCpp/Builder.NativeCpp.cs @@ -954,7 +954,7 @@ namespace Flax.Build throw new Exception($"Cannot build target {target.Name}. The project file is missing (.flaxproj located in the folder above)."); // Setup build environment for the target - var targetBuildOptions = GetBuildOptions(target, platform, null, architecture, configuration, project.ProjectFolderPath, skipBuild ? string.Empty : Configuration.HotReloadPostfix); + var targetBuildOptions = GetBuildOptions(target, platform, platform.TryGetToolchain(architecture), architecture, configuration, project.ProjectFolderPath, skipBuild ? string.Empty : Configuration.HotReloadPostfix); using (new ProfileEventScope("PreBuild")) { @@ -977,7 +977,7 @@ namespace Flax.Build Target = target, TargetOptions = targetBuildOptions, Platform = platform, - Toolchain = null, + Toolchain = targetBuildOptions.Toolchain, Architecture = architecture, Configuration = configuration, }; diff --git a/Source/Tools/Flax.Build/Build/Platform.cs b/Source/Tools/Flax.Build/Build/Platform.cs index 96f187a37..5974206ba 100644 --- a/Source/Tools/Flax.Build/Build/Platform.cs +++ b/Source/Tools/Flax.Build/Build/Platform.cs @@ -183,6 +183,16 @@ namespace Flax.Build throw new Exception(string.Format("Platform {0} is not supported.", targetPlatform)); } + /// + /// Tries to create the build toolchain for a given architecture. Returns null if platform is not supported. + /// + /// The target architecture. + /// The toolchain. + public Toolchain TryGetToolchain(TargetArchitecture targetArchitecture) + { + return HasRequiredSDKsInstalled ? GetToolchain(targetArchitecture) : null; + } + /// /// Creates the build toolchain for a given architecture. ///