Søren Gjesse | 6d9e155 | 2017-09-13 12:41:45 +0200 | [diff] [blame] | 1 | #!/usr/bin/env python |
| 2 | # Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file |
| 3 | # for details. All rights reserved. Use of this source code is governed by a |
| 4 | # BSD-style license that can be found in the LICENSE file. |
| 5 | |
| 6 | from os.path import join |
| 7 | from glob import glob |
| 8 | from itertools import chain |
Søren Gjesse | 370526a | 2017-09-14 10:39:04 +0200 | [diff] [blame] | 9 | from stat import S_IRWXU |
Søren Gjesse | 6d9e155 | 2017-09-13 12:41:45 +0200 | [diff] [blame] | 10 | import argparse |
| 11 | import multiprocessing |
| 12 | import os |
Søren Gjesse | 370526a | 2017-09-14 10:39:04 +0200 | [diff] [blame] | 13 | import re |
Søren Gjesse | 6d9e155 | 2017-09-13 12:41:45 +0200 | [diff] [blame] | 14 | import sys |
| 15 | |
| 16 | import gradle |
| 17 | import utils |
Søren Gjesse | 3330db2 | 2017-09-13 13:53:11 +0200 | [diff] [blame] | 18 | import utils_aosp |
Søren Gjesse | 6d9e155 | 2017-09-13 12:41:45 +0200 | [diff] [blame] | 19 | |
| 20 | J_DEFAULT = multiprocessing.cpu_count() - 2 |
| 21 | |
| 22 | EXIT_FAILURE = 1 |
| 23 | |
| 24 | def parse_arguments(): |
| 25 | parser = argparse.ArgumentParser( |
| 26 | description = 'Checkout the AOSP source tree.') |
Søren Gjesse | 3330db2 | 2017-09-13 13:53:11 +0200 | [diff] [blame] | 27 | utils_aosp.add_common_arguments(parser) |
Søren Gjesse | 6d9e155 | 2017-09-13 12:41:45 +0200 | [diff] [blame] | 28 | parser.add_argument('--tool', |
Søren Gjesse | adfde76 | 2017-10-13 09:51:38 +0200 | [diff] [blame] | 29 | choices = ['d8', 'r8', 'default'], |
Søren Gjesse | 3330db2 | 2017-09-13 13:53:11 +0200 | [diff] [blame] | 30 | default = 'd8', |
| 31 | help='Compiler tool to use. Defaults to d8.') |
Søren Gjesse | edd097d | 2017-09-18 17:10:15 +0200 | [diff] [blame] | 32 | parser.add_argument('--mmm', |
| 33 | action = 'store_true', |
| 34 | help='Use mmm instead of make') |
| 35 | parser.add_argument('--mmma', |
| 36 | action = 'store_true', |
| 37 | help='Use mmma instead of make') |
Søren Gjesse | adfde76 | 2017-10-13 09:51:38 +0200 | [diff] [blame] | 38 | parser.add_argument('--show-commands', |
Søren Gjesse | edd097d | 2017-09-18 17:10:15 +0200 | [diff] [blame] | 39 | action = 'store_true', |
Søren Gjesse | adfde76 | 2017-10-13 09:51:38 +0200 | [diff] [blame] | 40 | help='Show commands executed during build.') |
Søren Gjesse | 6d9e155 | 2017-09-13 12:41:45 +0200 | [diff] [blame] | 41 | parser.add_argument('-j', |
Søren Gjesse | 3330db2 | 2017-09-13 13:53:11 +0200 | [diff] [blame] | 42 | help='Projects to fetch simultaneously. ' + |
| 43 | 'Defaults to ' + str(J_DEFAULT) + '.', |
| 44 | type=int, |
Søren Gjesse | adfde76 | 2017-10-13 09:51:38 +0200 | [diff] [blame] | 45 | default=-1) |
Søren Gjesse | c727542 | 2017-09-14 18:28:44 +0200 | [diff] [blame] | 46 | parser.add_argument('target', nargs='?') |
Søren Gjesse | 6d9e155 | 2017-09-13 12:41:45 +0200 | [diff] [blame] | 47 | return parser.parse_args() |
| 48 | |
Søren Gjesse | adfde76 | 2017-10-13 09:51:38 +0200 | [diff] [blame] | 49 | def build_aosp(aosp_root, lunch, make, tool, |
| 50 | concurrency, target, show_commands): |
| 51 | d8_option = 'USE_D8=false' |
| 52 | if tool == 'd8' or tool == 'r8' : |
| 53 | d8_option = 'USE_D8=true' |
Søren Gjesse | 3330db2 | 2017-09-13 13:53:11 +0200 | [diff] [blame] | 54 | |
Søren Gjesse | adfde76 | 2017-10-13 09:51:38 +0200 | [diff] [blame] | 55 | r8_option = 'USE_R8=false' |
Søren Gjesse | 370526a | 2017-09-14 10:39:04 +0200 | [diff] [blame] | 56 | if tool == 'r8': |
Søren Gjesse | adfde76 | 2017-10-13 09:51:38 +0200 | [diff] [blame] | 57 | r8_option = 'USE_R8=true' |
Søren Gjesse | 370526a | 2017-09-14 10:39:04 +0200 | [diff] [blame] | 58 | |
Søren Gjesse | adfde76 | 2017-10-13 09:51:38 +0200 | [diff] [blame] | 59 | j_option = '-j' |
| 60 | if concurrency > 0: |
| 61 | j_option += str(concurrency) |
Søren Gjesse | 370526a | 2017-09-14 10:39:04 +0200 | [diff] [blame] | 62 | |
Søren Gjesse | adfde76 | 2017-10-13 09:51:38 +0200 | [diff] [blame] | 63 | command = [make, j_option] |
| 64 | if show_commands: |
| 65 | command.append('showcommands') |
| 66 | command.extend([d8_option, r8_option]) |
Søren Gjesse | c727542 | 2017-09-14 18:28:44 +0200 | [diff] [blame] | 67 | if target: |
| 68 | command.append(target) |
| 69 | |
Søren Gjesse | adfde76 | 2017-10-13 09:51:38 +0200 | [diff] [blame] | 70 | print 'Building using: ' + ' '.join(command) |
Søren Gjesse | c727542 | 2017-09-14 18:28:44 +0200 | [diff] [blame] | 71 | utils_aosp.run_through_aosp_helper(lunch, command, aosp_root) |
Søren Gjesse | 6d9e155 | 2017-09-13 12:41:45 +0200 | [diff] [blame] | 72 | |
| 73 | def Main(): |
| 74 | args = parse_arguments() |
| 75 | |
Søren Gjesse | adfde76 | 2017-10-13 09:51:38 +0200 | [diff] [blame] | 76 | make = 'm' |
Søren Gjesse | edd097d | 2017-09-18 17:10:15 +0200 | [diff] [blame] | 77 | if args.mmm: |
| 78 | make = 'mmm' |
| 79 | if args.mmma: |
| 80 | make = 'mmma' |
Søren Gjesse | adfde76 | 2017-10-13 09:51:38 +0200 | [diff] [blame] | 81 | build_aosp(args.aosp_root, args.lunch, make, args.tool, |
| 82 | args.j, args.target, args.show_commands) |
Søren Gjesse | 6d9e155 | 2017-09-13 12:41:45 +0200 | [diff] [blame] | 83 | |
| 84 | if __name__ == '__main__': |
| 85 | sys.exit(Main()) |