summaryrefslogtreecommitdiffstats
path: root/methods.py
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-09-29 00:46:52 +0200
committerRémi Verschelde <rverschelde@gmail.com>2024-09-29 00:46:52 +0200
commitd6c0509b5a7f746b06d06b03b1bce10fcd7a047c (patch)
tree1e6177d3238bef43459b6a792c2585c4a525e5b7 /methods.py
parent285ebed828286574d6ff9f41ec3d01f09bb40bac (diff)
parent1043c00137adfe8ef61937f15078ccc448f3437c (diff)
downloadredot-engine-d6c0509b5a7f746b06d06b03b1bce10fcd7a047c.tar.gz
Merge pull request #91069 from Repiteo/scons/msvc-detect-compiler
SCons: Detect MSVC compiler version
Diffstat (limited to 'methods.py')
-rw-r--r--methods.py21
1 files changed, 17 insertions, 4 deletions
diff --git a/methods.py b/methods.py
index 3f11d39bd0..411ce59d9e 100644
--- a/methods.py
+++ b/methods.py
@@ -795,9 +795,9 @@ def get_compiler_version(env):
"major": -1,
"minor": -1,
"patch": -1,
- "metadata1": None,
- "metadata2": None,
- "date": None,
+ "metadata1": "",
+ "metadata2": "",
+ "date": "",
"apple_major": -1,
"apple_minor": -1,
"apple_patch1": -1,
@@ -806,7 +806,20 @@ def get_compiler_version(env):
}
if env.msvc and not using_clang(env):
- # TODO: Implement for MSVC
+ try:
+ args = [env["VSWHERE"], "-latest", "-products", "*", "-requires", "Microsoft.Component.MSBuild"]
+ version = subprocess.check_output(args, encoding="utf-8").strip()
+ for line in version.splitlines():
+ split = line.split(":", 1)
+ if split[0] == "catalog_productDisplayVersion":
+ sem_ver = split[1].split(".")
+ ret["major"] = int(sem_ver[0])
+ ret["minor"] = int(sem_ver[1])
+ ret["patch"] = int(sem_ver[2])
+ if split[0] == "catalog_buildVersion":
+ ret["metadata1"] = split[1]
+ except (subprocess.CalledProcessError, OSError):
+ print_warning("Couldn't find vswhere to determine compiler version.")
return ret
# Not using -dumpversion as some GCC distros only return major, and