Browse Source

[macOS] Workaround Xcode 15 linker bug.

bruvzg 1 year ago
parent
commit
6da8c7a662
1 changed files with 17 additions and 1 deletions
  1. 17 1
      platform/macos/detect.py

+ 17 - 1
platform/macos/detect.py

@@ -1,6 +1,6 @@
 import os
 import os
 import sys
 import sys
-from methods import detect_darwin_sdk_path
+from methods import detect_darwin_sdk_path, get_compiler_version, is_vanilla_clang
 from platform_methods import detect_arch
 from platform_methods import detect_arch
 
 
 from typing import TYPE_CHECKING
 from typing import TYPE_CHECKING
@@ -119,6 +119,22 @@ def configure(env: "Environment"):
         env.Append(CCFLAGS=["-arch", "x86_64", "-mmacosx-version-min=10.13"])
         env.Append(CCFLAGS=["-arch", "x86_64", "-mmacosx-version-min=10.13"])
         env.Append(LINKFLAGS=["-arch", "x86_64", "-mmacosx-version-min=10.13"])
         env.Append(LINKFLAGS=["-arch", "x86_64", "-mmacosx-version-min=10.13"])
 
 
+    cc_version = get_compiler_version(env) or {
+        "major": None,
+        "minor": None,
+        "patch": None,
+        "metadata1": None,
+        "metadata2": None,
+        "date": None,
+    }
+    cc_version_major = int(cc_version["major"] or -1)
+    cc_version_minor = int(cc_version["minor"] or -1)
+    vanilla = is_vanilla_clang(env)
+
+    # Workaround for Xcode 15 linker bug.
+    if not vanilla and cc_version_major == 15 and cc_version_minor == 0:
+        env.Prepend(LINKFLAGS=["-ld_classic"])
+
     env.Append(CCFLAGS=["-fobjc-arc"])
     env.Append(CCFLAGS=["-fobjc-arc"])
 
 
     if not "osxcross" in env:  # regular native build
     if not "osxcross" in env:  # regular native build