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 | |
9 import shutil | 8 import shutil |
10 import sys | 9 import sys |
11 import utils | 10 import utils |
12 | 11 |
13 HOST_OS = utils.GuessOS() | |
14 | |
15 def BuildOptions(): | |
16 result = optparse.OptionParser() | |
17 result.add_option("-m", "--mode", | |
18 help='Build variants (comma-separated).', | |
19 metavar='[all,debug,release]', | |
20 default='all') | |
21 result.add_option("--arch", | |
22 help='Target architectures (comma-separated).', | |
23 metavar='[all,ia32,x64,simarm,arm]', | |
24 default='all') | |
25 result.add_option("--os", | |
26 help='Target OSs (comma-separated).', | |
27 metavar='[all,host,android]', | |
28 default='all') | |
29 return result | |
30 | |
31 | |
32 def ProcessOsOption(os): | |
33 if os == 'host': | |
34 return HOST_OS | |
35 return os | |
36 | |
37 | |
38 def ProcessOptions(options): | |
39 if options.arch == 'all': | |
40 options.arch = 'ia32,x64' | |
41 if options.mode == 'all': | |
42 options.mode = 'release,debug' | |
43 if options.os == 'all': | |
44 options.os = 'host,android' | |
45 options.mode = options.mode.split(',') | |
46 options.arch = options.arch.split(',') | |
47 options.os = options.os.split(',') | |
48 for mode in options.mode: | |
49 if not mode in ['debug', 'release']: | |
50 print "Unknown mode %s" % mode | |
51 return False | |
52 for arch in options.arch: | |
53 if not arch in ['ia32', 'x64', 'simarm', 'arm']: | |
54 print "Unknown arch %s" % arch | |
55 return False | |
56 options.os = [ProcessOsOption(os) for os in options.os] | |
57 for os in options.os: | |
58 if not os in ['android', 'freebsd', 'linux', 'macos', 'win32']: | |
59 print "Unknown os %s" % os | |
60 return False | |
61 return True | |
62 | |
63 def Main(): | 12 def Main(): |
64 parser = BuildOptions() | 13 build_root = utils.GetBuildRoot(utils.GuessOS()) |
65 (options, args) = parser.parse_args() | |
66 if not ProcessOptions(options): | |
67 parser.print_help() | |
68 return 1 | |
69 | |
70 build_root = utils.GetBuildDir(HOST_OS, None) | |
71 shutil.rmtree(build_root, ignore_errors=True) | 14 shutil.rmtree(build_root, ignore_errors=True) |
72 return 0 | 15 return 0 |
73 | 16 |
74 if __name__ == '__main__': | 17 if __name__ == '__main__': |
75 sys.exit(Main()) | 18 sys.exit(Main()) |
OLD | NEW |