| Index: pylib/gyp/generator/make.py
|
| diff --git a/pylib/gyp/generator/make.py b/pylib/gyp/generator/make.py
|
| index f915d94bfec4d3348d5e90fdf5cb274c63fd3f4b..2cb3331ba32bf5fb9ba60fc16a9ad58a0e224330 100644
|
| --- a/pylib/gyp/generator/make.py
|
| +++ b/pylib/gyp/generator/make.py
|
| @@ -21,13 +21,14 @@
|
| # toplevel Makefile. It may make sense to generate some .mk files on
|
| # the side to keep the the files readable.
|
|
|
| +import os
|
| +import re
|
| +import sys
|
| import gyp
|
| import gyp.common
|
| import gyp.system_test
|
| import gyp.xcode_emulation
|
| -import os
|
| -import re
|
| -import sys
|
| +from gyp.common import GetEnvironFallback
|
|
|
| generator_default_variables = {
|
| 'EXECUTABLE_PREFIX': '',
|
| @@ -60,7 +61,6 @@ generator_extra_sources_for_rules = []
|
|
|
| def CalculateVariables(default_variables, params):
|
| """Calculate additional variables for use in the build (called by gyp)."""
|
| - 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')
|
| @@ -255,11 +255,11 @@ all_deps :=
|
| # This will allow make to invoke N linker processes as specified in -jN.
|
| LINK ?= %(flock)s $(builddir)/linker.lock $(CXX)
|
|
|
| -CC.target ?= $(CC)
|
| +CC.target ?= %(CC.target)s
|
| CFLAGS.target ?= $(CFLAGS)
|
| -CXX.target ?= $(CXX)
|
| +CXX.target ?= %(CXX.target)s
|
| CXXFLAGS.target ?= $(CXXFLAGS)
|
| -LINK.target ?= $(LINK)
|
| +LINK.target ?= %(LINK.target)s
|
| LDFLAGS.target ?= $(LDFLAGS)
|
| AR.target ?= $(AR)
|
| ARFLAGS.target ?= %(ARFLAGS.target)s
|
| @@ -268,13 +268,13 @@ ARFLAGS.target ?= %(ARFLAGS.target)s
|
| # in gyp's make.py where ARFLAGS.host etc. is computed.
|
| # TODO(evan): move all cross-compilation logic to gyp-time so we don't need
|
| # to replicate this environment fallback in make as well.
|
| -CC.host ?= gcc
|
| +CC.host ?= %(CC.host)s
|
| CFLAGS.host ?=
|
| -CXX.host ?= g++
|
| +CXX.host ?= %(CXX.host)s
|
| CXXFLAGS.host ?=
|
| -LINK.host ?= g++
|
| +LINK.host ?= %(LINK.host)s
|
| LDFLAGS.host ?=
|
| -AR.host ?= ar
|
| +AR.host ?= %(AR.host)s
|
| ARFLAGS.host := %(ARFLAGS.host)s
|
|
|
| # Define a dir function that can handle spaces.
|
| @@ -1892,8 +1892,8 @@ def RunSystemTests(flavor):
|
| # Compute flags used for building static archives.
|
| # N.B.: this fallback logic should match the logic in SHARED_HEADER.
|
| # See comment there for more details.
|
| - ar_target = os.environ.get('AR.target', os.environ.get('AR', 'ar'))
|
| - cc_target = os.environ.get('CC.target', os.environ.get('CC', 'cc'))
|
| + ar_target = GetEnvironFallback(('AR_target', 'AR'), 'ar')
|
| + cc_target = GetEnvironFallback(('CC_target', 'CC'), 'cc')
|
| arflags_target = 'crs'
|
| # ar -T enables thin archives on Linux. OS X's ar supports a -T flag, but it
|
| # does something useless (it limits filenames in the archive to 15 chars).
|
| @@ -1901,12 +1901,12 @@ def RunSystemTests(flavor):
|
| cc_command=cc_target):
|
| arflags_target = 'crsT'
|
|
|
| - ar_host = os.environ.get('AR.host', 'ar')
|
| - cc_host = os.environ.get('CC.host', 'gcc')
|
| + ar_host = os.environ.get('AR_host', 'ar')
|
| + cc_host = os.environ.get('CC_host', 'gcc')
|
| arflags_host = 'crs'
|
| # It feels redundant to compute this again given that most builds aren't
|
| - # cross-compiles, but due to quirks of history CC.host defaults to 'gcc'
|
| - # while CC.target defaults to 'cc', so the commands really are different
|
| + # cross-compiles, but due to quirks of history CC_host defaults to 'gcc'
|
| + # while CC_target defaults to 'cc', so the commands really are different
|
| # even though they're nearly guaranteed to run the same code underneath.
|
| if flavor != 'mac' and gyp.system_test.TestArSupportsT(ar_command=ar_host,
|
| cc_command=cc_host):
|
| @@ -1995,18 +1995,29 @@ def GenerateOutput(target_list, target_dicts, data, params):
|
| header_params.update({
|
| 'flock': 'lockf',
|
| })
|
| +
|
| header_params.update(RunSystemTests(flavor))
|
| + header_params.update({
|
| + 'CC.target': GetEnvironFallback(('CC_target', 'CC'), '$(CC)'),
|
| + 'AR.target': GetEnvironFallback(('AR_target', 'AR'), '$(AR)'),
|
| + 'CXX.target': GetEnvironFallback(('CXX_target', 'CXX'), '$(CXX)'),
|
| + 'LINK.target': GetEnvironFallback(('LD_target', 'LD'), '$(LINK)'),
|
| + 'CC.host': GetEnvironFallback(('CC_host',), 'gcc'),
|
| + 'AR.host': GetEnvironFallback(('AR_host',), 'ar'),
|
| + 'CXX.host': GetEnvironFallback(('CXX_host',), 'g++'),
|
| + 'LINK.host': GetEnvironFallback(('LD_host',), 'g++'),
|
| + })
|
|
|
| build_file, _, _ = gyp.common.ParseQualifiedTarget(target_list[0])
|
| - make_global_settings_dict = data[build_file].get('make_global_settings', {})
|
| + make_global_settings_array = data[build_file].get('make_global_settings', [])
|
| make_global_settings = ''
|
| - for key, value in make_global_settings_dict:
|
| + for key, value in make_global_settings_array:
|
| if value[0] != '$':
|
| value = '$(abspath %s)' % value
|
| - if key == 'LINK':
|
| + if key in ('LINK', 'LINK.host'):
|
| make_global_settings += ('%s ?= %s $(builddir)/linker.lock %s\n' %
|
| (key, flock_command, value))
|
| - elif key in ['CC', 'CXX']:
|
| + elif key in ('CC', 'CC.host', 'CXX', 'CXX.host'):
|
| make_global_settings += (
|
| 'ifneq (,$(filter $(origin %s), undefined default))\n' % key)
|
| # Let gyp-time envvars win over global settings.
|
| @@ -2048,8 +2059,8 @@ def GenerateOutput(target_list, target_dicts, data, params):
|
| build_file, target, toolset = gyp.common.ParseQualifiedTarget(
|
| qualified_target)
|
|
|
| - this_make_global_settings = data[build_file].get('make_global_settings', {})
|
| - assert make_global_settings_dict == this_make_global_settings, (
|
| + this_make_global_settings = data[build_file].get('make_global_settings', [])
|
| + assert make_global_settings_array == this_make_global_settings, (
|
| "make_global_settings needs to be the same for all targets.")
|
|
|
| build_files.add(gyp.common.RelativePath(build_file, options.toplevel_dir))
|
|
|