OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 | 2 |
3 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 3 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
6 | 6 |
7 # This script is wrapper for Chromium that adds some support for how GYP | 7 # This script is wrapper for Chromium that adds some support for how GYP |
8 # is invoked by Chromium beyond what can be done in the gclient hooks. | 8 # is invoked by Chromium beyond what can be done in the gclient hooks. |
9 | 9 |
| 10 import argparse |
10 import glob | 11 import glob |
11 import gyp_environment | 12 import gyp_environment |
12 import os | 13 import os |
13 import re | 14 import re |
14 import shlex | 15 import shlex |
15 import subprocess | 16 import subprocess |
16 import string | 17 import string |
17 import sys | 18 import sys |
18 import vs_toolchain | 19 import vs_toolchain |
19 | 20 |
20 script_dir = os.path.dirname(os.path.realpath(__file__)) | 21 script_dir = os.path.dirname(os.path.realpath(__file__)) |
21 chrome_src = os.path.abspath(os.path.join(script_dir, os.pardir)) | 22 chrome_src = os.path.abspath(os.path.join(script_dir, os.pardir)) |
22 | 23 |
23 sys.path.insert(0, os.path.join(chrome_src, 'tools', 'gyp', 'pylib')) | 24 sys.path.insert(0, os.path.join(chrome_src, 'tools', 'gyp', 'pylib')) |
24 import gyp | 25 import gyp |
25 | 26 |
26 # Assume this file is in a one-level-deep subdirectory of the source root. | 27 # Assume this file is in a one-level-deep subdirectory of the source root. |
27 SRC_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) | 28 SRC_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) |
28 | 29 |
29 # Add paths so that pymod_do_main(...) can import files. | 30 # Add paths so that pymod_do_main(...) can import files. |
| 31 sys.path.insert(1, os.path.join(chrome_src, 'android_webview', 'tools')) |
30 sys.path.insert(1, os.path.join(chrome_src, 'build', 'android', 'gyp')) | 32 sys.path.insert(1, os.path.join(chrome_src, 'build', 'android', 'gyp')) |
31 sys.path.insert(1, os.path.join(chrome_src, 'tools')) | 33 sys.path.insert(1, os.path.join(chrome_src, 'tools')) |
32 sys.path.insert(1, os.path.join(chrome_src, 'tools', 'generate_shim_headers')) | 34 sys.path.insert(1, os.path.join(chrome_src, 'tools', 'generate_shim_headers')) |
33 sys.path.insert(1, os.path.join(chrome_src, 'tools', 'grit')) | 35 sys.path.insert(1, os.path.join(chrome_src, 'tools', 'grit')) |
34 sys.path.insert(1, os.path.join(chrome_src, 'chrome', 'tools', 'build')) | 36 sys.path.insert(1, os.path.join(chrome_src, 'chrome', 'tools', 'build')) |
35 sys.path.insert(1, os.path.join(chrome_src, 'chromecast', 'tools', 'build')) | 37 sys.path.insert(1, os.path.join(chrome_src, 'chromecast', 'tools', 'build')) |
36 sys.path.insert(1, os.path.join(chrome_src, 'native_client', 'build')) | 38 sys.path.insert(1, os.path.join(chrome_src, 'native_client', 'build')) |
37 sys.path.insert(1, os.path.join(chrome_src, 'native_client_sdk', 'src', | 39 sys.path.insert(1, os.path.join(chrome_src, 'native_client_sdk', 'src', |
38 'build_tools')) | 40 'build_tools')) |
39 sys.path.insert(1, os.path.join(chrome_src, 'remoting', 'tools', 'build')) | 41 sys.path.insert(1, os.path.join(chrome_src, 'remoting', 'tools', 'build')) |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
117 e.filename = os.path.abspath(supplement) | 119 e.filename = os.path.abspath(supplement) |
118 raise | 120 raise |
119 variables = file_data.get('variables', []) | 121 variables = file_data.get('variables', []) |
120 for v in variables: | 122 for v in variables: |
121 supp_items += [(v, str(variables[v]))] | 123 supp_items += [(v, str(variables[v]))] |
122 | 124 |
123 # GYP defines from the environment. | 125 # GYP defines from the environment. |
124 env_items = ProcessGypDefinesItems( | 126 env_items = ProcessGypDefinesItems( |
125 shlex.split(os.environ.get('GYP_DEFINES', ''))) | 127 shlex.split(os.environ.get('GYP_DEFINES', ''))) |
126 | 128 |
127 # GYP defines from the command line. We can't use optparse since we want | 129 # GYP defines from the command line. |
128 # to ignore all arguments other than "-D". | 130 parser = argparse.ArgumentParser() |
129 cmdline_input_items = [] | 131 parser.add_argument('-D', dest='defines', action='append', default=[]) |
130 for i in range(len(sys.argv))[1:]: | 132 cmdline_input_items = parser.parse_known_args()[0].defines |
131 if sys.argv[i].startswith('-D'): | |
132 if sys.argv[i] == '-D' and i + 1 < len(sys.argv): | |
133 cmdline_input_items += [sys.argv[i + 1]] | |
134 elif len(sys.argv[i]) > 2: | |
135 cmdline_input_items += [sys.argv[i][2:]] | |
136 cmdline_items = ProcessGypDefinesItems(cmdline_input_items) | 133 cmdline_items = ProcessGypDefinesItems(cmdline_input_items) |
137 | 134 |
138 vars_dict = dict(supp_items + env_items + cmdline_items) | 135 vars_dict = dict(supp_items + env_items + cmdline_items) |
139 return vars_dict | 136 return vars_dict |
140 | 137 |
141 | 138 |
142 def GetOutputDirectory(): | 139 def GetOutputDirectory(): |
143 """Returns the output directory that GYP will use.""" | 140 """Returns the output directory that GYP will use.""" |
144 # GYP generator flags from the command line. We can't use optparse since we | 141 |
145 # want to ignore all arguments other than "-G". | 142 # Handle command line generator flags. |
146 needle = '-Goutput_dir=' | 143 parser = argparse.ArgumentParser() |
147 cmdline_input_items = [] | 144 parser.add_argument('-G', dest='genflags', default=[], action='append') |
148 for item in sys.argv[1:]: | 145 genflags = parser.parse_known_args()[0].genflags |
| 146 |
| 147 # Handle generator flags from the environment. |
| 148 genflags += shlex.split(os.environ.get('GYP_GENERATOR_FLAGS', '')) |
| 149 |
| 150 needle = 'output_dir=' |
| 151 for item in genflags: |
149 if item.startswith(needle): | 152 if item.startswith(needle): |
150 return item[len(needle):] | 153 return item[len(needle):] |
151 | 154 |
152 env_items = shlex.split(os.environ.get('GYP_GENERATOR_FLAGS', '')) | 155 return 'out' |
153 needle = 'output_dir=' | |
154 for item in env_items: | |
155 if item.startswith(needle): | |
156 return item[len(needle):] | |
157 | |
158 return "out" | |
159 | 156 |
160 | 157 |
161 def additional_include_files(supplemental_files, args=[]): | 158 def additional_include_files(supplemental_files, args=[]): |
162 """ | 159 """ |
163 Returns a list of additional (.gypi) files to include, without duplicating | 160 Returns a list of additional (.gypi) files to include, without duplicating |
164 ones that are already specified on the command line. The list of supplemental | 161 ones that are already specified on the command line. The list of supplemental |
165 include files is passed in as an argument. | 162 include files is passed in as an argument. |
166 """ | 163 """ |
167 # Determine the include files specified on the command line. | 164 # Determine the include files specified on the command line. |
168 # This doesn't cover all the different option formats you can use, | 165 # This doesn't cover all the different option formats you can use, |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
326 | 323 |
327 if not use_analyzer: | 324 if not use_analyzer: |
328 vs2013_runtime_dll_dirs = vs_toolchain.SetEnvironmentAndGetRuntimeDllDirs() | 325 vs2013_runtime_dll_dirs = vs_toolchain.SetEnvironmentAndGetRuntimeDllDirs() |
329 if vs2013_runtime_dll_dirs: | 326 if vs2013_runtime_dll_dirs: |
330 x64_runtime, x86_runtime = vs2013_runtime_dll_dirs | 327 x64_runtime, x86_runtime = vs2013_runtime_dll_dirs |
331 vs_toolchain.CopyVsRuntimeDlls( | 328 vs_toolchain.CopyVsRuntimeDlls( |
332 os.path.join(chrome_src, GetOutputDirectory()), | 329 os.path.join(chrome_src, GetOutputDirectory()), |
333 (x86_runtime, x64_runtime)) | 330 (x86_runtime, x64_runtime)) |
334 | 331 |
335 sys.exit(gyp_rc) | 332 sys.exit(gyp_rc) |
OLD | NEW |