OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # | 2 # |
3 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 3 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
4 # for details. All rights reserved. Use of this source code is governed by a | 4 # for details. All rights reserved. Use of this source code is governed by a |
5 # BSD-style license that can be found in the LICENSE file. | 5 # BSD-style license that can be found in the LICENSE file. |
6 # | 6 # |
7 | 7 |
8 import optparse | 8 import optparse |
9 import os | 9 import os |
10 import re | 10 import re |
11 import shutil | 11 import shutil |
12 import subprocess | 12 import subprocess |
13 import sys | 13 import sys |
14 import utils | 14 import utils |
15 | 15 |
16 HOST_OS = utils.GuessOS() | 16 HOST_OS = utils.GuessOS() |
17 HOST_CPUS = utils.GuessCpus() | 17 HOST_CPUS = utils.GuessCpus() |
18 armcompilerlocation = '/opt/codesourcery/arm-2009q1' | |
19 SCRIPT_DIR = os.path.dirname(sys.argv[0]) | 18 SCRIPT_DIR = os.path.dirname(sys.argv[0]) |
20 DART_ROOT = os.path.realpath(os.path.join(SCRIPT_DIR, '..')) | 19 DART_ROOT = os.path.realpath(os.path.join(SCRIPT_DIR, '..')) |
21 THIRD_PARTY_ROOT = os.path.join(DART_ROOT, 'third_party') | 20 THIRD_PARTY_ROOT = os.path.join(DART_ROOT, 'third_party') |
22 | 21 |
| 22 arm_cc_error = """ |
| 23 Couldn't find the arm cross compiler. |
| 24 To make sure that you have the arm cross compilation tools installed, run: |
| 25 |
| 26 $ wget http://src.chromium.org/chrome/trunk/src/build/install-build-deps.sh |
| 27 OR |
| 28 $ svn co http://src.chromium.org/chrome/trunk/src/build; cd build |
| 29 Then, |
| 30 $ chmod u+x install-build-deps.sh |
| 31 $ ./install-build-deps.sh --arm --no-chromeos-fonts |
| 32 """ |
| 33 DEFAULT_ARM_CROSS_COMPILER_PATH = '/usr' |
| 34 |
23 def BuildOptions(): | 35 def BuildOptions(): |
24 result = optparse.OptionParser() | 36 result = optparse.OptionParser() |
25 result.add_option("-m", "--mode", | 37 result.add_option("-m", "--mode", |
26 help='Build variants (comma-separated).', | 38 help='Build variants (comma-separated).', |
27 metavar='[all,debug,release]', | 39 metavar='[all,debug,release]', |
28 default='debug') | 40 default='debug') |
29 result.add_option("-v", "--verbose", | 41 result.add_option("-v", "--verbose", |
30 help='Verbose output.', | 42 help='Verbose output.', |
31 default=False, action="store_true") | 43 default=False, action="store_true") |
32 result.add_option("-a", "--arch", | 44 result.add_option("-a", "--arch", |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 return False | 112 return False |
101 if 'v8' in args: | 113 if 'v8' in args: |
102 print "The v8 target is not supported for android builds." | 114 print "The v8 target is not supported for android builds." |
103 return False | 115 return False |
104 return True | 116 return True |
105 | 117 |
106 | 118 |
107 def SetTools(arch, toolchainprefix): | 119 def SetTools(arch, toolchainprefix): |
108 toolsOverride = None | 120 toolsOverride = None |
109 if arch == 'arm' and toolchainprefix == None: | 121 if arch == 'arm' and toolchainprefix == None: |
110 toolchainprefix = armcompilerlocation + "/bin/arm-none-linux-gnueabi" | 122 toolchainprefix = DEFAULT_ARM_CROSS_COMPILER_PATH + "/bin/arm-linux-gnueabi" |
111 if toolchainprefix: | 123 if toolchainprefix: |
112 toolsOverride = { | 124 toolsOverride = { |
113 "CC" : toolchainprefix + "-gcc", | 125 "CC.target" : toolchainprefix + "-gcc", |
114 "CXX" : toolchainprefix + "-g++", | 126 "CXX.target" : toolchainprefix + "-g++", |
115 "AR" : toolchainprefix + "-ar", | 127 "AR.target" : toolchainprefix + "-ar", |
116 "LINK": toolchainprefix + "-g++", | 128 "LINK.target": toolchainprefix + "-g++", |
117 "NM" : toolchainprefix + "-nm", | 129 "NM.target" : toolchainprefix + "-nm", |
118 } | 130 } |
119 return toolsOverride | 131 return toolsOverride |
120 | 132 |
121 | 133 |
122 def CheckDirExists(path, docstring): | 134 def CheckDirExists(path, docstring): |
123 if not os.path.isdir(path): | 135 if not os.path.isdir(path): |
124 raise Exception('Could not find %s directory %s' | 136 raise Exception('Could not find %s directory %s' |
125 % (docstring, path)) | 137 % (docstring, path)) |
126 | 138 |
127 | 139 |
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
406 if target_os == 'android': | 418 if target_os == 'android': |
407 toolchainprefix = ('%s/i686-linux-android' | 419 toolchainprefix = ('%s/i686-linux-android' |
408 % os.environ['ANDROID_TOOLCHAIN']) | 420 % os.environ['ANDROID_TOOLCHAIN']) |
409 toolsOverride = SetTools(arch, toolchainprefix) | 421 toolsOverride = SetTools(arch, toolchainprefix) |
410 if toolsOverride: | 422 if toolsOverride: |
411 printToolOverrides = target_os != 'android' | 423 printToolOverrides = target_os != 'android' |
412 for k, v in toolsOverride.iteritems(): | 424 for k, v in toolsOverride.iteritems(): |
413 args.append( k + "=" + v) | 425 args.append( k + "=" + v) |
414 if printToolOverrides: | 426 if printToolOverrides: |
415 print k + " = " + v | 427 print k + " = " + v |
| 428 if not os.path.isfile(toolsOverride['CC.target']): |
| 429 if arch == 'arm': |
| 430 print arm_cc_error |
| 431 else: |
| 432 print "Couldn't find compiler: %s" % toolsOverride['CC.target'] |
| 433 return 1 |
| 434 |
416 | 435 |
417 print ' '.join(args) | 436 print ' '.join(args) |
418 process = None | 437 process = None |
419 if filter_xcodebuild_output: | 438 if filter_xcodebuild_output: |
420 process = subprocess.Popen(args, | 439 process = subprocess.Popen(args, |
421 stdin=None, | 440 stdin=None, |
422 bufsize=1, # Line buffered. | 441 bufsize=1, # Line buffered. |
423 stdout=subprocess.PIPE, | 442 stdout=subprocess.PIPE, |
424 stderr=subprocess.STDOUT) | 443 stderr=subprocess.STDOUT) |
425 FilterEmptyXcodebuildSections(process) | 444 FilterEmptyXcodebuildSections(process) |
426 else: | 445 else: |
427 process = subprocess.Popen(args, stdin=None) | 446 process = subprocess.Popen(args, stdin=None) |
428 process.wait() | 447 process.wait() |
429 if process.returncode != 0: | 448 if process.returncode != 0: |
430 print "BUILD FAILED" | 449 print "BUILD FAILED" |
431 return 1 | 450 return 1 |
432 | 451 |
433 return 0 | 452 return 0 |
434 | 453 |
435 | 454 |
436 if __name__ == '__main__': | 455 if __name__ == '__main__': |
437 sys.exit(Main()) | 456 sys.exit(Main()) |
OLD | NEW |