OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright 2016 The Dart project authors. All rights reserved. | 2 # Copyright 2016 The Dart project authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 import argparse | 6 import argparse |
7 import multiprocessing | 7 import multiprocessing |
8 import os | 8 import os |
9 import subprocess | 9 import subprocess |
10 import sys | 10 import sys |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 gn_args['dart_debug'] = mode == 'debug' | 158 gn_args['dart_debug'] = mode == 'debug' |
159 | 159 |
160 # This setting is only meaningful for Flutter. Standalone builds of the VM | 160 # This setting is only meaningful for Flutter. Standalone builds of the VM |
161 # should leave this set to 'develop', which causes the build to defer to | 161 # should leave this set to 'develop', which causes the build to defer to |
162 # 'is_debug', 'is_release' and 'is_product'. | 162 # 'is_debug', 'is_release' and 'is_product'. |
163 gn_args['dart_runtime_mode'] = 'develop' | 163 gn_args['dart_runtime_mode'] = 'develop' |
164 | 164 |
165 # TODO(zra): Investigate using clang with these configurations. | 165 # TODO(zra): Investigate using clang with these configurations. |
166 # Clang compiles tcmalloc's inline assembly for ia32 on Linux wrong, so we | 166 # Clang compiles tcmalloc's inline assembly for ia32 on Linux wrong, so we |
167 # don't use clang in that configuration. Thus, we use gcc for ia32 *unless* | 167 # don't use clang in that configuration. Thus, we use gcc for ia32 *unless* |
168 # asan or tsan is specified. | 168 # a clang-based sanitizer is specified. |
169 has_clang = (host_os != 'win' | 169 has_clang = (host_os != 'win' |
170 and args.os not in ['android'] | |
171 and not gn_args['target_cpu'].startswith('arm') | |
172 and not gn_args['target_cpu'].startswith('mips') | 170 and not gn_args['target_cpu'].startswith('mips') |
173 and not ((gn_args['target_os'] == 'linux') | 171 and not ((gn_args['target_os'] == 'linux') |
174 and (gn_args['host_cpu'] == 'x86') | 172 and (gn_args['host_cpu'] == 'x86') |
175 and not args.asan | 173 and not args.asan |
176 and not args.msan | 174 and not args.msan |
177 and not args.tsan)) # Use clang for sanitizer builds. | 175 and not args.tsan)) # Use clang for sanitizer builds. |
178 gn_args['is_clang'] = args.clang and has_clang | 176 gn_args['is_clang'] = args.clang and has_clang |
179 | 177 |
180 gn_args['is_asan'] = args.asan and gn_args['is_clang'] | 178 gn_args['is_asan'] = args.asan and gn_args['is_clang'] |
181 gn_args['is_msan'] = args.msan and gn_args['is_clang'] | 179 gn_args['is_msan'] = args.msan and gn_args['is_clang'] |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
241 return False | 239 return False |
242 oses = [process_os_option(os_name) for os_name in args.os] | 240 oses = [process_os_option(os_name) for os_name in args.os] |
243 for os_name in oses: | 241 for os_name in oses: |
244 if not os_name in ['android', 'freebsd', 'linux', 'macos', 'win32']: | 242 if not os_name in ['android', 'freebsd', 'linux', 'macos', 'win32']: |
245 print "Unknown os %s" % os_name | 243 print "Unknown os %s" % os_name |
246 return False | 244 return False |
247 if os_name != HOST_OS: | 245 if os_name != HOST_OS: |
248 if os_name != 'android': | 246 if os_name != 'android': |
249 print "Unsupported target os %s" % os_name | 247 print "Unsupported target os %s" % os_name |
250 return False | 248 return False |
251 if not HOST_OS in ['linux']: | 249 if not HOST_OS in ['linux', 'macos']: |
252 print ("Cross-compilation to %s is not supported on host os %s." | 250 print ("Cross-compilation to %s is not supported on host os %s." |
253 % (os_name, HOST_OS)) | 251 % (os_name, HOST_OS)) |
254 return False | 252 return False |
255 if not arch in ['ia32', 'x64', 'arm', 'armv6', 'armv5te', 'arm64', 'mips', | 253 if not arch in ['ia32', 'x64', 'arm', 'armv6', 'armv5te', 'arm64', 'mips', |
256 'simdbc', 'simdbc64']: | 254 'simdbc', 'simdbc64']: |
257 print ("Cross-compilation to %s is not supported for architecture %s." | 255 print ("Cross-compilation to %s is not supported for architecture %s." |
258 % (os_name, arch)) | 256 % (os_name, arch)) |
259 return False | 257 return False |
260 return True | 258 return True |
261 | 259 |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
360 default=use_wheezy(), | 358 default=use_wheezy(), |
361 action='store_true') | 359 action='store_true') |
362 other_group.add_argument('--no-wheezy', | 360 other_group.add_argument('--no-wheezy', |
363 help='Disable the Debian wheezy sysroot on Linux', | 361 help='Disable the Debian wheezy sysroot on Linux', |
364 dest='wheezy', | 362 dest='wheezy', |
365 action='store_false') | 363 action='store_false') |
366 other_group.add_argument('--workers', '-w', | 364 other_group.add_argument('--workers', '-w', |
367 type=int, | 365 type=int, |
368 help='Number of simultaneous GN invocations', | 366 help='Number of simultaneous GN invocations', |
369 dest='workers', | 367 dest='workers', |
370 default=multiprocessing.cpu_count()) | 368 # Set to multiprocessing.cpu_count() when GN can be run in parallel. |
| 369 default=1) |
371 | 370 |
372 options = parser.parse_args(args) | 371 options = parser.parse_args(args) |
373 if not process_options(options): | 372 if not process_options(options): |
374 parser.print_help() | 373 parser.print_help() |
375 return None | 374 return None |
376 return options | 375 return options |
377 | 376 |
378 | 377 |
379 def run_command(command): | 378 def run_command(command): |
380 try: | 379 try: |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
427 return 1 | 426 return 1 |
428 | 427 |
429 endtime = time.time() | 428 endtime = time.time() |
430 if args.verbose: | 429 if args.verbose: |
431 print ("GN Time: %.3f seconds" % (endtime - starttime)) | 430 print ("GN Time: %.3f seconds" % (endtime - starttime)) |
432 return 0 | 431 return 0 |
433 | 432 |
434 | 433 |
435 if __name__ == '__main__': | 434 if __name__ == '__main__': |
436 sys.exit(main(sys.argv)) | 435 sys.exit(main(sys.argv)) |
OLD | NEW |