| Index: pylib/gyp/generator/ninja.py
|
| diff --git a/pylib/gyp/generator/ninja.py b/pylib/gyp/generator/ninja.py
|
| index 4eafb71c198dd9fb728178350c1e49868e2b4438..3336a896ca1da794bf9321b638589fef2d8f2946 100644
|
| --- a/pylib/gyp/generator/ninja.py
|
| +++ b/pylib/gyp/generator/ninja.py
|
| @@ -805,6 +805,8 @@ class NinjaWriter:
|
| self.ninja.variable('cxx', '$cxx_host')
|
| self.ninja.variable('ld', '$ld_host')
|
| self.ninja.variable('ldxx', '$ldxx_host')
|
| + self.ninja.variable('nm', '$nm_host')
|
| + self.ninja.variable('readelf', '$readelf_host')
|
|
|
| if self.flavor != 'mac' or len(self.archs) == 1:
|
| return self.WriteSourcesForArch(
|
| @@ -1742,6 +1744,10 @@ def GenerateOutputForConfig(target_list, target_dicts, data, params,
|
| cc_host_global_setting = None
|
| cxx_host_global_setting = None
|
| clang_cl = None
|
| + nm = 'nm'
|
| + nm_host = 'nm'
|
| + readelf = 'readelf'
|
| + readelf_host = 'readelf'
|
|
|
| build_file, _, _ = gyp.common.ParseQualifiedTarget(target_list[0])
|
| make_global_settings = data[build_file].get('make_global_settings', [])
|
| @@ -1769,6 +1775,14 @@ def GenerateOutputForConfig(target_list, target_dicts, data, params,
|
| ld = os.path.join(build_to_root, value)
|
| if key == 'LD.host':
|
| ld_host = os.path.join(build_to_root, value)
|
| + if key == 'NM':
|
| + nm = os.path.join(build_to_root, value)
|
| + if key == 'NM.host':
|
| + nm_host = os.path.join(build_to_root, value)
|
| + if key == 'READELF':
|
| + readelf = os.path.join(build_to_root, value)
|
| + if key == 'READELF.host':
|
| + readelf_host = os.path.join(build_to_root, value)
|
| if key.endswith('_wrapper'):
|
| wrappers[key[:-len('_wrapper')]] = os.path.join(build_to_root, value)
|
|
|
| @@ -1816,6 +1830,13 @@ def GenerateOutputForConfig(target_list, target_dicts, data, params,
|
| master_ninja.variable('ld', CommandWithWrapper('LINK', wrappers, ld))
|
| master_ninja.variable('ldxx', CommandWithWrapper('LINK', wrappers, ldxx))
|
| master_ninja.variable('ar', GetEnvironFallback(['AR_target', 'AR'], ar))
|
| + if flavor != 'mac':
|
| + # Mac does not use readelf/nm for .TOC generation, so avoiding polluting
|
| + # the master ninja with extra unused variables.
|
| + master_ninja.variable(
|
| + 'nm', GetEnvironFallback(['NM_target', 'NM'], nm))
|
| + master_ninja.variable(
|
| + 'readelf', GetEnvironFallback(['READELF_target', 'READELF'], readelf))
|
|
|
| if generator_supports_multiple_toolsets:
|
| if not cc_host:
|
| @@ -1824,6 +1845,9 @@ def GenerateOutputForConfig(target_list, target_dicts, data, params,
|
| cxx_host = cxx
|
|
|
| master_ninja.variable('ar_host', GetEnvironFallback(['AR_host'], ar_host))
|
| + master_ninja.variable('nm_host', GetEnvironFallback(['NM_host'], nm_host))
|
| + master_ninja.variable('readelf_host',
|
| + GetEnvironFallback(['READELF_host'], readelf_host))
|
| cc_host = GetEnvironFallback(['CC_host'], cc_host)
|
| cxx_host = GetEnvironFallback(['CXX_host'], cxx_host)
|
|
|
| @@ -1945,8 +1969,8 @@ def GenerateOutputForConfig(target_list, target_dicts, data, params,
|
| % { 'solink':
|
| '$ld -shared $ldflags -o $lib -Wl,-soname=$soname %(suffix)s',
|
| 'extract_toc':
|
| - ('{ readelf -d $lib | grep SONAME ; '
|
| - 'nm -gD -f p $lib | cut -f1-2 -d\' \'; }')})
|
| + ('{ $readelf -d $lib | grep SONAME ; '
|
| + '$nm -gD -f p $lib | cut -f1-2 -d\' \'; }')})
|
|
|
| master_ninja.rule(
|
| 'solink',
|
|
|