diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2024-09-29 00:46:52 +0200 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2024-09-29 00:46:52 +0200 |
commit | d6c0509b5a7f746b06d06b03b1bce10fcd7a047c (patch) | |
tree | 1e6177d3238bef43459b6a792c2585c4a525e5b7 /methods.py | |
parent | 285ebed828286574d6ff9f41ec3d01f09bb40bac (diff) | |
parent | 1043c00137adfe8ef61937f15078ccc448f3437c (diff) | |
download | redot-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.py | 21 |
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 |