Add versions sorting to VulkanSDK selection on macOS

This commit is contained in:
Wojtek Figat
2023-10-02 12:40:37 +02:00
parent dc324b4ec6
commit 1156f72fbe
3 changed files with 26 additions and 14 deletions

View File

@@ -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;
}

View File

@@ -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();
}
}

View File

@@ -746,5 +746,28 @@ namespace Flax.Build
text = text.Replace(findWhat, replaceWith);
File.WriteAllText(file, text);
}
/// <summary>
/// Sorts the directories by name assuming they contain version text. Sorted from lowest to the highest version.
/// </summary>
/// <param name="file">The paths array to sort.</param>
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;
});
}
}
}