From 368f67191299c0cee405699457ceadd5b5d6a00f Mon Sep 17 00:00:00 2001 From: Eoin O'Neill Date: Thu, 1 Feb 2024 20:14:53 -0800 Subject: [PATCH] Adjust clang version checking to account for other non-vanilla clangs We can no longer make the assumption that all non-vanilla clang versions are Apple's clang or that all other non vanilla clangs will work with the given arguments. There are times where additional tools might use non vanilla clang and the presumed arguments here will break compilation on those platforms. We might want to consider adding tooling-specific optimazation functions long term to fetch desired optimizations on a platform basis. --- tools/targets.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tools/targets.py b/tools/targets.py index 21611349..bc93fd6b 100644 --- a/tools/targets.py +++ b/tools/targets.py @@ -2,6 +2,7 @@ import os import subprocess import sys from SCons.Script import ARGUMENTS +from SCons.Tool import Tool from SCons.Variables import * from SCons.Variables.BoolVariable import _text2bool @@ -24,7 +25,7 @@ def using_clang(env): return "clang" in os.path.basename(env["CC"]) -def is_vanilla_clang(env): +def is_clang_type(env, family_string): if not using_clang(env): return False try: @@ -32,7 +33,7 @@ def is_vanilla_clang(env): except (subprocess.CalledProcessError, OSError): print("Couldn't parse CXX environment variable to infer compiler version.") return False - return not version.startswith("Apple") + return version.startswith(family_string) # Main tool definition @@ -125,10 +126,10 @@ def generate(env): else: env.Append(CCFLAGS=["-g2"]) else: - if using_clang(env) and not is_vanilla_clang(env): + if using_clang(env) and is_clang_type(env, "Apple"): # Apple Clang, its linker doesn't like -s. env.Append(LINKFLAGS=["-Wl,-S", "-Wl,-x", "-Wl,-dead_strip"]) - else: + elif using_clang(env) and is_clang_type(env, "clang"): env.Append(LINKFLAGS=["-s"]) if env["optimize"] == "speed":