OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium 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 """A tool to build chrome, executed by buildbot. | 6 """A tool to build chrome, executed by buildbot. |
7 | 7 |
8 When this is run, the current directory (cwd) should be the outer build | 8 When this is run, the current directory (cwd) should be the outer build |
9 directory (e.g., chrome-release/build/). | 9 directory (e.g., chrome-release/build/). |
10 | 10 |
(...skipping 436 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
447 if options.gsutil_py_path: | 447 if options.gsutil_py_path: |
448 override_gsutil = [sys.executable, options.gsutil_py_path] | 448 override_gsutil = [sys.executable, options.gsutil_py_path] |
449 | 449 |
450 goma_utils.UploadNinjaLog( | 450 goma_utils.UploadNinjaLog( |
451 options.target_output_dir, options.compiler, command, exit_status, | 451 options.target_output_dir, options.compiler, command, exit_status, |
452 override_gsutil=override_gsutil) | 452 override_gsutil=override_gsutil) |
453 | 453 |
454 | 454 |
455 def get_target_build_dir(args, options): | 455 def get_target_build_dir(args, options): |
456 """Keep this function in sync with src/build/landmines.py""" | 456 """Keep this function in sync with src/build/landmines.py""" |
457 assert options.build_tool == 'ninja' | |
458 if chromium_utils.IsLinux() and options.cros_board: | 457 if chromium_utils.IsLinux() and options.cros_board: |
459 # When building ChromeOS's Simple Chrome workflow, the output directory | 458 # When building ChromeOS's Simple Chrome workflow, the output directory |
460 # has a CROS board name suffix. | 459 # has a CROS board name suffix. |
461 outdir = 'out_%s' % (options.cros_board,) | 460 outdir = 'out_%s' % (options.cros_board,) |
462 elif options.out_dir: | 461 elif options.out_dir: |
463 outdir = options.out_dir | 462 outdir = options.out_dir |
464 else: | 463 else: |
465 outdir = 'out' | 464 outdir = 'out' |
466 return os.path.abspath(os.path.join(options.src_dir, outdir, options.target)) | 465 return os.path.abspath(os.path.join(options.src_dir, outdir, options.target)) |
467 | 466 |
468 | 467 |
469 def real_main(): | 468 def real_main(): |
470 option_parser = optparse.OptionParser() | 469 option_parser = optparse.OptionParser() |
471 option_parser.add_option('--clobber', action='store_true', default=False, | 470 option_parser.add_option('--clobber', action='store_true', default=False, |
472 help='delete the output directory before compiling') | 471 help='delete the output directory before compiling') |
473 option_parser.add_option('--target', default='Release', | 472 option_parser.add_option('--target', default='Release', |
474 help='build target (Debug or Release)') | 473 help='build target (Debug or Release)') |
475 option_parser.add_option('--src-dir', default=None, | 474 option_parser.add_option('--src-dir', default=None, |
476 help='path to the root of the source tree') | 475 help='path to the root of the source tree') |
477 option_parser.add_option('--mode', default='dev', | 476 option_parser.add_option('--mode', default='dev', |
478 help='build mode (dev or official) controlling ' | 477 help='build mode (dev or official) controlling ' |
479 'environment variables set during build') | 478 'environment variables set during build') |
| 479 # TODO(thakis): Remove this once bots no longer pass it in. |
480 option_parser.add_option('--build-tool', default=None, help='ignored') | 480 option_parser.add_option('--build-tool', default=None, help='ignored') |
481 option_parser.add_option('--build-args', action='append', default=[], | 481 option_parser.add_option('--build-args', action='append', default=[], |
482 help='arguments to pass to the build tool') | 482 help='arguments to pass to the build tool') |
483 option_parser.add_option('--build-data-dir', action='store', | 483 option_parser.add_option('--build-data-dir', action='store', |
484 help='specify a build data directory.') | 484 help='specify a build data directory.') |
485 option_parser.add_option('--compiler', default=None, | 485 option_parser.add_option('--compiler', default=None, |
486 help='specify alternative compiler (e.g. clang)') | 486 help='specify alternative compiler (e.g. clang)') |
487 if chromium_utils.IsLinux(): | 487 if chromium_utils.IsLinux(): |
488 option_parser.add_option('--cros-board', action='store', | 488 option_parser.add_option('--cros-board', action='store', |
489 help='If building for the ChromeOS Simple Chrome ' | 489 help='If building for the ChromeOS Simple Chrome ' |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
523 help='Checks the output of the ninja builder to ' | 523 help='Checks the output of the ninja builder to ' |
524 'confirm that a second compile immediately ' | 524 'confirm that a second compile immediately ' |
525 'the first is a no-op.') | 525 'the first is a no-op.') |
526 | 526 |
527 options, args = option_parser.parse_args() | 527 options, args = option_parser.parse_args() |
528 | 528 |
529 if not options.src_dir: | 529 if not options.src_dir: |
530 options.src_dir = 'src' | 530 options.src_dir = 'src' |
531 options.src_dir = os.path.abspath(options.src_dir) | 531 options.src_dir = os.path.abspath(options.src_dir) |
532 | 532 |
533 options.build_dir = os.path.abspath(build_directory.GetBuildOutputDirectory( | |
534 os.path.basename(options.src_dir))) | |
535 | |
536 if options.build_tool is None: | |
537 if chromium_utils.IsWindows(): | |
538 main = main_ninja | |
539 options.build_tool = 'ninja' | |
540 # TODO(thakis): Merge this with the branch below and simplify. | |
541 elif chromium_utils.IsLinux() or chromium_utils.IsMac(): | |
542 main = main_ninja | |
543 options.build_tool = 'ninja' | |
544 else: | |
545 print 'Please specify --build-tool.' | |
546 return 1 | |
547 else: | |
548 build_tool_map = { 'ninja' : main_ninja } | |
549 main = build_tool_map.get(options.build_tool) | |
550 if not main: | |
551 sys.stderr.write('Unknown build tool %s.\n' % repr(options.build_tool)) | |
552 return 2 | |
553 | |
554 options.target_output_dir = get_target_build_dir(args, options) | 533 options.target_output_dir = get_target_build_dir(args, options) |
555 | 534 |
556 return main(options, args) | 535 assert options.build_tool in (None, 'ninja') |
| 536 return main_ninja(options, args) |
557 | 537 |
558 | 538 |
559 if '__main__' == __name__: | 539 if '__main__' == __name__: |
560 sys.exit(real_main()) | 540 sys.exit(real_main()) |
OLD | NEW |