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

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

Issue 126443004: win ninja: include .pdb in linker outputs (Closed) Base URL: http://gyp.googlecode.com/svn/trunk
Patch Set: update comment Created 6 years, 11 months 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 | Annotate | Revision Log
« no previous file with comments | « pylib/gyp/generator/ninja.py ('k') | test/win/gyptest-link-pdb.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2012 Google Inc. All rights reserved. 1 # Copyright (c) 2012 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 """ 5 """
6 This module helps emulate Visual Studio 2008 behavior on top of other 6 This module helps emulate Visual Studio 2008 behavior on top of other
7 build systems, primarily ninja. 7 build systems, primarily ninja.
8 """ 8 """
9 9
10 import os 10 import os
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 config = self._TargetConfig(config) 310 config = self._TargetConfig(config)
311 type = self.spec['type'] 311 type = self.spec['type']
312 root = 'VCLibrarianTool' if type == 'static_library' else 'VCLinkerTool' 312 root = 'VCLibrarianTool' if type == 'static_library' else 'VCLinkerTool'
313 # TODO(scottmg): Handle OutputDirectory without OutputFile. 313 # TODO(scottmg): Handle OutputDirectory without OutputFile.
314 output_file = self._Setting((root, 'OutputFile'), config) 314 output_file = self._Setting((root, 'OutputFile'), config)
315 if output_file: 315 if output_file:
316 output_file = expand_special(self.ConvertVSMacros( 316 output_file = expand_special(self.ConvertVSMacros(
317 output_file, config=config)) 317 output_file, config=config))
318 return output_file 318 return output_file
319 319
320 def GetPDBName(self, config, expand_special): 320 def GetPDBName(self, config, expand_special, default):
321 """Gets the explicitly overridden pdb name for a target or returns None 321 """Gets the explicitly overridden pdb name for a target or returns
322 if it's not overridden.""" 322 default if it's not overridden, or if no pdb will be generated."""
323 config = self._TargetConfig(config) 323 config = self._TargetConfig(config)
324 output_file = self._Setting(('VCLinkerTool', 'ProgramDatabaseFile'), config) 324 output_file = self._Setting(('VCLinkerTool', 'ProgramDatabaseFile'), config)
325 if output_file: 325 generate_debug_info = self._Setting(
326 output_file = expand_special(self.ConvertVSMacros( 326 ('VCLinkerTool', 'GenerateDebugInformation'), config)
327 output_file, config=config)) 327 if generate_debug_info:
328 return output_file 328 if output_file:
329 return expand_special(self.ConvertVSMacros(output_file, config=config))
330 else:
331 return default
332 else:
333 return None
329 334
330 def GetCflags(self, config): 335 def GetCflags(self, config):
331 """Returns the flags that need to be added to .c and .cc compilations.""" 336 """Returns the flags that need to be added to .c and .cc compilations."""
332 config = self._TargetConfig(config) 337 config = self._TargetConfig(config)
333 cflags = [] 338 cflags = []
334 cflags.extend(['/wd' + w for w in self.msvs_disabled_warnings[config]]) 339 cflags.extend(['/wd' + w for w in self.msvs_disabled_warnings[config]])
335 cl = self._GetWrapper(self, self.msvs_settings[config], 340 cl = self._GetWrapper(self, self.msvs_settings[config],
336 'VCCLCompilerTool', append=cflags) 341 'VCCLCompilerTool', append=cflags)
337 cl('Optimization', 342 cl('Optimization',
338 map={'0': 'd', '1': '1', '2': '2', '3': 'x'}, prefix='/O', default='2') 343 map={'0': 'd', '1': '1', '2': '2', '3': 'x'}, prefix='/O', default='2')
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
447 if it's not overridden.""" 452 if it's not overridden."""
448 config = self._TargetConfig(config) 453 config = self._TargetConfig(config)
449 output_file = self._Setting( 454 output_file = self._Setting(
450 ('VCLinkerTool', 'ProfileGuidedDatabase'), config) 455 ('VCLinkerTool', 'ProfileGuidedDatabase'), config)
451 if output_file: 456 if output_file:
452 output_file = expand_special(self.ConvertVSMacros( 457 output_file = expand_special(self.ConvertVSMacros(
453 output_file, config=config)) 458 output_file, config=config))
454 return output_file 459 return output_file
455 460
456 def GetLdflags(self, config, gyp_to_build_path, expand_special, 461 def GetLdflags(self, config, gyp_to_build_path, expand_special,
457 manifest_base_name, is_executable, build_dir): 462 manifest_base_name, output_name, is_executable, build_dir):
458 """Returns the flags that need to be added to link commands, and the 463 """Returns the flags that need to be added to link commands, and the
459 manifest files.""" 464 manifest files."""
460 config = self._TargetConfig(config) 465 config = self._TargetConfig(config)
461 ldflags = [] 466 ldflags = []
462 ld = self._GetWrapper(self, self.msvs_settings[config], 467 ld = self._GetWrapper(self, self.msvs_settings[config],
463 'VCLinkerTool', append=ldflags) 468 'VCLinkerTool', append=ldflags)
464 self._GetDefFileAsLdflags(ldflags, gyp_to_build_path) 469 self._GetDefFileAsLdflags(ldflags, gyp_to_build_path)
465 ld('GenerateDebugInformation', map={'true': '/DEBUG'}) 470 ld('GenerateDebugInformation', map={'true': '/DEBUG'})
466 ld('TargetMachine', map={'1': 'X86', '17': 'X64'}, prefix='/MACHINE:') 471 ld('TargetMachine', map={'1': 'X86', '17': 'X64'}, prefix='/MACHINE:')
467 ldflags.extend(self._GetAdditionalLibraryDirectories( 472 ldflags.extend(self._GetAdditionalLibraryDirectories(
468 'VCLinkerTool', config, gyp_to_build_path)) 473 'VCLinkerTool', config, gyp_to_build_path))
469 ld('DelayLoadDLLs', prefix='/DELAYLOAD:') 474 ld('DelayLoadDLLs', prefix='/DELAYLOAD:')
470 ld('TreatLinkerWarningAsErrors', prefix='/WX', 475 ld('TreatLinkerWarningAsErrors', prefix='/WX',
471 map={'true': '', 'false': ':NO'}) 476 map={'true': '', 'false': ':NO'})
472 out = self.GetOutputName(config, expand_special) 477 out = self.GetOutputName(config, expand_special)
473 if out: 478 if out:
474 ldflags.append('/OUT:' + out) 479 ldflags.append('/OUT:' + out)
475 pdb = self.GetPDBName(config, expand_special) 480 pdb = self.GetPDBName(config, expand_special, output_name + '.pdb')
476 if pdb: 481 if pdb:
477 ldflags.append('/PDB:' + pdb) 482 ldflags.append('/PDB:' + pdb)
478 pgd = self.GetPGDName(config, expand_special) 483 pgd = self.GetPGDName(config, expand_special)
479 if pgd: 484 if pgd:
480 ldflags.append('/PGD:' + pgd) 485 ldflags.append('/PGD:' + pgd)
481 map_file = self.GetMapFileName(config, expand_special) 486 map_file = self.GetMapFileName(config, expand_special)
482 ld('GenerateMapFile', map={'true': '/MAP:' + map_file if map_file 487 ld('GenerateMapFile', map={'true': '/MAP:' + map_file if map_file
483 else '/MAP'}) 488 else '/MAP'})
484 ld('MapExports', map={'true': '/MAPINFO:EXPORTS'}) 489 ld('MapExports', map={'true': '/MAPINFO:EXPORTS'})
485 ld('AdditionalOptions', prefix='') 490 ld('AdditionalOptions', prefix='')
(...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after
945 950
946 # To determine processor word size on Windows, in addition to checking 951 # To determine processor word size on Windows, in addition to checking
947 # PROCESSOR_ARCHITECTURE (which reflects the word size of the current 952 # PROCESSOR_ARCHITECTURE (which reflects the word size of the current
948 # process), it is also necessary to check PROCESSOR_ARCHITEW6432 (which 953 # process), it is also necessary to check PROCESSOR_ARCHITEW6432 (which
949 # contains the actual word size of the system when running thru WOW64). 954 # contains the actual word size of the system when running thru WOW64).
950 if ('64' in os.environ.get('PROCESSOR_ARCHITECTURE', '') or 955 if ('64' in os.environ.get('PROCESSOR_ARCHITECTURE', '') or
951 '64' in os.environ.get('PROCESSOR_ARCHITEW6432', '')): 956 '64' in os.environ.get('PROCESSOR_ARCHITEW6432', '')):
952 default_variables['MSVS_OS_BITS'] = 64 957 default_variables['MSVS_OS_BITS'] = 64
953 else: 958 else:
954 default_variables['MSVS_OS_BITS'] = 32 959 default_variables['MSVS_OS_BITS'] = 32
OLDNEW
« no previous file with comments | « pylib/gyp/generator/ninja.py ('k') | test/win/gyptest-link-pdb.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698