summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbruvzg <7645683+bruvzg@users.noreply.github.com>2023-09-20 11:03:44 +0300
committerbruvzg <7645683+bruvzg@users.noreply.github.com>2023-09-20 11:03:44 +0300
commit6da8c7a6629a51aeb0fa8ca7922e48617d88aad2 (patch)
tree3ace30b16ec5a2a98a8d13bed8f1f7fb75e797a3
parent571cd0eb791b37e9a8adda9f909251138170f6b7 (diff)
downloadredot-engine-6da8c7a6629a51aeb0fa8ca7922e48617d88aad2.tar.gz
[macOS] Workaround Xcode 15 linker bug.
-rw-r--r--platform/macos/detect.py18
1 files changed, 17 insertions, 1 deletions
diff --git a/platform/macos/detect.py b/platform/macos/detect.py
index 21e824b2d3..6abe121407 100644
--- a/platform/macos/detect.py
+++ b/platform/macos/detect.py
@@ -1,6 +1,6 @@
import os
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 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(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"])
if not "osxcross" in env: # regular native build