|  | #!/usr/bin/env python3 | 
|  | # Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file | 
|  | # for details. All rights reserved. Use of this source code is governed by a | 
|  | # BSD-style license that can be found in the LICENSE file. | 
|  |  | 
|  | from os.path import join | 
|  | from glob import glob | 
|  | from itertools import chain | 
|  | from stat import S_IRWXU | 
|  | import argparse | 
|  | import multiprocessing | 
|  | import os | 
|  | import re | 
|  | import sys | 
|  |  | 
|  | import gradle | 
|  | import utils | 
|  | import utils_aosp | 
|  |  | 
|  | J_DEFAULT = multiprocessing.cpu_count() - 2 | 
|  |  | 
|  | EXIT_FAILURE = 1 | 
|  |  | 
|  | def parse_arguments(): | 
|  | parser = argparse.ArgumentParser( | 
|  | description = 'Checkout the AOSP source tree.') | 
|  | utils_aosp.add_common_arguments(parser) | 
|  | parser.add_argument('--tool', | 
|  | choices = ['d8', 'r8', 'default'], | 
|  | default = 'd8', | 
|  | help='Compiler tool to use. Defaults to d8.') | 
|  | parser.add_argument('--mmm', | 
|  | action = 'store_true', | 
|  | help='Use mmm instead of make') | 
|  | parser.add_argument('--mmma', | 
|  | action = 'store_true', | 
|  | help='Use mmma instead of make') | 
|  | parser.add_argument('--show-commands', | 
|  | action = 'store_true', | 
|  | help='Show commands executed during build.') | 
|  | parser.add_argument('-j', | 
|  | help='Projects to fetch simultaneously. ' + | 
|  | 'Defaults to ' + str(J_DEFAULT) + '.', | 
|  | type=int, | 
|  | default=-1) | 
|  | parser.add_argument('target', nargs='?') | 
|  | return parser.parse_args() | 
|  |  | 
|  | def build_aosp(aosp_root, lunch, make, tool, | 
|  | concurrency, target, show_commands): | 
|  | d8_option = 'USE_D8=false' | 
|  | if tool == 'd8' or tool == 'r8' : | 
|  | d8_option = 'USE_D8=true' | 
|  |  | 
|  | r8_option = 'USE_R8=false' | 
|  | if tool == 'r8': | 
|  | r8_option = 'USE_R8=true' | 
|  |  | 
|  | j_option = '-j' | 
|  | if concurrency > 0: | 
|  | j_option += str(concurrency) | 
|  |  | 
|  | command = [make, j_option] | 
|  | if show_commands: | 
|  | command.append('showcommands') | 
|  | command.extend([d8_option, r8_option]) | 
|  | if target: | 
|  | command.append(target) | 
|  |  | 
|  | print 'Building using: ' + ' '.join(command) | 
|  | utils_aosp.run_through_aosp_helper(lunch, command, aosp_root) | 
|  |  | 
|  | def Main(): | 
|  | args = parse_arguments() | 
|  |  | 
|  | make = 'm' | 
|  | if args.mmm: | 
|  | make = 'mmm' | 
|  | if args.mmma: | 
|  | make = 'mmma' | 
|  | build_aosp(args.aosp_root, args.lunch, make, args.tool, | 
|  | args.j, args.target, args.show_commands) | 
|  |  | 
|  | if __name__ == '__main__': | 
|  | sys.exit(Main()) |