Browse Source

Merge pull request #87305 from bruvzg/mvk_detect_new

[macOS] Fix MoltenVK SDK detection after file location changes in 1.3.275.0.
Yuri Sizov 1 year ago
parent
commit
96296e476f
1 changed files with 25 additions and 10 deletions
  1. 25 10
      platform/macos/detect.py

+ 25 - 10
platform/macos/detect.py

@@ -67,21 +67,30 @@ def get_mvk_sdk_path():
     if not os.path.exists(dirname):
         return ""
 
-    ver_file = "0.0.0.0"
-    ver_num = ver_parse(ver_file)
-
+    ver_num = ver_parse("0.0.0.0")
     files = os.listdir(dirname)
+    lib_name_out = dirname
     for file in files:
         if os.path.isdir(os.path.join(dirname, file)):
             ver_comp = ver_parse(file)
-            lib_name = os.path.join(
-                os.path.join(dirname, file), "MoltenVK/MoltenVK.xcframework/macos-arm64_x86_64/libMoltenVK.a"
-            )
-            if os.path.isfile(lib_name) and ver_comp > ver_num:
-                ver_num = ver_comp
-                ver_file = file
+            if ver_comp > ver_num:
+                # Try new SDK location.
+                lib_name = os.path.join(
+                    os.path.join(dirname, file), "macOS/lib/MoltenVK.xcframework/macos-arm64_x86_64/"
+                )
+                if os.path.isfile(os.path.join(lib_name, "libMoltenVK.a")):
+                    ver_num = ver_comp
+                    lib_name_out = lib_name
+                else:
+                    # Try old SDK location.
+                    lib_name = os.path.join(
+                        os.path.join(dirname, file), "MoltenVK/MoltenVK.xcframework/macos-arm64_x86_64/"
+                    )
+                    if os.path.isfile(os.path.join(lib_name, "libMoltenVK.a")):
+                        ver_num = ver_comp
+                        lib_name_out = lib_name
 
-    return os.path.join(os.path.join(dirname, ver_file), "MoltenVK/MoltenVK.xcframework/macos-arm64_x86_64/")
+    return lib_name_out
 
 
 def configure(env: "Environment"):
@@ -269,6 +278,12 @@ def configure(env: "Environment"):
             mvk_list = [get_mvk_sdk_path(), "/opt/homebrew/lib", "/usr/local/homebrew/lib", "/opt/local/lib"]
             if env["vulkan_sdk_path"] != "":
                 mvk_list.insert(0, os.path.expanduser(env["vulkan_sdk_path"]))
+                mvk_list.insert(
+                    0,
+                    os.path.join(
+                        os.path.expanduser(env["vulkan_sdk_path"]), "macOS/lib/MoltenVK.xcframework/macos-arm64_x86_64/"
+                    ),
+                )
                 mvk_list.insert(
                     0,
                     os.path.join(