Chromium Code Reviews| Index: pylib/gyp/generator/ninja.py |
| diff --git a/pylib/gyp/generator/ninja.py b/pylib/gyp/generator/ninja.py |
| index e5ae14b78f5e13573547bbb22fe942de7af57494..b4a9cc167408e3810d42ec4a0a7397c64bb5246a 100644 |
| --- a/pylib/gyp/generator/ninja.py |
| +++ b/pylib/gyp/generator/ninja.py |
| @@ -561,6 +561,9 @@ class NinjaWriter(object): |
| if 'sources' in spec and self.flavor == 'win': |
| outputs += self.WriteWinIdlFiles(spec, prebuild) |
| + if self.xcode_settings and self.xcode_settings.IsIosFramework(): |
| + self.WriteiOSFrameworkHeaders(spec, outputs, prebuild) |
| + |
| stamp = self.WriteCollapsedDependencies('actions_rules_copies', outputs) |
| if self.is_mac_bundle: |
| @@ -744,7 +747,11 @@ class NinjaWriter(object): |
| def WriteCopies(self, copies, prebuild, mac_bundle_depends): |
| outputs = [] |
| - env = self.GetToolchainEnv() |
| + if self.xcode_settings: |
| + extra_env = self.xcode_settings.GetPerTargetSettings() |
| + env = self.GetToolchainEnv(additional_settings=extra_env) |
| + else: |
| + env = self.GetToolchainEnv() |
| for copy in copies: |
| for path in copy['files']: |
| # Normalize the path so trailing slashes don't confuse us. |
| @@ -766,6 +773,21 @@ class NinjaWriter(object): |
| return outputs |
| + def WriteiOSFrameworkHeaders(self, spec, outputs, prebuild): |
| + """Prebuild steps to generate hmap files and copy headers to destination.""" |
| + framework = self.ComputeMacBundleOutput() |
| + all_sources = spec['sources'] |
| + copy_headers = spec['mac_framework_headers'] |
|
Nico
2016/03/31 16:17:03
I guess this and the thing above need to be .get()
|
| + 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 = [] |
| @@ -1342,9 +1364,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) |
| @@ -2246,6 +2271,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 HEADERS $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') |
| @@ -2254,6 +2285,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', |