Index: pylib/gyp/generator/ninja.py |
=================================================================== |
--- pylib/gyp/generator/ninja.py (revision 1508) |
+++ pylib/gyp/generator/ninja.py (working copy) |
@@ -160,7 +160,8 @@ |
def Linkable(self): |
"""Return true if this is a target that can be linked against.""" |
- return self.type in ('static_library', 'shared_library') |
+ return self.type in ('static_library', 'shared_library', |
+ 'standalone_static_library') |
def UsesToc(self, flavor): |
"""Return true if the target should produce a restat rule based on a TOC |
@@ -434,7 +435,8 @@ |
link_deps += [self.GypPathToNinja(f) |
for f in sources if f.endswith(self.obj_ext)] |
- if self.flavor == 'win' and self.target.type == 'static_library': |
+ if self.flavor == 'win' and self.target.type in ('static_library', |
+ 'standalone_static_library'): |
self.target.component_objs = link_deps |
# Write out a link step, if needed. |
@@ -954,6 +956,23 @@ |
self.xcode_settings.GetLibtoolflags(config_name))) |
self.ninja.build(self.target.binary, 'alink', link_deps, |
order_only=compile_deps, variables=variables) |
+ elif spec['type'] == 'standalone_static_library': |
+ self.target.binary = self.ComputeOutput(spec) |
+ variables = [] |
+ postbuild = self.GetPostbuildCommand( |
+ spec, self.target.binary, self.target.binary) |
+ if postbuild: |
+ variables.append(('postbuilds', postbuild)) |
+ if self.xcode_settings: |
+ variables.append(('libtool_flags', |
+ self.xcode_settings.GetLibtoolflags(config_name))) |
+ if self.flavor != 'mac' and self.flavor != 'win': |
+ self.ninja.rule( |
+ 'alink', |
+ description='AR $out', |
+ command='rm -f $out && $ar rcs $out $in') |
+ self.ninja.build(self.target.binary, 'alink', link_deps, |
+ order_only=compile_deps, variables=variables) |
else: |
self.WriteLink(spec, config_name, config, link_deps) |
return self.target.binary |
@@ -1070,6 +1089,7 @@ |
'loadable_module': default_variables['SHARED_LIB_PREFIX'], |
'shared_library': default_variables['SHARED_LIB_PREFIX'], |
'static_library': default_variables['STATIC_LIB_PREFIX'], |
+ 'standalone_static_library': default_variables['STATIC_LIB_PREFIX'], |
'executable': default_variables['EXECUTABLE_PREFIX'], |
} |
prefix = spec.get('product_prefix', DEFAULT_PREFIX.get(type, '')) |
@@ -1080,6 +1100,7 @@ |
'loadable_module': default_variables['SHARED_LIB_SUFFIX'], |
'shared_library': default_variables['SHARED_LIB_SUFFIX'], |
'static_library': default_variables['STATIC_LIB_SUFFIX'], |
+ 'standalone_static_library': default_variables['STATIC_LIB_SUFFIX'], |
'executable': default_variables['EXECUTABLE_SUFFIX'], |
} |
extension = spec.get('product_extension') |
@@ -1098,8 +1119,8 @@ |
# Snip out an extra 'lib' from libs if appropriate. |
target = StripPrefix(target, 'lib') |
- if type in ('static_library', 'loadable_module', 'shared_library', |
- 'executable'): |
+ if type in ('executable', 'loadable_module', 'shared_library', |
+ 'static_library', 'standalone_static_library'): |
return '%s%s%s' % (prefix, target, extension) |
elif type == 'none': |
return '%s.stamp' % target |
@@ -1120,7 +1141,8 @@ |
return override |
if self.flavor == 'mac' and type in ( |
- 'static_library', 'executable', 'shared_library', 'loadable_module'): |
+ 'executable', 'loadable_module', 'shared_library', 'static_library', |
+ 'standalone_static_library'): |
filename = self.xcode_settings.GetExecutablePath() |
else: |
filename = self.ComputeOutputFileName(spec, type) |
@@ -1131,7 +1153,8 @@ |
# Some products go into the output root, libraries go into shared library |
# dir, and everything else goes into the normal place. |
- type_in_output_root = ['executable', 'loadable_module'] |
+ type_in_output_root = ['executable', 'loadable_module', |
+ 'standalone_static_library'] |
if self.flavor == 'mac' and self.toolset == 'target': |
type_in_output_root += ['shared_library', 'static_library'] |
elif self.flavor == 'win' and self.toolset == 'target': |