Chromium Code Reviews| Index: pylib/gyp/generator/ninja.py |
| diff --git a/pylib/gyp/generator/ninja.py b/pylib/gyp/generator/ninja.py |
| index 5cf3de71c52b7674fcac86aa1728746fc6af3c30..fcb95b54721199ad84a8ad5d4d2d19fe65a0a444 100644 |
| --- a/pylib/gyp/generator/ninja.py |
| +++ b/pylib/gyp/generator/ninja.py |
| @@ -55,7 +55,12 @@ generator_extra_sources_for_rules = [] |
| # TODO: figure out how to not build extra host objects in the non-cross-compile |
| # case when this is enabled, and enable unconditionally. |
| generator_supports_multiple_toolsets = ( |
| - os.environ.get('AR_target') or os.environ.get('CC_target') or |
| + os.environ.get('GYP_CROSSCOMPILE') or |
| + os.environ.get('AR_host') or |
| + os.environ.get('CC_host') or |
| + os.environ.get('CXX_host') or |
| + os.environ.get('AR_target') or |
| + os.environ.get('CC_target') or |
| os.environ.get('CXX_target')) |
| @@ -701,11 +706,11 @@ class NinjaWriter: |
| def WriteSources(self, config_name, config, sources, predepends, |
| precompiled_header): |
| """Write build rules to compile all of |sources|.""" |
| - if self.toolset == 'target': |
| - self.ninja.variable('ar', '$ar_target') |
| - self.ninja.variable('cc', '$cc_target') |
| - self.ninja.variable('cxx', '$cxx_target') |
| - self.ninja.variable('ld', '$ld_target') |
| + if self.toolset == 'host': |
| + self.ninja.variable('ar', '$ar_host') |
| + self.ninja.variable('cc', '$cc_host') |
| + self.ninja.variable('cxx', '$cxx_host') |
| + self.ninja.variable('ld', '$ld_host') |
| extra_defines = [] |
| if self.flavor == 'mac': |
| @@ -1263,6 +1268,13 @@ def OpenOutput(path, mode='w'): |
| return open(path, mode) |
| +def GetEnvironFallback(var_list, default): |
| + for var in var_list: |
| + if var in os.environ: |
| + return os.environ[var] |
| + return default |
| + |
| + |
| def GenerateOutputForConfig(target_list, target_dicts, data, params, |
| config_name): |
| options = params['options'] |
| @@ -1290,18 +1302,21 @@ def GenerateOutputForConfig(target_list, target_dicts, data, params, |
| toplevel_build, generator_flags, OpenOutput) |
| else: |
| cc, cxx = 'gcc', 'g++' |
| + cc_host, cxx_host = cc, cxx |
| build_file, _, _ = gyp.common.ParseQualifiedTarget(target_list[0]) |
| make_global_settings = data[build_file].get('make_global_settings', []) |
| build_to_root = InvertRelativePath(build_dir) |
| for key, value in make_global_settings: |
| if key == 'CC': cc = os.path.join(build_to_root, value) |
| if key == 'CXX': cxx = os.path.join(build_to_root, value) |
| + if key == 'CC.host': cc_host = os.path.join(build_to_root, value) |
| + if key == 'CXX.host': cxx_host = os.path.join(build_to_root, value) |
| flock = 'flock' |
| if flavor == 'mac': |
| flock = './gyp-mac-tool flock' |
| - master_ninja.variable('cc', os.environ.get('CC', cc)) |
| - master_ninja.variable('cxx', os.environ.get('CXX', cxx)) |
| + master_ninja.variable('cc', GetEnvironFallback(['CC_target', 'CC'], cc)) |
| + master_ninja.variable('cxx', GetEnvironFallback(['CXX_target', 'CXX'], cxx)) |
| if flavor == 'win': |
| master_ninja.variable('ld', 'link.exe') |
| master_ninja.variable('idl', 'midl.exe') |
| @@ -1311,15 +1326,15 @@ def GenerateOutputForConfig(target_list, target_dicts, data, params, |
| master_ninja.variable('mt', 'mt.exe') |
| else: |
| master_ninja.variable('ld', flock + ' linker.lock $cxx') |
| - master_ninja.variable('ar', os.environ.get('AR', 'ar')) |
| + master_ninja.variable('ar', GetEnvironFallback(['AR_target', 'AR'], 'ar')) |
| - master_ninja.variable('ar_target', os.environ.get('AR_target', '$ar')) |
| - master_ninja.variable('cc_target', os.environ.get('CC_target', '$cc')) |
| - master_ninja.variable('cxx_target', os.environ.get('CXX_target', '$cxx')) |
| + master_ninja.variable('ar_host', GetEnvironFallback(['AR_host'], 'ar')) |
| + master_ninja.variable('cc_host', GetEnvironFallback(['CC_host'], cc_host)) |
| + master_ninja.variable('cxx_host', GetEnvironFallback(['CXX_host'], cxx_host)) |
| if flavor == 'win': |
| - master_ninja.variable('ld_target', os.environ.get('LD_target', '$ld')) |
| + master_ninja.variable('ld_host', os.environ.get('LD_target', '$ld')) |
|
piman
2012/08/02 18:55:31
LD_host instead of LD_target
michaelbai
2012/08/02 21:33:48
Done.
|
| else: |
| - master_ninja.variable('ld_target', flock + ' linker.lock $cxx_target') |
| + master_ninja.variable('ld_host', flock + ' linker.lock $cxx_host') |
| if flavor == 'mac': |
| master_ninja.variable('mac_tool', os.path.join('.', 'gyp-mac-tool')) |