Index: pylib/gyp/generator/ninja.py |
diff --git a/pylib/gyp/generator/ninja.py b/pylib/gyp/generator/ninja.py |
index f31068a9bf44a89b1c83e61afccc01d284e06fc8..6200ae5238cc92d9385581c79c83e37525564c5d 100644 |
--- a/pylib/gyp/generator/ninja.py |
+++ b/pylib/gyp/generator/ninja.py |
@@ -25,6 +25,8 @@ import gyp.ninja_syntax as ninja_syntax |
generator_default_variables = { |
'EXECUTABLE_PREFIX': '', |
'EXECUTABLE_SUFFIX': '', |
+ 'EXTENSION_PREFIX': '', |
+ 'EXTENSION_SUFFIX': '', |
'STATIC_LIB_PREFIX': 'lib', |
'STATIC_LIB_SUFFIX': '.a', |
'SHARED_LIB_PREFIX': 'lib', |
@@ -997,6 +999,7 @@ class NinjaWriter: |
"""Write out a link step. Fills out target.binary. """ |
command = { |
'executable': 'link', |
+ 'extension': 'link', |
'loadable_module': 'solink_module', |
'shared_library': 'solink', |
}[spec['type']] |
@@ -1046,7 +1049,8 @@ class NinjaWriter: |
if arch is None and not self.is_mac_bundle: |
self.AppendPostbuildVariable(extra_bindings, spec, output, output) |
- is_executable = spec['type'] == 'executable' |
+ is_executable = (spec['type'] == 'executable' or |
+ spec['type'] == 'extension') |
# The ldflags config key is not used on mac or win. On those platforms |
# linker flags are set via xcode_settings and msvs_settings, respectively. |
env_ldflags = os.environ.get('LDFLAGS', '').split() |
@@ -1340,6 +1344,7 @@ class NinjaWriter: |
'shared_library': default_variables['SHARED_LIB_PREFIX'], |
'static_library': default_variables['STATIC_LIB_PREFIX'], |
'executable': default_variables['EXECUTABLE_PREFIX'], |
+ 'extension': default_variables['EXTENSION_PREFIX'], |
} |
prefix = spec.get('product_prefix', DEFAULT_PREFIX.get(type, '')) |
@@ -1350,6 +1355,7 @@ class NinjaWriter: |
'shared_library': default_variables['SHARED_LIB_SUFFIX'], |
'static_library': default_variables['STATIC_LIB_SUFFIX'], |
'executable': default_variables['EXECUTABLE_SUFFIX'], |
+ 'extension': default_variables['EXTENSION_SUFFIX'], |
} |
extension = spec.get('product_extension') |
if extension: |
@@ -1368,7 +1374,7 @@ class NinjaWriter: |
target = StripPrefix(target, 'lib') |
if type in ('static_library', 'loadable_module', 'shared_library', |
- 'executable'): |
+ 'executable', 'extension'): |
return '%s%s%s' % (prefix, target, extension) |
elif type == 'none': |
return '%s.stamp' % target |
@@ -1386,7 +1392,11 @@ class NinjaWriter: |
return override |
if arch is None and self.flavor == 'mac' and type in ( |
- 'static_library', 'executable', 'shared_library', 'loadable_module'): |
+ 'static_library', |
+ 'executable', |
+ 'extension', |
+ 'shared_library', |
+ 'loadable_module'): |
filename = self.xcode_settings.GetExecutablePath() |
else: |
filename = self.ComputeOutputFileName(spec, type) |
@@ -1397,7 +1407,7 @@ class NinjaWriter: |
# 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', 'extension', 'loadable_module'] |
if self.flavor == 'mac' and self.toolset == 'target': |
type_in_output_root += ['shared_library', 'static_library'] |
elif self.flavor == 'win' and self.toolset == 'target': |