| OLD | NEW | 
|---|
| 1 #!/usr/bin/python | 1 #!/usr/bin/python | 
| 2 # Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2006-2008 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 36 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 47   # If the project isn't in args, add all.xcodeproj so simplify configuration. | 47   # If the project isn't in args, add all.xcodeproj so simplify configuration. | 
| 48   command = ['xcodebuild', '-configuration', options.target] | 48   command = ['xcodebuild', '-configuration', options.target] | 
| 49   if not '-project' in args: | 49   if not '-project' in args: | 
| 50     command.extend(['-project', 'all.xcodeproj']) | 50     command.extend(['-project', 'all.xcodeproj']) | 
| 51   command.extend(args) | 51   command.extend(args) | 
| 52 | 52 | 
| 53   result = chromium_utils.RunCommand(command) | 53   result = chromium_utils.RunCommand(command) | 
| 54   return result | 54   return result | 
| 55 | 55 | 
| 56 | 56 | 
| 57 def common_linux_settings(command, distcc_pump=False): | 57 def common_linux_settings(command, distcc_pump=False, crosstool=None): | 
| 58   """ | 58   """ | 
| 59   Sets desirable Linux environment variables and command-line options | 59   Sets desirable Linux environment variables and command-line options | 
| 60   that are common to the Make and SCons builds. | 60   that are common to the Make and SCons builds. | 
| 61   """ | 61   """ | 
| 62   if options.mode == 'google_chrome' or options.mode == 'official': | 62   if options.mode == 'google_chrome' or options.mode == 'official': | 
| 63     os.environ['CHROMIUM_BUILD'] = '_google_chrome' | 63     os.environ['CHROMIUM_BUILD'] = '_google_chrome' | 
| 64 | 64 | 
| 65   if options.mode == 'official': | 65   if options.mode == 'official': | 
| 66     os.environ['OFFICIAL_BUILD'] = '1' | 66     os.environ['OFFICIAL_BUILD'] = '1' | 
| 67     os.environ['CHROME_BUILD_TYPE'] = '_official' | 67     os.environ['CHROME_BUILD_TYPE'] = '_official' | 
| 68     # Official builds are always Google Chrome. | 68     # Official builds are always Google Chrome. | 
| 69 | 69 | 
| 70   # Don't stop at the first error. | 70   # Don't stop at the first error. | 
| 71   command.append('-k') | 71   command.append('-k') | 
| 72 | 72 | 
| 73   # distcc pump is ccache incompatible, the pump script sets CC/CXX/-j. | 73   # distcc pump is ccache incompatible, the pump script sets CC/CXX/-j. | 
| 74   if distcc_pump: | 74   if distcc_pump: | 
| 75     return | 75     return | 
| 76 | 76 | 
|  | 77   # Setup crosstool environment variables. | 
|  | 78   if crosstool: | 
|  | 79     os.environ['AR'] = crosstool + '-ar' | 
|  | 80     os.environ['AS'] = crosstool + '-as' | 
|  | 81     os.environ['CC'] = crosstool + '-gcc' | 
|  | 82     os.environ['CXX'] = crosstool + '-g++' | 
|  | 83     os.environ['LD'] = crosstool + '-ld' | 
|  | 84     os.environ['RANLIB'] = crosstool + '-ranlib' | 
|  | 85     command.append('-j4') | 
|  | 86     return | 
|  | 87 | 
| 77   jobs = 4 | 88   jobs = 4 | 
| 78   cc = 'gcc' | 89   cc = 'gcc' | 
| 79   cpp = 'g++' | 90   cpp = 'g++' | 
| 80   distcc_hosts_file = os.path.join(os.path.expanduser('~'), '.distcc/hosts') | 91   distcc_hosts_file = os.path.join(os.path.expanduser('~'), '.distcc/hosts') | 
| 81   if os.path.exists('/usr/bin/distcc') and os.path.exists(distcc_hosts_file): | 92   if os.path.exists('/usr/bin/distcc') and os.path.exists(distcc_hosts_file): | 
| 82     cc = 'distcc ' + cc | 93     cc = 'distcc ' + cc | 
| 83     cpp = 'distcc ' + cpp | 94     cpp = 'distcc ' + cpp | 
| 84     jobs = 12 | 95     jobs = 12 | 
| 85   if os.path.exists('/usr/bin/ccache'): | 96   if os.path.exists('/usr/bin/ccache'): | 
| 86     cc = 'ccache ' + cc | 97     cc = 'ccache ' + cc | 
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 121 | 132 | 
| 122   if options.distcc_pump: | 133   if options.distcc_pump: | 
| 123     # pump_chrome is a custom script for running distcc pump. We just call | 134     # pump_chrome is a custom script for running distcc pump. We just call | 
| 124     # pump_chrome so the local user can easily customize distcc parameters. | 135     # pump_chrome so the local user can easily customize distcc parameters. | 
| 125     # The simplist pump_chrome script would be: | 136     # The simplist pump_chrome script would be: | 
| 126     # #!/bin/sh | 137     # #!/bin/sh | 
| 127     # CC="distcc gcc" CXX="distcc g++" pump make -jN $@ | 138     # CC="distcc gcc" CXX="distcc g++" pump make -jN $@ | 
| 128     command = ['pump_chrome'] | 139     command = ['pump_chrome'] | 
| 129   else: | 140   else: | 
| 130     command = ['make'] | 141     command = ['make'] | 
| 131   common_linux_settings(command, options.distcc_pump) | 142   common_linux_settings(command, options.distcc_pump, options.crosstool) | 
| 132 | 143 | 
| 133   command.append('BUILDTYPE=' + options.target) | 144   command.append('BUILDTYPE=' + options.target) | 
| 134 | 145 | 
| 135   # Here's what you can uncomment if you need to see more info | 146   # Here's what you can uncomment if you need to see more info | 
| 136   # about what the build is doing on a slave: | 147   # about what the build is doing on a slave: | 
| 137   # | 148   # | 
| 138   #   V=1 prints the actual executed command | 149   #   V=1 prints the actual executed command | 
| 139   # | 150   # | 
| 140   #command.extend(['V=1']) | 151   #command.extend(['V=1']) | 
| 141   command.extend(options.build_args + args) | 152   command.extend(options.build_args + args) | 
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 303     option_parser.add_option('', '--msvs_version', default='8', | 314     option_parser.add_option('', '--msvs_version', default='8', | 
| 304                              help='VisualStudio version to use ' | 315                              help='VisualStudio version to use ' | 
| 305                                   '[default:%default]') | 316                                   '[default:%default]') | 
| 306   option_parser.add_option('', '--fastbuild', action="store_true", | 317   option_parser.add_option('', '--fastbuild', action="store_true", | 
| 307                            help='faster build (with debug info stripped)') | 318                            help='faster build (with debug info stripped)') | 
| 308   if chromium_utils.IsLinux(): | 319   if chromium_utils.IsLinux(): | 
| 309     # This is for Linux local testing where we have a distcc pump cluster. | 320     # This is for Linux local testing where we have a distcc pump cluster. | 
| 310     # Only works for make builds. Ask thestig if you're curious. | 321     # Only works for make builds. Ask thestig if you're curious. | 
| 311     option_parser.add_option('', '--distcc-pump', action="store_true", | 322     option_parser.add_option('', '--distcc-pump', action="store_true", | 
| 312                              help='run distcc pump mode for local testing') | 323                              help='run distcc pump mode for local testing') | 
|  | 324     # For linux to arm cross compile. | 
|  | 325     option_parser.add_option('', '--crosstool', default=None, | 
|  | 326                              help='optional path to crosstool toolset') | 
| 313 | 327 | 
| 314   options, args = option_parser.parse_args() | 328   options, args = option_parser.parse_args() | 
| 315 | 329 | 
| 316   if options.build_tool is None: | 330   if options.build_tool is None: | 
| 317     if chromium_utils.IsWindows(): | 331     if chromium_utils.IsWindows(): | 
| 318       main = main_win | 332       main = main_win | 
| 319     elif chromium_utils.IsMac(): | 333     elif chromium_utils.IsMac(): | 
| 320       main = main_xcode | 334       main = main_xcode | 
| 321     elif chromium_utils.IsLinux(): | 335     elif chromium_utils.IsLinux(): | 
| 322       main = main_scons | 336       main = main_scons | 
| 323     else: | 337     else: | 
| 324       print('Please specify --build-tool.') | 338       print('Please specify --build-tool.') | 
| 325       sys.exit(1) | 339       sys.exit(1) | 
| 326   else: | 340   else: | 
| 327     build_tool_map = { | 341     build_tool_map = { | 
| 328         'ib' : main_win, | 342         'ib' : main_win, | 
| 329         'vs' : main_win, | 343         'vs' : main_win, | 
| 330         'make' : main_make, | 344         'make' : main_make, | 
| 331         'scons' : main_scons, | 345         'scons' : main_scons, | 
| 332         'xcode' : main_xcode, | 346         'xcode' : main_xcode, | 
| 333     } | 347     } | 
| 334     main = build_tool_map.get(options.build_tool) | 348     main = build_tool_map.get(options.build_tool) | 
| 335     if not main: | 349     if not main: | 
| 336       sys.stderr.write('Unknown build tool %s.\n' % repr(options.build_tool)) | 350       sys.stderr.write('Unknown build tool %s.\n' % repr(options.build_tool)) | 
| 337       sys.exit(2) | 351       sys.exit(2) | 
| 338 | 352 | 
| 339   sys.exit(main(options, args)) | 353   sys.exit(main(options, args)) | 
| OLD | NEW | 
|---|