From 9df748972796a3c449b0ac0cb10163662dd4ee5c Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Tue, 28 Feb 2023 15:49:59 +0100 Subject: [PATCH] Fix using Vulkan SDK header from system when cross-compiling --- .../Vulkan/GraphicsDeviceVulkan.Build.cs | 11 ++++++++--- Source/ThirdParty/volk/volk.Build.cs | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Source/Engine/GraphicsDevice/Vulkan/GraphicsDeviceVulkan.Build.cs b/Source/Engine/GraphicsDevice/Vulkan/GraphicsDeviceVulkan.Build.cs index b2780f7ca..252652978 100644 --- a/Source/Engine/GraphicsDevice/Vulkan/GraphicsDeviceVulkan.Build.cs +++ b/Source/Engine/GraphicsDevice/Vulkan/GraphicsDeviceVulkan.Build.cs @@ -88,10 +88,12 @@ public sealed class VulkanSdk : Sdk /// /// Tries the get includes folder path (header files). This handles uppercase and lowercase installations for all platforms. /// + /// Target platform hint. /// The includes folder path. /// True if got valid folder, otherwise false. - public bool TryGetIncludePath(out string includesFolderPath) + public bool TryGetIncludePath(TargetPlatform platform, out string includesFolderPath) { + includesFolderPath = string.Empty; if (IsValid) { var vulkanSdk = RootPath; @@ -99,6 +101,11 @@ public sealed class VulkanSdk : Sdk // Use system-installed headers if (vulkanSdk.EndsWith("/include") && Directory.Exists(vulkanSdk)) { + if (platform != Flax.Build.Platform.BuildTargetPlatform) + { + Log.Warning(string.Format("Cannot use system-installed VulkanSDK at {0} when building for platform {1}", vulkanSdk, platform)); + return false; + } includesFolderPath = vulkanSdk; return true; } @@ -123,8 +130,6 @@ public sealed class VulkanSdk : Sdk foreach (var include in includes) Log.Warning(string.Format("No Vulkan header files in {0}", include)); } - - includesFolderPath = string.Empty; return false; } } diff --git a/Source/ThirdParty/volk/volk.Build.cs b/Source/ThirdParty/volk/volk.Build.cs index 8de605d7e..0b5e4d1c0 100644 --- a/Source/ThirdParty/volk/volk.Build.cs +++ b/Source/ThirdParty/volk/volk.Build.cs @@ -48,7 +48,7 @@ public class volk : ThirdPartyModule } string includesFolderPath; - if (VulkanSdk.Instance.TryGetIncludePath(out includesFolderPath)) + if (VulkanSdk.Instance.TryGetIncludePath(options.Platform.Target, out includesFolderPath)) { options.PublicIncludePaths.Add(includesFolderPath); }