Windows/detect.py: Detect llvm-mingw GCC wrappers and set use_llvm

This commit is contained in:
Alvin Wong 2024-07-26 01:36:22 +08:00
parent 3a0837b74b
commit e9b6c1baf8

View file

@ -20,7 +20,7 @@ def get_name():
return "Windows" return "Windows"
def try_cmd(test, prefix, arch): def try_cmd(test, prefix, arch, check_clang=False):
archs = ["x86_64", "x86_32", "arm64", "arm32"] archs = ["x86_64", "x86_32", "arm64", "arm32"]
if arch: if arch:
archs = [arch] archs = [arch]
@ -33,8 +33,10 @@ def try_cmd(test, prefix, arch):
stderr=subprocess.PIPE, stderr=subprocess.PIPE,
stdout=subprocess.PIPE, stdout=subprocess.PIPE,
) )
out.communicate() outs, errs = out.communicate()
if out.returncode == 0: if out.returncode == 0:
if check_clang and not outs.startswith(b"clang"):
return False
return True return True
except Exception: except Exception:
pass pass
@ -641,6 +643,10 @@ def configure_mingw(env: "SConsEnvironment"):
if env["use_llvm"] and not try_cmd("clang --version", env["mingw_prefix"], env["arch"]): if env["use_llvm"] and not try_cmd("clang --version", env["mingw_prefix"], env["arch"]):
env["use_llvm"] = False env["use_llvm"] = False
if not env["use_llvm"] and try_cmd("gcc --version", env["mingw_prefix"], env["arch"], True):
print("Detected GCC to be a wrapper for Clang.")
env["use_llvm"] = True
# TODO: Re-evaluate the need for this / streamline with common config. # TODO: Re-evaluate the need for this / streamline with common config.
if env["target"] == "template_release": if env["target"] == "template_release":
if env["arch"] != "arm64": if env["arch"] != "arm64":