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 shutil | 9 import shutil |
10 import subprocess | 10 import subprocess |
11 import sys | 11 import sys |
12 import time | 12 import time |
13 import utils | 13 import utils |
14 | 14 |
15 HOST_OS = utils.GuessOS() | 15 HOST_OS = utils.GuessOS() |
16 HOST_ARCH = utils.GuessArchitecture() | 16 HOST_ARCH = utils.GuessArchitecture() |
17 SCRIPT_DIR = os.path.dirname(sys.argv[0]) | 17 SCRIPT_DIR = os.path.dirname(sys.argv[0]) |
18 DART_ROOT = os.path.realpath(os.path.join(SCRIPT_DIR, '..')) | 18 DART_ROOT = os.path.realpath(os.path.join(SCRIPT_DIR, '..')) |
19 GN = os.path.join(DART_ROOT, 'buildtools', 'gn') | 19 GN = os.path.join(DART_ROOT, 'buildtools', 'gn') |
20 | 20 |
21 # Environment variables for default settings. | 21 # Environment variables for default settings. |
22 DART_USE_ASAN = "DART_USE_ASAN" # Use instead of --asan | 22 DART_USE_ASAN = "DART_USE_ASAN" # Use instead of --asan |
23 DART_USE_MSAN = "DART_USE_MSAN" # Use instead of --msan | 23 DART_USE_MSAN = "DART_USE_MSAN" # Use instead of --msan |
24 DART_USE_TSAN = "DART_USE_TSAN" # Use instead of --tsan | 24 DART_USE_TSAN = "DART_USE_TSAN" # Use instead of --tsan |
25 DART_USE_WHEEZY = "DART_USE_WHEEZY" # Use instread of --wheezy | 25 DART_USE_WHEEZY = "DART_USE_WHEEZY" # Use instread of --wheezy |
26 DART_USE_TOOLCHAIN = "DART_USE_TOOLCHAIN" # Use instread of --toolchain-prefix | 26 DART_USE_TOOLCHAIN = "DART_USE_TOOLCHAIN" # Use instread of --toolchain-prefix |
27 DART_USE_SYSROOT = "DART_USE_SYSROOT" # Use instead of --target-sysroot | 27 DART_USE_SYSROOT = "DART_USE_SYSROOT" # Use instead of --target-sysroot |
| 28 # use instead of --platform-sdk |
| 29 DART_MAKE_PLATFORM_SDK = "DART_MAKE_PLATFORM_SDK" |
28 | 30 |
29 def UseASAN(): | 31 def UseASAN(): |
30 return DART_USE_ASAN in os.environ | 32 return DART_USE_ASAN in os.environ |
31 | 33 |
32 | 34 |
33 def UseMSAN(): | 35 def UseMSAN(): |
34 return DART_USE_MSAN in os.environ | 36 return DART_USE_MSAN in os.environ |
35 | 37 |
36 | 38 |
37 def UseTSAN(): | 39 def UseTSAN(): |
38 return DART_USE_TSAN in os.environ | 40 return DART_USE_TSAN in os.environ |
39 | 41 |
40 | 42 |
41 def UseWheezy(): | 43 def UseWheezy(): |
42 return DART_USE_WHEEZY in os.environ | 44 return DART_USE_WHEEZY in os.environ |
43 | 45 |
44 | 46 |
45 def ToolchainPrefix(args): | 47 def ToolchainPrefix(args): |
46 if args.toolchain_prefix: | 48 if args.toolchain_prefix: |
47 return args.toolchain_prefix | 49 return args.toolchain_prefix |
48 return os.environ.get(DART_USE_TOOLCHAIN) | 50 return os.environ.get(DART_USE_TOOLCHAIN) |
49 | 51 |
50 | 52 |
51 def TargetSysroot(args): | 53 def TargetSysroot(args): |
52 if args.target_sysroot: | 54 if args.target_sysroot: |
53 return args.target_sysroot | 55 return args.target_sysroot |
54 return os.environ.get(DART_USE_SYSROOT) | 56 return os.environ.get(DART_USE_SYSROOT) |
55 | 57 |
56 | 58 |
| 59 def MakePlatformSDK(): |
| 60 return DART_MAKE_PLATFORM_SDK in os.environ |
| 61 |
| 62 |
57 def GetOutDir(mode, arch, target_os): | 63 def GetOutDir(mode, arch, target_os): |
58 return utils.GetBuildRoot(HOST_OS, mode, arch, target_os) | 64 return utils.GetBuildRoot(HOST_OS, mode, arch, target_os) |
59 | 65 |
60 | 66 |
61 def ToCommandLine(gn_args): | 67 def ToCommandLine(gn_args): |
62 def merge(key, value): | 68 def merge(key, value): |
63 if type(value) is bool: | 69 if type(value) is bool: |
64 return '%s=%s' % (key, 'true' if value else 'false') | 70 return '%s=%s' % (key, 'true' if value else 'false') |
65 return '%s="%s"' % (key, value) | 71 return '%s="%s"' % (key, value) |
66 return [merge(x, y) for x, y in gn_args.iteritems()] | 72 return [merge(x, y) for x, y in gn_args.iteritems()] |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
190 | 196 |
191 dont_use_clang = DontUseClang(args, gn_args['target_os'], | 197 dont_use_clang = DontUseClang(args, gn_args['target_os'], |
192 gn_args['host_cpu'], | 198 gn_args['host_cpu'], |
193 gn_args['target_cpu']) | 199 gn_args['target_cpu']) |
194 gn_args['is_clang'] = args.clang and not dont_use_clang | 200 gn_args['is_clang'] = args.clang and not dont_use_clang |
195 | 201 |
196 gn_args['is_asan'] = args.asan and gn_args['is_clang'] | 202 gn_args['is_asan'] = args.asan and gn_args['is_clang'] |
197 gn_args['is_msan'] = args.msan and gn_args['is_clang'] | 203 gn_args['is_msan'] = args.msan and gn_args['is_clang'] |
198 gn_args['is_tsan'] = args.tsan and gn_args['is_clang'] | 204 gn_args['is_tsan'] = args.tsan and gn_args['is_clang'] |
199 | 205 |
| 206 gn_args['dart_platform_sdk'] = args.platform_sdk |
| 207 |
200 # Setup the user-defined sysroot. | 208 # Setup the user-defined sysroot. |
201 if gn_args['target_os'] == 'linux' and args.wheezy and not crossbuild: | 209 if gn_args['target_os'] == 'linux' and args.wheezy and not crossbuild: |
202 gn_args['dart_use_wheezy_sysroot'] = True | 210 gn_args['dart_use_wheezy_sysroot'] = True |
203 else: | 211 else: |
204 sysroot = TargetSysroot(args) | 212 sysroot = TargetSysroot(args) |
205 if sysroot: | 213 if sysroot: |
206 gn_args['target_sysroot'] = ParseStringMap(arch, sysroot) | 214 gn_args['target_sysroot'] = ParseStringMap(arch, sysroot) |
207 | 215 |
208 toolchain = ToolchainPrefix(args) | 216 toolchain = ToolchainPrefix(args) |
209 if toolchain: | 217 if toolchain: |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
350 default=os_has_ide(HOST_OS), | 358 default=os_has_ide(HOST_OS), |
351 action='store_true') | 359 action='store_true') |
352 other_group.add_argument('--msan', | 360 other_group.add_argument('--msan', |
353 help='Build with MSAN', | 361 help='Build with MSAN', |
354 default=UseMSAN(), | 362 default=UseMSAN(), |
355 action='store_true') | 363 action='store_true') |
356 other_group.add_argument('--no-msan', | 364 other_group.add_argument('--no-msan', |
357 help='Disable MSAN', | 365 help='Disable MSAN', |
358 dest='msan', | 366 dest='msan', |
359 action='store_false') | 367 action='store_false') |
| 368 other_group.add_argument('--platform-sdk', |
| 369 help='Directs the create_sdk target to create a smaller "Platform" SDK', |
| 370 default=MakePlatformSDK(), |
| 371 action='store_true') |
360 other_group.add_argument('--target-sysroot', '-s', | 372 other_group.add_argument('--target-sysroot', '-s', |
361 type=str, | 373 type=str, |
362 help='Comma-separated list of arch=/path/to/sysroot mappings') | 374 help='Comma-separated list of arch=/path/to/sysroot mappings') |
363 other_group.add_argument('--toolchain-prefix', '-t', | 375 other_group.add_argument('--toolchain-prefix', '-t', |
364 type=str, | 376 type=str, |
365 help='Comma-separated list of arch=/path/to/toolchain-prefix mappings') | 377 help='Comma-separated list of arch=/path/to/toolchain-prefix mappings') |
366 other_group.add_argument('--tsan', | 378 other_group.add_argument('--tsan', |
367 help='Build with TSAN', | 379 help='Build with TSAN', |
368 default=UseTSAN(), | 380 default=UseTSAN(), |
369 action='store_true') | 381 action='store_true') |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
441 return 1 | 453 return 1 |
442 | 454 |
443 endtime = time.time() | 455 endtime = time.time() |
444 if args.verbose: | 456 if args.verbose: |
445 print ("GN Time: %.3f seconds" % (endtime - starttime)) | 457 print ("GN Time: %.3f seconds" % (endtime - starttime)) |
446 return 0 | 458 return 0 |
447 | 459 |
448 | 460 |
449 if __name__ == '__main__': | 461 if __name__ == '__main__': |
450 sys.exit(Main(sys.argv)) | 462 sys.exit(Main(sys.argv)) |
OLD | NEW |