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

Side by Side Diff: pylib/gyp/generator/ninja.py

Issue 11363143: ninja windows: Support x64 configuration platform (Closed) Base URL: http://gyp.googlecode.com/svn/trunk/
Patch Set: allow rule override of asm on windows + test Created 8 years, 1 month 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 | « no previous file | pylib/gyp/msvs_emulation.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 import copy 5 import copy
6 import hashlib 6 import hashlib
7 import multiprocessing 7 import multiprocessing
8 import os.path 8 import os.path
9 import re 9 import re
10 import signal 10 import signal
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after
371 self.is_standalone_static_library = bool( 371 self.is_standalone_static_library = bool(
372 spec.get('standalone_static_library', 0)) 372 spec.get('standalone_static_library', 0))
373 373
374 self.is_mac_bundle = gyp.xcode_emulation.IsMacBundle(self.flavor, spec) 374 self.is_mac_bundle = gyp.xcode_emulation.IsMacBundle(self.flavor, spec)
375 self.xcode_settings = self.msvs_settings = None 375 self.xcode_settings = self.msvs_settings = None
376 if self.flavor == 'mac': 376 if self.flavor == 'mac':
377 self.xcode_settings = gyp.xcode_emulation.XcodeSettings(spec) 377 self.xcode_settings = gyp.xcode_emulation.XcodeSettings(spec)
378 if self.flavor == 'win': 378 if self.flavor == 'win':
379 self.msvs_settings = gyp.msvs_emulation.MsvsSettings(spec, 379 self.msvs_settings = gyp.msvs_emulation.MsvsSettings(spec,
380 generator_flags) 380 generator_flags)
381 target_platform = self.msvs_settings.GetTargetPlatform(config_name) 381 arch = self.msvs_settings.GetArch(config_name)
382 self.ninja.variable('arch', self.win_env[target_platform]) 382 self.ninja.variable('arch', self.win_env[arch])
383 383
384 # Compute predepends for all rules. 384 # Compute predepends for all rules.
385 # actions_depends is the dependencies this target depends on before running 385 # actions_depends is the dependencies this target depends on before running
386 # any of its action/rule/copy steps. 386 # any of its action/rule/copy steps.
387 # compile_depends is the dependencies this target depends on before running 387 # compile_depends is the dependencies this target depends on before running
388 # any of its compile steps. 388 # any of its compile steps.
389 actions_depends = [] 389 actions_depends = []
390 compile_depends = [] 390 compile_depends = []
391 # TODO(evan): it is rather confusing which things are lists and which 391 # TODO(evan): it is rather confusing which things are lists and which
392 # are strings. Fix these. 392 # are strings. Fix these.
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 gyp.msvs_emulation.VerifyMissingSources( 428 gyp.msvs_emulation.VerifyMissingSources(
429 sources, self.abs_build_dir, generator_flags, self.GypPathToNinja) 429 sources, self.abs_build_dir, generator_flags, self.GypPathToNinja)
430 pch = gyp.msvs_emulation.PrecompiledHeader( 430 pch = gyp.msvs_emulation.PrecompiledHeader(
431 self.msvs_settings, config_name, self.GypPathToNinja) 431 self.msvs_settings, config_name, self.GypPathToNinja)
432 else: 432 else:
433 pch = gyp.xcode_emulation.MacPrefixHeader( 433 pch = gyp.xcode_emulation.MacPrefixHeader(
434 self.xcode_settings, self.GypPathToNinja, 434 self.xcode_settings, self.GypPathToNinja,
435 lambda path, lang: self.GypPathToUniqueOutput(path + '-' + lang)) 435 lambda path, lang: self.GypPathToUniqueOutput(path + '-' + lang))
436 link_deps = self.WriteSources( 436 link_deps = self.WriteSources(
437 config_name, config, sources, compile_depends_stamp, pch, 437 config_name, config, sources, compile_depends_stamp, pch,
438 case_sensitive_filesystem) 438 case_sensitive_filesystem, spec)
439 # Some actions/rules output 'sources' that are already object files. 439 # Some actions/rules output 'sources' that are already object files.
440 link_deps += [self.GypPathToNinja(f) 440 link_deps += [self.GypPathToNinja(f)
441 for f in sources if f.endswith(self.obj_ext)] 441 for f in sources if f.endswith(self.obj_ext)]
442 442
443 if self.flavor == 'win' and self.target.type == 'static_library': 443 if self.flavor == 'win' and self.target.type == 'static_library':
444 self.target.component_objs = link_deps 444 self.target.component_objs = link_deps
445 445
446 # Write out a link step, if needed. 446 # Write out a link step, if needed.
447 output = None 447 output = None
448 if link_deps or self.target.actions_stamp or actions_depends: 448 if link_deps or self.target.actions_stamp or actions_depends:
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
714 714
715 env = self.GetSortedXcodeEnv(additional_settings=extra_env) 715 env = self.GetSortedXcodeEnv(additional_settings=extra_env)
716 env = self.ComputeExportEnvString(env) 716 env = self.ComputeExportEnvString(env)
717 717
718 self.ninja.build(out, 'mac_tool', info_plist, 718 self.ninja.build(out, 'mac_tool', info_plist,
719 variables=[('mactool_cmd', 'copy-info-plist'), 719 variables=[('mactool_cmd', 'copy-info-plist'),
720 ('env', env)]) 720 ('env', env)])
721 bundle_depends.append(out) 721 bundle_depends.append(out)
722 722
723 def WriteSources(self, config_name, config, sources, predepends, 723 def WriteSources(self, config_name, config, sources, predepends,
724 precompiled_header, case_sensitive_filesystem): 724 precompiled_header, case_sensitive_filesystem, spec):
725 """Write build rules to compile all of |sources|.""" 725 """Write build rules to compile all of |sources|."""
726 if self.toolset == 'host': 726 if self.toolset == 'host':
727 self.ninja.variable('ar', '$ar_host') 727 self.ninja.variable('ar', '$ar_host')
728 self.ninja.variable('cc', '$cc_host') 728 self.ninja.variable('cc', '$cc_host')
729 self.ninja.variable('cxx', '$cxx_host') 729 self.ninja.variable('cxx', '$cxx_host')
730 self.ninja.variable('ld', '$ld_host') 730 self.ninja.variable('ld', '$ld_host')
731 731
732 extra_defines = [] 732 extra_defines = []
733 if self.flavor == 'mac': 733 if self.flavor == 'mac':
734 cflags = self.xcode_settings.GetCflags(config_name) 734 cflags = self.xcode_settings.GetCflags(config_name)
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
791 filename, ext = os.path.splitext(source) 791 filename, ext = os.path.splitext(source)
792 ext = ext[1:] 792 ext = ext[1:]
793 obj_ext = self.obj_ext 793 obj_ext = self.obj_ext
794 if ext in ('cc', 'cpp', 'cxx'): 794 if ext in ('cc', 'cpp', 'cxx'):
795 command = 'cxx' 795 command = 'cxx'
796 elif ext == 'c' or (ext == 'S' and self.flavor != 'win'): 796 elif ext == 'c' or (ext == 'S' and self.flavor != 'win'):
797 command = 'cc' 797 command = 'cc'
798 elif ext == 's' and self.flavor != 'win': # Doesn't generate .o.d files. 798 elif ext == 's' and self.flavor != 'win': # Doesn't generate .o.d files.
799 command = 'cc_s' 799 command = 'cc_s'
800 elif (self.flavor == 'win' and ext == 'asm' and 800 elif (self.flavor == 'win' and ext == 'asm' and
801 self.msvs_settings.GetTargetPlatform(config_name) == 'Win32'): 801 self.msvs_settings.GetArch(config_name) == 'x86' and
802 not self.msvs_settings.HasExplicitAsmRules(spec)):
802 # Asm files only get auto assembled for x86 (not x64). 803 # Asm files only get auto assembled for x86 (not x64).
803 command = 'asm' 804 command = 'asm'
804 # Add the _asm suffix as msvs is capable of handling .cc and 805 # Add the _asm suffix as msvs is capable of handling .cc and
805 # .asm files of the same name without collision. 806 # .asm files of the same name without collision.
806 obj_ext = '_asm.obj' 807 obj_ext = '_asm.obj'
807 elif self.flavor == 'mac' and ext == 'm': 808 elif self.flavor == 'mac' and ext == 'm':
808 command = 'objc' 809 command = 'objc'
809 elif self.flavor == 'mac' and ext == 'mm': 810 elif self.flavor == 'mac' and ext == 'mm':
810 command = 'objcxx' 811 command = 'objcxx'
811 elif self.flavor == 'win' and ext == 'rc': 812 elif self.flavor == 'win' and ext == 'rc':
(...skipping 977 matching lines...) Expand 10 before | Expand all | Expand 10 after
1789 arglists.append( 1790 arglists.append(
1790 (target_list, target_dicts, data, params, config_name)) 1791 (target_list, target_dicts, data, params, config_name))
1791 pool.map(CallGenerateOutputForConfig, arglists) 1792 pool.map(CallGenerateOutputForConfig, arglists)
1792 except KeyboardInterrupt, e: 1793 except KeyboardInterrupt, e:
1793 pool.terminate() 1794 pool.terminate()
1794 raise e 1795 raise e
1795 else: 1796 else:
1796 for config_name in config_names: 1797 for config_name in config_names:
1797 GenerateOutputForConfig(target_list, target_dicts, data, params, 1798 GenerateOutputForConfig(target_list, target_dicts, data, params,
1798 config_name) 1799 config_name)
OLDNEW
« no previous file with comments | « no previous file | pylib/gyp/msvs_emulation.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698