Fix generation for ninja of multiarch executable targets
Chromium includes some targets that should only be compiled on
specific platform and end up with an empty 'sources' list. This
works when generating for a single architecture, but fails with
the following callstack when building for multiarch:
Traceback (most recent call last):
File "./gyp/gyp_main.py", line 18, in <module>
sys.exit(gyp.script_main())
File "./gyp/pylib/gyp/__init__.py", line 534, in script_main
return main(sys.argv[1:])
File "./gyp/pylib/gyp/__init__.py", line 527, in main
return gyp_main(args)
File "./gyp/pylib/gyp/__init__.py", line 512, in gyp_main
generator.GenerateOutput(flat_list, targets, data, params)
File "./gyp/pylib/gyp/generator/ninja.py", line 2160, in GenerateOutput
config_name)
File "./gyp/pylib/gyp/generator/ninja.py", line 2078, in GenerateOutputForConfig
target = writer.WriteSpec(spec, config_name, generator_flags)
File "./gyp/pylib/gyp/generator/ninja.py", line 488, in WriteSpec
self.target.actions_stamp or actions_depends)
File "./gyp/pylib/gyp/generator/ninja.py", line 1180, in WriteTarget
self.target.binary = self.WriteLink(spec, config_name, config, link_deps)
File "./gyp/pylib/gyp/generator/ninja.py", line 972, in WriteLink
for arch in self.archs]
TypeError: list indices must be integers, not str
This is because |link_deps| must be a dictionary keying |arch| to
a list of link dependencies when building for multiarch, but if
'sources' is empty, |link_deps| keep its default value (empty list).
BUG=314720
R=justincohen@chromium.org, mark@chromium.org, justincohen, mark
Review URL: https://codereview.chromium.org/157583011
git-svn-id: http://gyp.googlecode.com/svn/trunk@1852 78cadc50-ecff-11dd-a971-7dbc132099af
3 files changed