Просмотр исходного кода

Merge pull request #85206 from bruvzg/mac_clang_version_check_update

[macOS] Check Apple specific version instead of generic clang version.
Rémi Verschelde 1 год назад
Родитель
Сommit
4db2a6801f
2 измененных файлов с 33 добавлено и 4 удалено
  1. 30 1
      methods.py
  2. 3 3
      platform/macos/detect.py

+ 30 - 1
methods.py

@@ -1022,6 +1022,11 @@ def get_compiler_version(env):
         "metadata1": None,
         "metadata2": None,
         "date": None,
+        "apple_major": -1,
+        "apple_minor": -1,
+        "apple_patch1": -1,
+        "apple_patch2": -1,
+        "apple_patch3": -1,
     }
 
     if not env.msvc:
@@ -1049,8 +1054,32 @@ def get_compiler_version(env):
         for key, value in match.groupdict().items():
             if value is not None:
                 ret[key] = value
+
+    match_apple = re.search(
+        r"(?:(?<=clang-)|(?<=\) )|(?<=^))"
+        r"(?P<apple_major>\d+)"
+        r"(?:\.(?P<apple_minor>\d*))?"
+        r"(?:\.(?P<apple_patch1>\d*))?"
+        r"(?:\.(?P<apple_patch2>\d*))?"
+        r"(?:\.(?P<apple_patch3>\d*))?",
+        version,
+    )
+    if match_apple is not None:
+        for key, value in match_apple.groupdict().items():
+            if value is not None:
+                ret[key] = value
+
     # Transform semantic versioning to integers
-    for key in ["major", "minor", "patch"]:
+    for key in [
+        "major",
+        "minor",
+        "patch",
+        "apple_major",
+        "apple_minor",
+        "apple_patch1",
+        "apple_patch2",
+        "apple_patch3",
+    ]:
         ret[key] = int(ret[key] or -1)
     return ret
 

+ 3 - 3
platform/macos/detect.py

@@ -130,12 +130,12 @@ def configure(env: "Environment"):
         env.Append(LINKFLAGS=["-arch", "x86_64", "-mmacosx-version-min=10.13"])
 
     cc_version = get_compiler_version(env)
-    cc_version_major = cc_version["major"]
-    cc_version_minor = cc_version["minor"]
+    cc_version_major = cc_version["apple_major"]
+    cc_version_minor = cc_version["apple_minor"]
     vanilla = is_vanilla_clang(env)
 
     # Workaround for Xcode 15 linker bug.
-    if not vanilla and cc_version_major == 15 and cc_version_minor == 0:
+    if not vanilla and cc_version_major == 1500 and cc_version_minor == 0:
         env.Prepend(LINKFLAGS=["-ld_classic"])
 
     env.Append(CCFLAGS=["-fobjc-arc"])