| Index: pylib/gyp/generator/ninja.py
|
| diff --git a/pylib/gyp/generator/ninja.py b/pylib/gyp/generator/ninja.py
|
| index ffb3a8567fa4ee16fdc43777dcd8bb44844fd6e0..e896552a3d1d149e1ce7417df1672d03ec2dd81d 100644
|
| --- a/pylib/gyp/generator/ninja.py
|
| +++ b/pylib/gyp/generator/ninja.py
|
| @@ -559,6 +559,9 @@ class NinjaWriter(object):
|
| if 'sources' in spec and self.flavor == 'win':
|
| outputs += self.WriteWinIdlFiles(spec, prebuild)
|
|
|
| + if self.xcode_settings.IsIosFramework():
|
| + self.WriteiOSFrameworkHeaders(spec, outputs, prebuild)
|
| +
|
| stamp = self.WriteCollapsedDependencies('actions_rules_copies', outputs)
|
|
|
| if self.is_mac_bundle:
|
| @@ -742,7 +745,8 @@ class NinjaWriter(object):
|
|
|
| def WriteCopies(self, copies, prebuild, mac_bundle_depends):
|
| outputs = []
|
| - env = self.GetToolchainEnv()
|
| + extra_env = self.xcode_settings.GetPerTargetSettings()
|
| + env = self.GetToolchainEnv(additional_settings=extra_env)
|
| for copy in copies:
|
| for path in copy['files']:
|
| # Normalize the path so trailing slashes don't confuse us.
|
| @@ -764,6 +768,21 @@ class NinjaWriter(object):
|
|
|
| return outputs
|
|
|
| + def WriteiOSFrameworkHeaders(self, spec, outputs, prebuild):
|
| + """{rebuild steps on hmap generation and header copies in iOS frameworks."""
|
| + framework = self.ComputeMacBundleOutput()
|
| + all_sources = spec['sources']
|
| + copy_headers = spec['mac_framework_headers']
|
| + output = self.GypPathToUniqueOutput('headers.hmap')
|
| + self.xcode_settings.header_map_path = output
|
| + all_headers = map(self.GypPathToNinja,
|
| + filter(lambda x:x.endswith(('.h')), all_sources))
|
| + variables = [('framework', framework),
|
| + ('copy_headers', map(self.GypPathToNinja, copy_headers))]
|
| + outputs.extend(self.ninja.build(
|
| + output, 'compile_ios_framework_headers', all_headers,
|
| + variables=variables, order_only=prebuild))
|
| +
|
| def WriteMacBundleResources(self, resources, bundle_depends):
|
| """Writes ninja edges for 'mac_bundle_resources'."""
|
| xcassets = []
|
| @@ -1338,9 +1357,12 @@ class NinjaWriter(object):
|
| self.AppendPostbuildVariable(variables, spec, output, self.target.binary,
|
| is_command_start=not package_framework)
|
| if package_framework and not is_empty:
|
| - variables.append(('version', self.xcode_settings.GetFrameworkVersion()))
|
| - self.ninja.build(output, 'package_framework', mac_bundle_depends,
|
| - variables=variables)
|
| + if spec['type'] == 'shared_library' and self.xcode_settings.isIOS:
|
| + self.ninja.build(output, 'package_ios_framework', mac_bundle_depends)
|
| + else:
|
| + variables.append(('version', self.xcode_settings.GetFrameworkVersion()))
|
| + self.ninja.build(output, 'package_framework', mac_bundle_depends,
|
| + variables=variables)
|
| else:
|
| self.ninja.build(output, 'stamp', mac_bundle_depends,
|
| variables=variables)
|
| @@ -2242,6 +2264,12 @@ def GenerateOutputForConfig(target_list, target_dicts, data, params,
|
| description='COMPILE XCASSETS $in',
|
| command='$env ./gyp-mac-tool compile-xcassets $keys $in')
|
| master_ninja.rule(
|
| + 'compile_ios_framework_headers',
|
| + description='COMPILE HEADER MAPS AND COPY FRAMEWORK HEADER $in',
|
| + command='$env ./gyp-mac-tool compile-ios-framework-header-map $out '
|
| + '$framework $in && $env ./gyp-mac-tool '
|
| + 'copy-ios-framework-headers $framework $copy_headers')
|
| + master_ninja.rule(
|
| 'mac_tool',
|
| description='MACTOOL $mactool_cmd $in',
|
| command='$env ./gyp-mac-tool $mactool_cmd $in $out $binary')
|
| @@ -2250,6 +2278,11 @@ def GenerateOutputForConfig(target_list, target_dicts, data, params,
|
| description='PACKAGE FRAMEWORK $out, POSTBUILDS',
|
| command='./gyp-mac-tool package-framework $out $version$postbuilds '
|
| '&& touch $out')
|
| + master_ninja.rule(
|
| + 'package_ios_framework',
|
| + description='PACKAGE IOS FRAMEWORK $out, POSTBUILDS',
|
| + command='./gyp-mac-tool package-ios-framework $out $postbuilds '
|
| + '&& touch $out')
|
| if flavor == 'win':
|
| master_ninja.rule(
|
| 'stamp',
|
|
|