blob: b62ec023fdfd148a2e7c6a398f3871020b8251d7 [file] [log] [blame]
Søren Gjesse6d9e1552017-09-13 12:41:45 +02001#!/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
6from os.path import join
7from glob import glob
8from itertools import chain
Søren Gjesse370526a2017-09-14 10:39:04 +02009from stat import S_IRWXU
Søren Gjesse6d9e1552017-09-13 12:41:45 +020010import argparse
11import multiprocessing
12import os
Søren Gjesse370526a2017-09-14 10:39:04 +020013import re
Søren Gjesse6d9e1552017-09-13 12:41:45 +020014import sys
15
16import gradle
17import utils
Søren Gjesse3330db22017-09-13 13:53:11 +020018import utils_aosp
Søren Gjesse6d9e1552017-09-13 12:41:45 +020019
20J_DEFAULT = multiprocessing.cpu_count() - 2
21
22EXIT_FAILURE = 1
23
24def parse_arguments():
25 parser = argparse.ArgumentParser(
26 description = 'Checkout the AOSP source tree.')
Søren Gjesse3330db22017-09-13 13:53:11 +020027 utils_aosp.add_common_arguments(parser)
Søren Gjesse6d9e1552017-09-13 12:41:45 +020028 parser.add_argument('--tool',
Søren Gjesseadfde762017-10-13 09:51:38 +020029 choices = ['d8', 'r8', 'default'],
Søren Gjesse3330db22017-09-13 13:53:11 +020030 default = 'd8',
31 help='Compiler tool to use. Defaults to d8.')
Søren Gjesseedd097d2017-09-18 17:10:15 +020032 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 Gjesseadfde762017-10-13 09:51:38 +020038 parser.add_argument('--show-commands',
Søren Gjesseedd097d2017-09-18 17:10:15 +020039 action = 'store_true',
Søren Gjesseadfde762017-10-13 09:51:38 +020040 help='Show commands executed during build.')
Søren Gjesse6d9e1552017-09-13 12:41:45 +020041 parser.add_argument('-j',
Søren Gjesse3330db22017-09-13 13:53:11 +020042 help='Projects to fetch simultaneously. ' +
43 'Defaults to ' + str(J_DEFAULT) + '.',
44 type=int,
Søren Gjesseadfde762017-10-13 09:51:38 +020045 default=-1)
Søren Gjessec7275422017-09-14 18:28:44 +020046 parser.add_argument('target', nargs='?')
Søren Gjesse6d9e1552017-09-13 12:41:45 +020047 return parser.parse_args()
48
Søren Gjesseadfde762017-10-13 09:51:38 +020049def 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 Gjesse3330db22017-09-13 13:53:11 +020054
Søren Gjesseadfde762017-10-13 09:51:38 +020055 r8_option = 'USE_R8=false'
Søren Gjesse370526a2017-09-14 10:39:04 +020056 if tool == 'r8':
Søren Gjesseadfde762017-10-13 09:51:38 +020057 r8_option = 'USE_R8=true'
Søren Gjesse370526a2017-09-14 10:39:04 +020058
Søren Gjesseadfde762017-10-13 09:51:38 +020059 j_option = '-j'
60 if concurrency > 0:
61 j_option += str(concurrency)
Søren Gjesse370526a2017-09-14 10:39:04 +020062
Søren Gjesseadfde762017-10-13 09:51:38 +020063 command = [make, j_option]
64 if show_commands:
65 command.append('showcommands')
66 command.extend([d8_option, r8_option])
Søren Gjessec7275422017-09-14 18:28:44 +020067 if target:
68 command.append(target)
69
Søren Gjesseadfde762017-10-13 09:51:38 +020070 print 'Building using: ' + ' '.join(command)
Søren Gjessec7275422017-09-14 18:28:44 +020071 utils_aosp.run_through_aosp_helper(lunch, command, aosp_root)
Søren Gjesse6d9e1552017-09-13 12:41:45 +020072
73def Main():
74 args = parse_arguments()
75
Søren Gjesseadfde762017-10-13 09:51:38 +020076 make = 'm'
Søren Gjesseedd097d2017-09-18 17:10:15 +020077 if args.mmm:
78 make = 'mmm'
79 if args.mmma:
80 make = 'mmma'
Søren Gjesseadfde762017-10-13 09:51:38 +020081 build_aosp(args.aosp_root, args.lunch, make, args.tool,
82 args.j, args.target, args.show_commands)
Søren Gjesse6d9e1552017-09-13 12:41:45 +020083
84if __name__ == '__main__':
85 sys.exit(Main())