diff --git a/Source/Tools/Flax.Build/Build/Builder.cs b/Source/Tools/Flax.Build/Build/Builder.cs index acd1d92d3..c095342cf 100644 --- a/Source/Tools/Flax.Build/Build/Builder.cs +++ b/Source/Tools/Flax.Build/Build/Builder.cs @@ -313,7 +313,6 @@ namespace Flax.Build //throw new Exception(string.Format("Platform {0} {1} is not supported.", targetPlatform, architecture)); var platform = Platform.GetPlatform(targetPlatform); - var toolchain = platform.GetToolchain(architecture); // Special case: building C# bindings only (eg. when building Linux game on Windows without C++ scripting or for C#-only projects) if (Configuration.BuildBindingsOnly || (project.IsCSharpOnlyProject && platform.HasModularBuildSupport)) @@ -327,7 +326,7 @@ namespace Flax.Build switch (target.Type) { case TargetType.NativeCpp: - BuildTargetNativeCppBindingsOnly(rules, graph, target, buildContext, toolchain, platform, architecture, configuration); + BuildTargetNativeCppBindingsOnly(rules, graph, target, buildContext, platform, architecture, configuration); break; case TargetType.DotNet: BuildTargetDotNet(rules, graph, target, platform, configuration); @@ -338,6 +337,7 @@ namespace Flax.Build continue; } + var toolchain = platform.GetToolchain(architecture); using (new ProfileEventScope(target.Name)) { Log.Info(string.Format("Building target {0} in {1} for {2} {3}", target.Name, configuration, targetPlatform, architecture)); diff --git a/Source/Tools/Flax.Build/Build/NativeCpp/Builder.NativeCpp.cs b/Source/Tools/Flax.Build/Build/NativeCpp/Builder.NativeCpp.cs index 8df614774..6e210904b 100644 --- a/Source/Tools/Flax.Build/Build/NativeCpp/Builder.NativeCpp.cs +++ b/Source/Tools/Flax.Build/Build/NativeCpp/Builder.NativeCpp.cs @@ -553,7 +553,7 @@ namespace Flax.Build var graph = new TaskGraph(reference.Project.ProjectFolderPath); var skipBuild = target.IsPreBuilt || (Configuration.SkipTargets != null && Configuration.SkipTargets.Contains(target.Name)); target.PreBuild(); - referencedBuildData = BuildTargetNativeCppBindingsOnly(buildData.Rules, graph, target, buildContext, buildData.Toolchain, buildData.Platform, buildData.Architecture, buildData.Configuration, skipBuild); + referencedBuildData = BuildTargetNativeCppBindingsOnly(buildData.Rules, graph, target, buildContext, buildData.Platform, buildData.Architecture, buildData.Configuration, skipBuild); if (!skipBuild) { using (new ProfileEventScope("PrepareTasks")) @@ -935,7 +935,7 @@ namespace Flax.Build return buildData; } - private static BuildData BuildTargetNativeCppBindingsOnly(RulesAssembly rules, TaskGraph graph, Target target, Dictionary buildContext, Toolchain toolchain, Platform platform, TargetArchitecture architecture, TargetConfiguration configuration, bool skipBuild = false) + private static BuildData BuildTargetNativeCppBindingsOnly(RulesAssembly rules, TaskGraph graph, Target target, Dictionary buildContext, Platform platform, TargetArchitecture architecture, TargetConfiguration configuration, bool skipBuild = false) { if (buildContext.TryGetValue(target, out var buildData)) return buildData; @@ -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, toolchain.Platform, toolchain, toolchain.Architecture, configuration, project.ProjectFolderPath, skipBuild ? string.Empty : Configuration.HotReloadPostfix); + var targetBuildOptions = GetBuildOptions(target, platform, null, architecture, configuration, project.ProjectFolderPath, skipBuild ? string.Empty : Configuration.HotReloadPostfix); using (new ProfileEventScope("PreBuild")) { @@ -992,13 +992,16 @@ namespace Flax.Build { using (new ProfileEventScope(reference.Project.Name)) { - if (buildData.Toolchain == null) - buildData.Toolchain = platform.GetToolchain(architecture); - if (Configuration.BuildBindingsOnly || reference.Project.IsCSharpOnlyProject || !platform.HasRequiredSDKsInstalled) + { BuildTargetReferenceNativeCppBindingsOnly(buildContext, buildData, reference); + } else + { + if (buildData.Toolchain == null) + buildData.Toolchain = platform.GetToolchain(architecture); BuildTargetReferenceNativeCpp(buildContext, buildData, reference); + } } } }