Merge pull request #94747 from alvinhochun/mingw-llvm-build-flags

Some improvements for MinGW and LLVM build on Windows
This commit is contained in:
Rémi Verschelde 2024-08-28 13:14:19 +02:00
commit 2730d703a8
No known key found for this signature in database
GPG Key ID: C3336907360768E1
2 changed files with 20 additions and 17 deletions

View File

@ -495,6 +495,8 @@ def use_windows_spawn_fix(self, platform=None):
rv = proc.wait()
if rv:
print_error(err)
elif len(err) > 0 and not err.isspace():
print(err)
return rv
def mySpawn(sh, escape, cmd, args, env):

View File

@ -20,34 +20,26 @@ def get_name():
return "Windows"
def try_cmd(test, prefix, arch):
def try_cmd(test, prefix, arch, check_clang=False):
archs = ["x86_64", "x86_32", "arm64", "arm32"]
if arch:
archs = [arch]
for a in archs:
try:
out = subprocess.Popen(
get_mingw_bin_prefix(prefix, arch) + test,
get_mingw_bin_prefix(prefix, a) + test,
shell=True,
stderr=subprocess.PIPE,
stdout=subprocess.PIPE,
)
out.communicate()
outs, errs = out.communicate()
if out.returncode == 0:
if check_clang and not outs.startswith(b"clang"):
return False
return True
except Exception:
pass
else:
for a in ["x86_64", "x86_32", "arm64", "arm32"]:
try:
out = subprocess.Popen(
get_mingw_bin_prefix(prefix, a) + test,
shell=True,
stderr=subprocess.PIPE,
stdout=subprocess.PIPE,
)
out.communicate()
if out.returncode == 0:
return True
except Exception:
pass
return False
@ -651,6 +643,10 @@ def configure_mingw(env: "SConsEnvironment"):
if env["use_llvm"] and not try_cmd("clang --version", env["mingw_prefix"], env["arch"]):
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.
if env["target"] == "template_release":
if env["arch"] != "arm64":
@ -763,6 +759,11 @@ def configure_mingw(env: "SConsEnvironment"):
env.Append(CCFLAGS=san_flags)
env.Append(LINKFLAGS=san_flags)
if env["use_llvm"] and os.name == "nt" and methods._colorize:
env.Append(CCFLAGS=["$(-fansi-escape-codes$)", "$(-fcolor-diagnostics$)"])
env.Append(ARFLAGS=["--thin"])
env.Append(CPPDEFINES=["WINDOWS_ENABLED", "WASAPI_ENABLED", "WINMIDI_ENABLED"])
env.Append(
CPPDEFINES=[