Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(323)

Unified Diff: pylib/gyp/generator/ninja.py

Issue 10833021: Honor $CC/$CC_host and friends in make generator. (Closed) Base URL: http://git.chromium.org/external/gyp.git@master
Patch Set: Remove msvs_emulation.py changes Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pylib/gyp/generator/make.py ('k') | test/compiler-override/compiler.gyp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pylib/gyp/generator/ninja.py
diff --git a/pylib/gyp/generator/ninja.py b/pylib/gyp/generator/ninja.py
index 3c41dacf5027984e3f81f07446d516c290920dd4..d2b8fdce1cbf1574fbb98fb4675ce8933874c59d 100644
--- a/pylib/gyp/generator/ninja.py
+++ b/pylib/gyp/generator/ninja.py
@@ -3,18 +3,19 @@
# found in the LICENSE file.
import copy
+import hashlib
+import os.path
+import re
+import subprocess
+import sys
import gyp
import gyp.common
import gyp.msvs_emulation
import gyp.MSVSVersion
import gyp.system_test
import gyp.xcode_emulation
-import hashlib
-import os.path
-import re
-import subprocess
-import sys
+from gyp.common import GetEnvironFallback
import gyp.ninja_syntax as ninja_syntax
generator_default_variables = {
@@ -1201,7 +1202,6 @@ def CalculateVariables(default_variables, params):
"""Calculate additional variables for use in the build (called by gyp)."""
global generator_additional_non_configuration_keys
global generator_additional_path_sections
- cc_target = os.environ.get('CC.target', os.environ.get('CC', 'cc'))
flavor = gyp.common.GetFlavor(params)
if flavor == 'mac':
default_variables.setdefault('OS', 'mac')
@@ -1272,13 +1272,6 @@ 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']
@@ -1307,11 +1300,18 @@ def GenerateOutputForConfig(target_list, target_dicts, data, params,
# 'CC_host'/'CXX_host' enviroment variable, cc_host/cxx_host should be set
# to cc/cxx.
if flavor == 'win':
- cc = cxx = 'cl.exe'
+ cc = 'cl.exe'
+ cxx = 'cl.exe'
+ ld = 'link.exe'
gyp.msvs_emulation.GenerateEnvironmentFiles(
toplevel_build, generator_flags, OpenOutput)
+ ld_host = '$ld'
else:
- cc, cxx = 'gcc', 'g++'
+ cc = 'gcc'
+ cxx = 'g++'
+ ld = '$cxx'
+ ld_host = '$cxx_host'
+
cc_host = None
cxx_host = None
cc_host_global_setting = None
@@ -1321,12 +1321,20 @@ def GenerateOutputForConfig(target_list, target_dicts, data, params,
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)
- if key == 'CC.host': cc_host_global_setting = value
- if key == 'CXX.host': cxx_host_global_setting = value
+ if key == 'CC':
+ cc = os.path.join(build_to_root, value)
+ if key == 'CXX':
+ cxx = os.path.join(build_to_root, value)
+ if key == 'LD':
+ ld = os.path.join(build_to_root, value)
+ if key == 'CC.host':
+ cc_host = os.path.join(build_to_root, value)
+ cc_host_global_setting = value
+ if key == 'CXX.host':
+ cxx_host = os.path.join(build_to_root, value)
+ cxx_host_global_setting = value
+ if key == 'LD.host':
+ ld_host = os.path.join(build_to_root, value)
flock = 'flock'
if flavor == 'mac':
@@ -1335,12 +1343,15 @@ def GenerateOutputForConfig(target_list, target_dicts, data, params,
master_ninja.variable('cc', cc)
cxx = GetEnvironFallback(['CXX_target', 'CXX'], cxx)
master_ninja.variable('cxx', cxx)
+ ld = GetEnvironFallback(['LD_target', 'LD'], ld)
- if not cc_host: cc_host = cc
- if not cxx_host: cxx_host = cxx
+ if not cc_host:
+ cc_host = cc
+ if not cxx_host:
+ cxx_host = cxx
if flavor == 'win':
- master_ninja.variable('ld', 'link.exe')
+ master_ninja.variable('ld', ld)
master_ninja.variable('idl', 'midl.exe')
master_ninja.variable('ar', 'lib.exe')
master_ninja.variable('rc', 'rc.exe')
@@ -1348,24 +1359,26 @@ def GenerateOutputForConfig(target_list, target_dicts, data, params,
master_ninja.variable('mt', 'mt.exe')
master_ninja.variable('use_dep_database', '1')
else:
- master_ninja.variable('ld', flock + ' linker.lock $cxx')
+ master_ninja.variable('ld', flock + ' linker.lock ' + ld)
master_ninja.variable('ar', GetEnvironFallback(['AR_target', 'AR'], 'ar'))
master_ninja.variable('ar_host', GetEnvironFallback(['AR_host'], 'ar'))
cc_host = GetEnvironFallback(['CC_host'], cc_host)
cxx_host = GetEnvironFallback(['CXX_host'], cxx_host)
+ ld_host = GetEnvironFallback(['LD_host'], ld_host)
+
# The environment variable could be used in 'make_global_settings', like
# ['CC.host', '$(CC)'] or ['CXX.host', '$(CXX)'], transform them here.
- if cc_host.find('$(CC)') != -1 and cc_host_global_setting:
+ if '$(CC)' in cc_host and cc_host_global_setting:
cc_host = cc_host_global_setting.replace('$(CC)', cc)
- if cxx_host.find('$(CXX)') != -1 and cxx_host_global_setting:
+ if '$(CXX)' in cxx_host and cxx_host_global_setting:
cxx_host = cxx_host_global_setting.replace('$(CXX)', cxx)
master_ninja.variable('cc_host', cc_host)
master_ninja.variable('cxx_host', cxx_host)
if flavor == 'win':
- master_ninja.variable('ld_host', os.environ.get('LD_host', '$ld'))
+ master_ninja.variable('ld_host', ld_host)
else:
- master_ninja.variable('ld_host', flock + ' linker.lock $cxx_host')
+ master_ninja.variable('ld_host', flock + ' linker.lock ' + ld_host)
if flavor == 'mac':
master_ninja.variable('mac_tool', os.path.join('.', 'gyp-mac-tool'))
« no previous file with comments | « pylib/gyp/generator/make.py ('k') | test/compiler-override/compiler.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698