|  | #!/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. | 
|  |  | 
|  | import optparse | 
|  | import sys | 
|  |  | 
|  | import toolhelper | 
|  | import utils | 
|  |  | 
|  |  | 
|  | def ParseOptions(argv): | 
|  | parser = optparse.OptionParser(usage='%prog [options] -- [R8 options]') | 
|  | parser.add_option('-c', | 
|  | '--commit-hash', | 
|  | '--commit_hash', | 
|  | help='Commit hash of R8 to use.', | 
|  | default=None) | 
|  | parser.add_option( | 
|  | '--debug-agent', | 
|  | help= | 
|  | 'Enable Java debug agent and suspend compilation (default disabled)', | 
|  | default=False, | 
|  | action='store_true') | 
|  | parser.add_option( | 
|  | '--ea', | 
|  | help= | 
|  | 'Enable Java assertions when running the compiler (default disabled)', | 
|  | default=False, | 
|  | action='store_true') | 
|  | parser.add_option('--lib-android', | 
|  | help='Add the android.jar for the given API level', | 
|  | default=None, | 
|  | type=int) | 
|  | parser.add_option('--lib-rt', | 
|  | help='Add rt.jar from openjdk-1.8', | 
|  | default=False, | 
|  | action='store_true') | 
|  | parser.add_option('--no-build', | 
|  | '--no_build', | 
|  | help='Do not build R8', | 
|  | default=False, | 
|  | action='store_true') | 
|  | parser.add_option('--print-runtimeraw', | 
|  | '--print_runtimeraw', | 
|  | metavar='BENCHMARKNAME', | 
|  | help='Print the line \'<BENCHMARKNAME>(RunTimeRaw):' + | 
|  | ' <elapsed> ms\' at the end where <elapsed> is' + | 
|  | ' the elapsed time in milliseconds.') | 
|  | parser.add_option('--tag', help='Tag of R8 to use.', default=None) | 
|  | parser.add_option('--version', help='Version of R8 to use.', default=None) | 
|  | return parser.parse_args(argv) | 
|  |  | 
|  |  | 
|  | def main(argv): | 
|  | (options, args) = ParseOptions(sys.argv) | 
|  | r8_args = args[1:] | 
|  | if options.lib_android: | 
|  | r8_args.extend(['--lib', utils.get_android_jar(options.lib_android)]) | 
|  | if options.lib_rt: | 
|  | r8_args.extend(['--lib', utils.RT_JAR]) | 
|  | time_consumer = lambda duration: print_duration(duration, options) | 
|  | return toolhelper.run('r8', | 
|  | r8_args, | 
|  | build=not options.no_build, | 
|  | debug=options.ea, | 
|  | debug_agent=options.debug_agent, | 
|  | jar=utils.find_r8_jar_from_options(options), | 
|  | main='com.android.tools.r8.R8', | 
|  | time_consumer=time_consumer) | 
|  |  | 
|  |  | 
|  | def print_duration(duration, options): | 
|  | benchmark_name = options.print_runtimeraw | 
|  | if benchmark_name: | 
|  | print('%s-Total(RunTimeRaw): %s ms' % (benchmark_name, duration)) | 
|  |  | 
|  |  | 
|  | if __name__ == '__main__': | 
|  | sys.exit(main(sys.argv[1:])) |