[macOS] Check Apple specific version instead of generic clang version.

This commit is contained in:
bruvzg 2023-11-22 09:05:45 +02:00
parent 7022271291
commit 5201475f62
No known key found for this signature in database
GPG Key ID: 7960FCF39844EC38
2 changed files with 33 additions and 4 deletions

View File

@ -1012,6 +1012,11 @@ def get_compiler_version(env):
"metadata1": None, "metadata1": None,
"metadata2": None, "metadata2": None,
"date": None, "date": None,
"apple_major": -1,
"apple_minor": -1,
"apple_patch1": -1,
"apple_patch2": -1,
"apple_patch3": -1,
} }
if not env.msvc: if not env.msvc:
@ -1039,8 +1044,32 @@ def get_compiler_version(env):
for key, value in match.groupdict().items(): for key, value in match.groupdict().items():
if value is not None: if value is not None:
ret[key] = value 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 # 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) ret[key] = int(ret[key] or -1)
return ret return ret

View File

@ -121,12 +121,12 @@ def configure(env: "Environment"):
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) cc_version = get_compiler_version(env)
cc_version_major = cc_version["major"] cc_version_major = cc_version["apple_major"]
cc_version_minor = cc_version["minor"] cc_version_minor = cc_version["apple_minor"]
vanilla = is_vanilla_clang(env) vanilla = is_vanilla_clang(env)
# Workaround for Xcode 15 linker bug. # 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.Prepend(LINKFLAGS=["-ld_classic"])
env.Append(CCFLAGS=["-fobjc-arc"]) env.Append(CCFLAGS=["-fobjc-arc"])