aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/compilers/c.py3
-rwxr-xr-xrun_unittests.py16
2 files changed, 19 insertions, 0 deletions
diff --git a/mesonbuild/compilers/c.py b/mesonbuild/compilers/c.py
index 12f7838..da9a5dc 100644
--- a/mesonbuild/compilers/c.py
+++ b/mesonbuild/compilers/c.py
@@ -1674,6 +1674,9 @@ class VisualStudioCCompiler(CCompiler):
return '14.0' # (Visual Studio 2015)
elif version < 1920:
return '14.1' # (Visual Studio 2017)
+ elif version < 1930:
+ return '14.2' # (Visual Studio 2019)
+ mlog.warning('Could not find toolset for version {!r}'.format(self.version))
return None
def get_default_include_dirs(self):
diff --git a/run_unittests.py b/run_unittests.py
index aa93ee3..b28eab2 100755
--- a/run_unittests.py
+++ b/run_unittests.py
@@ -958,6 +958,22 @@ class InternalTests(unittest.TestCase):
self.assertEqual(ver_a.__cmp__(ver_b), result)
self.assertEqual(ver_b.__cmp__(ver_a), -result)
+ def test_msvc_toolset_version(self):
+ '''
+ Ensure that the toolset version returns the correct value for this MSVC
+ '''
+ env = get_fake_env()
+ cc = env.detect_c_compiler(False)
+ if cc.get_argument_syntax() != 'msvc':
+ raise unittest.SkipTest('Test only applies to MSVC-like compilers')
+ toolset_ver = cc.get_toolset_version()
+ self.assertIsNotNone(toolset_ver)
+ self.assertIn('VCToolsVersion', os.environ)
+ vctools_ver = os.environ['VCToolsVersion']
+ self.assertTrue(vctools_ver.startswith(toolset_ver),
+ msg='{!r} does not start with {!r}'.format(vctools_ver, toolset_ver))
+
+
@unittest.skipIf(is_tarball(), 'Skipping because this is a tarball release')
class DataTests(unittest.TestCase):