Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(193)

Side by Side Diff: pylib/gyp/MSVSVersion.py

Issue 784363003: win: Add support for VS2015 (Closed) Base URL: https://chromium.googlesource.com/external/gyp.git@master
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | pylib/gyp/msvs_emulation.py » ('j') | pylib/gyp/msvs_emulation.py » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2013 Google Inc. All rights reserved. 1 # Copyright (c) 2013 Google Inc. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """Handle version information related to Visual Stuio.""" 5 """Handle version information related to Visual Stuio."""
6 6
7 import errno 7 import errno
8 import os 8 import os
9 import re 9 import re
10 import subprocess 10 import subprocess
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 def _CreateVersion(name, path, sdk_based=False): 218 def _CreateVersion(name, path, sdk_based=False):
219 """Sets up MSVS project generation. 219 """Sets up MSVS project generation.
220 220
221 Setup is based off the GYP_MSVS_VERSION environment variable or whatever is 221 Setup is based off the GYP_MSVS_VERSION environment variable or whatever is
222 autodetected if GYP_MSVS_VERSION is not explicitly specified. If a version is 222 autodetected if GYP_MSVS_VERSION is not explicitly specified. If a version is
223 passed in that doesn't match a value in versions python will throw a error. 223 passed in that doesn't match a value in versions python will throw a error.
224 """ 224 """
225 if path: 225 if path:
226 path = os.path.normpath(path) 226 path = os.path.normpath(path)
227 versions = { 227 versions = {
228 '2015': VisualStudioVersion('2015',
229 'Visual Studio 2015',
230 solution_version='12.00',
231 project_version='14.0',
232 flat_sln=False,
233 uses_vcxproj=True,
234 path=path,
235 sdk_based=sdk_based,
236 default_toolset='v140'),
228 '2013': VisualStudioVersion('2013', 237 '2013': VisualStudioVersion('2013',
229 'Visual Studio 2013', 238 'Visual Studio 2013',
230 solution_version='13.00', 239 solution_version='13.00',
231 project_version='12.0', 240 project_version='12.0',
232 flat_sln=False, 241 flat_sln=False,
233 uses_vcxproj=True, 242 uses_vcxproj=True,
234 path=path, 243 path=path,
235 sdk_based=sdk_based, 244 sdk_based=sdk_based,
236 default_toolset='v120'), 245 default_toolset='v120'),
237 '2013e': VisualStudioVersion('2013e', 246 '2013e': VisualStudioVersion('2013e',
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
327 Returns: 336 Returns:
328 A list of visual studio versions installed in descending order of 337 A list of visual studio versions installed in descending order of
329 usage preference. 338 usage preference.
330 Base this on the registry and a quick check if devenv.exe exists. 339 Base this on the registry and a quick check if devenv.exe exists.
331 Only versions 8-10 are considered. 340 Only versions 8-10 are considered.
332 Possibilities are: 341 Possibilities are:
333 2005(e) - Visual Studio 2005 (8) 342 2005(e) - Visual Studio 2005 (8)
334 2008(e) - Visual Studio 2008 (9) 343 2008(e) - Visual Studio 2008 (9)
335 2010(e) - Visual Studio 2010 (10) 344 2010(e) - Visual Studio 2010 (10)
336 2012(e) - Visual Studio 2012 (11) 345 2012(e) - Visual Studio 2012 (11)
337 2013(e) - Visual Studio 2013 (11) 346 2013(e) - Visual Studio 2013 (12)
347 2015 - Visual Studio 2015 (14)
338 Where (e) is e for express editions of MSVS and blank otherwise. 348 Where (e) is e for express editions of MSVS and blank otherwise.
339 """ 349 """
340 version_to_year = { 350 version_to_year = {
341 '8.0': '2005', 351 '8.0': '2005',
342 '9.0': '2008', 352 '9.0': '2008',
343 '10.0': '2010', 353 '10.0': '2010',
344 '11.0': '2012', 354 '11.0': '2012',
345 '12.0': '2013', 355 '12.0': '2013',
356 '14.0': '2015',
346 } 357 }
347 versions = [] 358 versions = []
348 for version in versions_to_check: 359 for version in versions_to_check:
349 # Old method of searching for which VS version is installed 360 # Old method of searching for which VS version is installed
350 # We don't use the 2010-encouraged-way because we also want to get the 361 # We don't use the 2010-encouraged-way because we also want to get the
351 # path to the binaries, which it doesn't offer. 362 # path to the binaries, which it doesn't offer.
352 keys = [r'HKLM\Software\Microsoft\VisualStudio\%s' % version, 363 keys = [r'HKLM\Software\Microsoft\VisualStudio\%s' % version,
353 r'HKLM\Software\Wow6432Node\Microsoft\VisualStudio\%s' % version, 364 r'HKLM\Software\Wow6432Node\Microsoft\VisualStudio\%s' % version,
354 r'HKLM\Software\Microsoft\VCExpress\%s' % version, 365 r'HKLM\Software\Microsoft\VCExpress\%s' % version,
355 r'HKLM\Software\Wow6432Node\Microsoft\VCExpress\%s' % version] 366 r'HKLM\Software\Wow6432Node\Microsoft\VCExpress\%s' % version]
(...skipping 16 matching lines...) Expand all
372 os.path.join(path, '..', '..'))) 383 os.path.join(path, '..', '..')))
373 384
374 # The old method above does not work when only SDK is installed. 385 # The old method above does not work when only SDK is installed.
375 keys = [r'HKLM\Software\Microsoft\VisualStudio\SxS\VC7', 386 keys = [r'HKLM\Software\Microsoft\VisualStudio\SxS\VC7',
376 r'HKLM\Software\Wow6432Node\Microsoft\VisualStudio\SxS\VC7'] 387 r'HKLM\Software\Wow6432Node\Microsoft\VisualStudio\SxS\VC7']
377 for index in range(len(keys)): 388 for index in range(len(keys)):
378 path = _RegistryGetValue(keys[index], version) 389 path = _RegistryGetValue(keys[index], version)
379 if not path: 390 if not path:
380 continue 391 continue
381 path = _ConvertToCygpath(path) 392 path = _ConvertToCygpath(path)
382 versions.append(_CreateVersion(version_to_year[version] + 'e', 393 if version != '14.0': # There is no Express edition for 2015.
383 os.path.join(path, '..'), sdk_based=True)) 394 versions.append(_CreateVersion(version_to_year[version] + 'e',
395 os.path.join(path, '..'), sdk_based=True))
384 396
385 return versions 397 return versions
386 398
387 399
388 def SelectVisualStudioVersion(version='auto', allow_fallback=True): 400 def SelectVisualStudioVersion(version='auto', allow_fallback=True):
389 """Select which version of Visual Studio projects to generate. 401 """Select which version of Visual Studio projects to generate.
390 402
391 Arguments: 403 Arguments:
392 version: Hook to allow caller to force a particular version (vs auto). 404 version: Hook to allow caller to force a particular version (vs auto).
393 Returns: 405 Returns:
394 An object representing a visual studio project format version. 406 An object representing a visual studio project format version.
395 """ 407 """
396 # In auto mode, check environment variable for override. 408 # In auto mode, check environment variable for override.
397 if version == 'auto': 409 if version == 'auto':
398 version = os.environ.get('GYP_MSVS_VERSION', 'auto') 410 version = os.environ.get('GYP_MSVS_VERSION', 'auto')
399 version_map = { 411 version_map = {
400 'auto': ('12.0', '10.0', '9.0', '8.0', '11.0'), 412 'auto': ('14.0', '12.0', '10.0', '9.0', '8.0', '11.0'),
401 '2005': ('8.0',), 413 '2005': ('8.0',),
402 '2005e': ('8.0',), 414 '2005e': ('8.0',),
403 '2008': ('9.0',), 415 '2008': ('9.0',),
404 '2008e': ('9.0',), 416 '2008e': ('9.0',),
405 '2010': ('10.0',), 417 '2010': ('10.0',),
406 '2010e': ('10.0',), 418 '2010e': ('10.0',),
407 '2012': ('11.0',), 419 '2012': ('11.0',),
408 '2012e': ('11.0',), 420 '2012e': ('11.0',),
409 '2013': ('12.0',), 421 '2013': ('12.0',),
410 '2013e': ('12.0',), 422 '2013e': ('12.0',),
423 '2015': ('14.0',),
411 } 424 }
412 override_path = os.environ.get('GYP_MSVS_OVERRIDE_PATH') 425 override_path = os.environ.get('GYP_MSVS_OVERRIDE_PATH')
413 if override_path: 426 if override_path:
414 msvs_version = os.environ.get('GYP_MSVS_VERSION') 427 msvs_version = os.environ.get('GYP_MSVS_VERSION')
415 if not msvs_version: 428 if not msvs_version:
416 raise ValueError('GYP_MSVS_OVERRIDE_PATH requires GYP_MSVS_VERSION to be ' 429 raise ValueError('GYP_MSVS_OVERRIDE_PATH requires GYP_MSVS_VERSION to be '
417 'set to a particular version (e.g. 2010e).') 430 'set to a particular version (e.g. 2010e).')
418 return _CreateVersion(msvs_version, override_path, sdk_based=True) 431 return _CreateVersion(msvs_version, override_path, sdk_based=True)
419 version = str(version) 432 version = str(version)
420 versions = _DetectVisualStudioVersions(version_map[version], 'e' in version) 433 versions = _DetectVisualStudioVersions(version_map[version], 'e' in version)
421 if not versions: 434 if not versions:
422 if not allow_fallback: 435 if not allow_fallback:
423 raise ValueError('Could not locate Visual Studio installation.') 436 raise ValueError('Could not locate Visual Studio installation.')
424 if version == 'auto': 437 if version == 'auto':
425 # Default to 2005 if we couldn't find anything 438 # Default to 2005 if we couldn't find anything
426 return _CreateVersion('2005', None) 439 return _CreateVersion('2005', None)
427 else: 440 else:
428 return _CreateVersion(version, None) 441 return _CreateVersion(version, None)
429 return versions[0] 442 return versions[0]
OLDNEW
« no previous file with comments | « no previous file | pylib/gyp/msvs_emulation.py » ('j') | pylib/gyp/msvs_emulation.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698