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

Unified Diff: pylib/gyp/generator/ninja.py

Issue 10698023: Get ninja working for nacl. (Closed) Base URL: http://gyp.googlecode.com/svn/trunk/
Patch Set: Created 8 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « PRESUBMIT.py ('k') | pylib/gyp/msvs_emulation.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pylib/gyp/generator/ninja.py
===================================================================
--- pylib/gyp/generator/ninja.py (revision 1421)
+++ pylib/gyp/generator/ninja.py (working copy)
@@ -250,7 +250,8 @@
def ExpandRuleVariables(self, path, root, dirname, source, ext, name):
if self.flavor == 'win':
- path = self.msvs_settings.ConvertVSMacros(path)
+ path = self.msvs_settings.ConvertVSMacros(
+ path, config=self.config_name)
path = path.replace(generator_default_variables['RULE_INPUT_ROOT'], root)
path = path.replace(generator_default_variables['RULE_INPUT_DIRNAME'],
dirname)
@@ -345,8 +346,8 @@
if self.flavor == 'win':
self.msvs_settings = gyp.msvs_emulation.MsvsSettings(spec,
generator_flags)
- # TODO(scottmg): x64 support.
- self.ninja.variable('arch', self.win_env['x86'])
+ target_platform = self.msvs_settings.GetTargetPlatform(config_name)
+ self.ninja.variable('arch', self.win_env[target_platform])
# Compute predepends for all rules.
# actions_depends is the dependencies this target depends on before running
@@ -507,7 +508,8 @@
# Actions cd into the base directory.
env = self.GetSortedXcodeEnv()
if self.flavor == 'win':
- env = self.msvs_settings.GetVSMacroEnv('$!PRODUCT_DIR')
+ env = self.msvs_settings.GetVSMacroEnv(
+ '$!PRODUCT_DIR', config=self.config_name)
all_outputs = []
for action in actions:
# First write out a rule for the action.
@@ -519,7 +521,8 @@
is_cygwin = (self.msvs_settings.IsRuleRunUnderCygwin(action)
if self.flavor == 'win' else False)
args = action['action']
- args = [self.msvs_settings.ConvertVSMacros(arg, self.base_to_build)
+ args = [self.msvs_settings.ConvertVSMacros(
+ arg, self.base_to_build, config=self.config_name)
for arg in args] if self.flavor == 'win' else args
rule_name = self.WriteNewNinjaRule(name, args, description,
is_cygwin, env=env)
@@ -557,7 +560,8 @@
('%s ' + generator_default_variables['RULE_INPUT_PATH']) % name)
is_cygwin = (self.msvs_settings.IsRuleRunUnderCygwin(rule)
if self.flavor == 'win' else False)
- args = [self.msvs_settings.ConvertVSMacros(arg, self.base_to_build)
+ args = [self.msvs_settings.ConvertVSMacros(
+ arg, self.base_to_build, config=self.config_name)
for arg in args] if self.flavor == 'win' else args
rule_name = self.WriteNewNinjaRule(name, args, description, is_cygwin)
@@ -750,11 +754,14 @@
if ext in ('cc', 'cpp', 'cxx'):
command = 'cxx'
elif ext == 'c' or (ext in ('s', 'S') and self.flavor != 'win'):
- # TODO(scottmg): .s files won't be handled by the Windows compiler.
- # We could add support for .asm, though that's only supported on
- # x86. Currently not used in Chromium in favor of other third-party
- # assemblers.
command = 'cc'
+ elif (self.flavor == 'win' and ext == 'asm' and
+ self.msvs_settings.GetTargetPlatform(config_name) == 'Win32'):
+ # Asm files only get auto assembled for x86 (not x64).
+ command = 'asm'
+ # Add the _asm suffix as msvs is capable of handling .cc and
+ # .asm files of the same name without collision.
+ obj_ext = '_asm.obj'
elif self.flavor == 'mac' and ext == 'm':
command = 'objc'
elif self.flavor == 'mac' and ext == 'mm':
@@ -1109,7 +1116,8 @@
args = args[:]
if self.flavor == 'win':
- description = self.msvs_settings.ConvertVSMacros(description)
+ description = self.msvs_settings.ConvertVSMacros(
+ description, config=self.config_name)
# gyp dictates that commands are run from the base directory.
# cd into the directory before running, and adjust paths in
@@ -1266,6 +1274,7 @@
master_ninja.variable('idl', 'midl.exe')
master_ninja.variable('ar', 'lib.exe')
master_ninja.variable('rc', 'rc.exe')
+ master_ninja.variable('asm', 'ml.exe')
else:
master_ninja.variable('ld', flock + ' linker.lock $cxx')
master_ninja.variable('ar', os.environ.get('AR', 'ar'))
@@ -1353,6 +1362,12 @@
command=('%s gyp-win-tool rc-wrapper '
'$arch $rc $defines $includes $rcflags /fo$out $in' %
sys.executable))
+ master_ninja.rule(
+ 'asm',
+ description='ASM $in',
+ command=('%s gyp-win-tool asm-wrapper '
+ '$arch $asm $defines $includes /c /Fo $out $in' %
+ sys.executable))
if flavor != 'mac' and flavor != 'win':
master_ninja.rule(
« no previous file with comments | « PRESUBMIT.py ('k') | pylib/gyp/msvs_emulation.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698