| Index: build/gyp_chromium
|
| diff --git a/build/gyp_chromium b/build/gyp_chromium
|
| index 4eafdd541ed71cb9cd1caa434105d81bf3daa6a8..2fc59f736b67b99ce0c0b7668d79605b9428ce40 100755
|
| --- a/build/gyp_chromium
|
| +++ b/build/gyp_chromium
|
| @@ -78,10 +78,27 @@ def EscapeStringForGN(s):
|
| return '"' + s.replace('$', '\\$').replace('"', '\\"') + '"'
|
|
|
|
|
| +def ProcessGypDefinesItems(items):
|
| + """Converts a list of strings to a list of key-value pairs."""
|
| + result = []
|
| + for item in items:
|
| + tokens = item.split('=', 1)
|
| + # Some GYP variables have hyphens, which we don't support.
|
| + key = FormatKeyForGN(tokens[0])
|
| + if len(tokens) == 2:
|
| + result += [(key, tokens[1])]
|
| + else:
|
| + # No value supplied, treat it as a boolean and set it. Note that we
|
| + # use the string '1' here so we have a consistent definition whether
|
| + # you do 'foo=1' or 'foo'.
|
| + result += [(key, '1')]
|
| + return result
|
| +
|
| def GetGypVarsForGN(supplemental_files):
|
| """Returns a dictionary of all GYP vars that we will be passing to GN."""
|
| - vars_dict = {}
|
|
|
| + # GYP defines from the supplemental.gypi files.
|
| + supp_items = []
|
| for supplement in supplemental_files:
|
| with open(supplement, 'r') as f:
|
| try:
|
| @@ -91,21 +108,21 @@ def GetGypVarsForGN(supplemental_files):
|
| raise
|
| variables = file_data.get('variables', [])
|
| for v in variables:
|
| - vars_dict[FormatKeyForGN(v)] = EscapeStringForGN(str(variables[v]))
|
| + supp_items += [(FormatKeyForGN(v), str(variables[v]))]
|
|
|
| - env_string = os.environ.get('GYP_DEFINES', '')
|
| - items = shlex.split(env_string)
|
| - for item in items:
|
| - tokens = item.split('=', 1)
|
| - # Some GYP variables have hyphens, which we don't support.
|
| - key = FormatKeyForGN(tokens[0])
|
| - if len(tokens) == 2:
|
| - vars_dict[key] = tokens[1]
|
| - else:
|
| - # No value supplied, treat it as a boolean and set it.
|
| - vars_dict[key] = 'true'
|
| + # GYP defines from the environment.
|
| + env_items = ProcessGypDefinesItems(
|
| + shlex.split(os.environ.get('GYP_DEFINES', '')))
|
| +
|
| + # GYP defines from the command line. We can't use optparse since we want
|
| + # to ignore all arguments other than "-D".
|
| + cmdline_input_items = []
|
| + for i in range(len(sys.argv))[1:]:
|
| + if sys.argv[i] == '-D' and i + 1 < len(sys.argv):
|
| + cmdline_input_items += [sys.argv[i + 1]]
|
| + cmdline_items = ProcessGypDefinesItems(cmdline_input_items)
|
|
|
| - return vars_dict
|
| + return dict(supp_items + env_items + cmdline_items)
|
|
|
|
|
| def GetArgsStringForGN(supplemental_files):
|
| @@ -113,6 +130,7 @@ def GetArgsStringForGN(supplemental_files):
|
| Based on a subset of the GYP variables that have been rewritten a bit."""
|
|
|
| vars_dict = GetGypVarsForGN(supplemental_files)
|
| + print vars_dict
|
| gn_args = ''
|
|
|
| # Note: These are the additional flags passed to various builds by builders
|
| @@ -136,7 +154,7 @@ def GetArgsStringForGN(supplemental_files):
|
| ('component', 'shared_library', 'is_component_build=true'),
|
| ('clang', '1', 'is_clang=true'),
|
| ('target_arch', 'ia32', 'cpu_arch="x86"'),
|
| - ('target_arch', 'x64', 'cpu_arch="x64"'),
|
| + ('target_arch', 'x64', 'cpu_arch="x64" force_win64=true'),
|
| ('target_arch', 'arm', 'cpu_arch="arm"'),
|
| ('target_arch', 'mipsel', 'cpu_arch="mipsel"'),
|
| ('fastbuild', '0', 'symbol_level=2'),
|
| @@ -146,6 +164,7 @@ def GetArgsStringForGN(supplemental_files):
|
| ('OS', 'android', 'os="android"'),
|
| ('chromeos', '1', 'os="chromeos"'),
|
| ('use_aura', '1', 'use_aura=true'),
|
| + ('use_goma', '1', 'use_goma=true'),
|
| ('asan', '1', 'is_asan=true'),
|
| ('lsan', '1', 'is_lsan=true'),
|
| ]
|
|
|