blob: 5a2f5e310826996a01238e134a5937804bbed3f8 [file] [log] [blame]
#!/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:]))