From d3be79fdc45d5edc47b0e776375172fcb386107c Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Mon, 1 Jun 2026 15:50:25 +0200 Subject: [PATCH] Fix missing SDK print for ones from modules or plugins --- Source/Tools/Flax.Build/Build/Builder.cs | 1 + Source/Tools/Flax.Build/Build/Sdk.cs | 33 ++++++++++++++++++++---- Source/Tools/Flax.Build/Program.cs | 1 + 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/Source/Tools/Flax.Build/Build/Builder.cs b/Source/Tools/Flax.Build/Build/Builder.cs index 775bef1dc..6f3abf755 100644 --- a/Source/Tools/Flax.Build/Build/Builder.cs +++ b/Source/Tools/Flax.Build/Build/Builder.cs @@ -384,6 +384,7 @@ namespace Flax.Build } // Prepare tasks for the execution + Sdk.DelayedPrint(); using (new ProfileEventScope("PrepareTasks")) { using (new ProfileEventScope("Setup")) diff --git a/Source/Tools/Flax.Build/Build/Sdk.cs b/Source/Tools/Flax.Build/Build/Sdk.cs index b6354fca4..13353ba8c 100644 --- a/Source/Tools/Flax.Build/Build/Sdk.cs +++ b/Source/Tools/Flax.Build/Build/Sdk.cs @@ -27,6 +27,7 @@ namespace Flax.Build public abstract class Sdk { private static Dictionary _sdks; + private static List _delayedPrints; /// /// Returns true if SDK is valid. @@ -53,14 +54,11 @@ namespace Flax.Build /// public static void Print() { + _delayedPrints = null; Get(string.Empty); foreach (var e in _sdks) { - var sdk = e.Value; - if (sdk.IsValid) - Log.Message(sdk.GetType().Name + ", " + sdk.Version + ", " + sdk.RootPath); - else - Log.Message(sdk.GetType().Name + ", missing"); + Print(e.Value); } foreach (var e in WindowsPlatformBase.GetSDKs()) { @@ -70,6 +68,31 @@ namespace Flax.Build { Log.Message("Windows Toolset " + e.Key + ", " + e.Value); } + _delayedPrints = new List(); + } + + private static void Print(Sdk sdk) + { + if (sdk.IsValid) + Log.Message(sdk.GetType().Name + ", " + sdk.Version + ", " + sdk.RootPath); + else + Log.Message(sdk.GetType().Name + ", missing"); + } + + internal static void DelayedPrint() + { + if (_delayedPrints == null || _delayedPrints.Count == 0) + return; + foreach (var sdk in _delayedPrints) + Print(sdk); + _delayedPrints.Clear(); + } + + protected Sdk() + { + // SDKs coming from dynamic build files (eg. plugins or modules) can be printed after they are initialized with a delay + if (_delayedPrints != null) + _delayedPrints.Add(this); } /// diff --git a/Source/Tools/Flax.Build/Program.cs b/Source/Tools/Flax.Build/Program.cs index 5387a3b38..0c5d2b6f9 100644 --- a/Source/Tools/Flax.Build/Program.cs +++ b/Source/Tools/Flax.Build/Program.cs @@ -165,6 +165,7 @@ namespace Flax.Build } // Performance logging + Sdk.DelayedPrint(); if (Configuration.PerformanceInfo) { Log.Info(string.Empty);