From 1156f72fbe726b64338cfd8a8a8bd554029bd191 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Mon, 2 Oct 2023 12:40:37 +0200 Subject: [PATCH] Add versions sorting to VulkanSDK selection on macOS --- .../Vulkan/GraphicsDeviceVulkan.Build.cs | 3 ++- .../Platforms/Android/AndroidNdk.cs | 14 +---------- .../Tools/Flax.Build/Utilities/Utilities.cs | 23 +++++++++++++++++++ 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/Source/Engine/GraphicsDevice/Vulkan/GraphicsDeviceVulkan.Build.cs b/Source/Engine/GraphicsDevice/Vulkan/GraphicsDeviceVulkan.Build.cs index 252652978..9ffa68272 100644 --- a/Source/Engine/GraphicsDevice/Vulkan/GraphicsDeviceVulkan.Build.cs +++ b/Source/Engine/GraphicsDevice/Vulkan/GraphicsDeviceVulkan.Build.cs @@ -51,7 +51,8 @@ public sealed class VulkanSdk : Sdk var subDirs = Directory.GetDirectories(path); if (subDirs.Length != 0) { - path = Path.Combine(subDirs[0], "macOS"); + Flax.Build.Utilities.SortVersionDirectories(subDirs); + path = Path.Combine(subDirs.Last(), "macOS"); if (Directory.Exists(path)) vulkanSdk = path; } diff --git a/Source/Tools/Flax.Build/Platforms/Android/AndroidNdk.cs b/Source/Tools/Flax.Build/Platforms/Android/AndroidNdk.cs index 3d7359d93..ba1a5558d 100644 --- a/Source/Tools/Flax.Build/Platforms/Android/AndroidNdk.cs +++ b/Source/Tools/Flax.Build/Platforms/Android/AndroidNdk.cs @@ -42,19 +42,7 @@ namespace Flax.Build.Platforms var subdirs = Directory.GetDirectories(Path.Combine(AndroidSdk.Instance.RootPath, "ndk")); if (subdirs.Length != 0) { - Array.Sort(subdirs, (a, b) => - { - Version va, vb; - if (Version.TryParse(a, out va)) - { - if (Version.TryParse(b, out vb)) - return va.CompareTo(vb); - return 1; - } - if (Version.TryParse(b, out vb)) - return -1; - return 0; - }); + Utilities.SortVersionDirectories(subdirs); sdkPath = subdirs.Last(); } } diff --git a/Source/Tools/Flax.Build/Utilities/Utilities.cs b/Source/Tools/Flax.Build/Utilities/Utilities.cs index af6777199..268fb06c9 100644 --- a/Source/Tools/Flax.Build/Utilities/Utilities.cs +++ b/Source/Tools/Flax.Build/Utilities/Utilities.cs @@ -746,5 +746,28 @@ namespace Flax.Build text = text.Replace(findWhat, replaceWith); File.WriteAllText(file, text); } + + /// + /// Sorts the directories by name assuming they contain version text. Sorted from lowest to the highest version. + /// + /// The paths array to sort. + public static void SortVersionDirectories(string[] paths) + { + if (paths == null || paths.Length == 0) + return; + Array.Sort(paths, (a, b) => + { + Version va, vb; + if (Version.TryParse(a, out va)) + { + if (Version.TryParse(b, out vb)) + return va.CompareTo(vb); + return 1; + } + if (Version.TryParse(b, out vb)) + return -1; + return 0; + }); + } } }