|  | #!/usr/bin/env python3 | 
|  | # Copyright 2016 The Dart project authors. All rights reserved. | 
|  | # Use of this source code is governed by a BSD-style license that can be | 
|  | # found in the LICENSE file. | 
|  |  | 
|  | import argparse | 
|  | import os | 
|  | import subprocess | 
|  | import sys | 
|  | import utils | 
|  |  | 
|  | HOST_OS = utils.GuessOS() | 
|  | SCRIPT_DIR = os.path.dirname(sys.argv[0]) | 
|  | DART_ROOT = os.path.realpath(os.path.join(SCRIPT_DIR, '..')) | 
|  | DART_DISABLE_BUILDFILES = "DART_DISABLE_BUILDFILES" | 
|  |  | 
|  |  | 
|  | def DisableBuildfiles(): | 
|  | return DART_DISABLE_BUILDFILES in os.environ | 
|  |  | 
|  |  | 
|  | def Execute(args): | 
|  | process = subprocess.Popen(args, cwd=DART_ROOT) | 
|  | process.wait() | 
|  | return process.returncode | 
|  |  | 
|  |  | 
|  | def RunAndroidGn(options): | 
|  | if not HOST_OS in ['linux', 'macos']: | 
|  | return 0 | 
|  | gn_command = [ | 
|  | 'python3', | 
|  | os.path.join(DART_ROOT, 'tools', 'gn.py'), | 
|  | '-m', | 
|  | 'all', | 
|  | '-a', | 
|  | 'arm,arm64', | 
|  | '--os', | 
|  | 'android', | 
|  | ] | 
|  | if options.verbose: | 
|  | gn_command.append('-v') | 
|  | print(' '.join(gn_command)) | 
|  | return Execute(gn_command) | 
|  |  | 
|  |  | 
|  | def RunCrossGn(options): | 
|  | if HOST_OS != 'linux': | 
|  | return 0 | 
|  | gn_command = [ | 
|  | 'python3', | 
|  | os.path.join(DART_ROOT, 'tools', 'gn.py'), | 
|  | '-m', | 
|  | 'all', | 
|  | '-a', | 
|  | 'arm,arm64', | 
|  | ] | 
|  | if options.verbose: | 
|  | gn_command.append('-v') | 
|  | print(' '.join(gn_command)) | 
|  | return Execute(gn_command) | 
|  |  | 
|  |  | 
|  | def RunHostGn(options): | 
|  | gn_command = [ | 
|  | 'python3', | 
|  | os.path.join(DART_ROOT, 'tools', 'gn.py'), | 
|  | '-m', | 
|  | 'all', | 
|  | '-a', | 
|  | 'all', | 
|  | ] | 
|  | if options.verbose: | 
|  | gn_command.append('-v') | 
|  | print(' '.join(gn_command)) | 
|  | return Execute(gn_command) | 
|  |  | 
|  |  | 
|  | def RunGn(options): | 
|  | status = RunHostGn(options) | 
|  | if status != 0: | 
|  | return status | 
|  | status = RunCrossGn(options) | 
|  | if status != 0: | 
|  | return status | 
|  | return RunAndroidGn(options) | 
|  |  | 
|  |  | 
|  | def ParseArgs(args): | 
|  | args = args[1:] | 
|  | parser = argparse.ArgumentParser( | 
|  | description="A script to generate Dart's build files.") | 
|  |  | 
|  | parser.add_argument( | 
|  | "-v", | 
|  | "--verbose", | 
|  | help='Verbose output.', | 
|  | default=False, | 
|  | action="store_true") | 
|  |  | 
|  | return parser.parse_args(args) | 
|  |  | 
|  |  | 
|  | def main(argv): | 
|  | # Check the environment and become a no-op if directed. | 
|  | if DisableBuildfiles(): | 
|  | return 0 | 
|  | options = ParseArgs(argv) | 
|  | RunGn(options) | 
|  |  | 
|  |  | 
|  | if __name__ == '__main__': | 
|  | sys.exit(main(sys.argv)) |