blob: a6bf42e160d91f7df9fd4fe0adc09e43ca78b8b8 [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('--disable-assertions',
'--disable_assertions',
help='Disable assertions when running',
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,
disable_assertions=options.disable_assertions,
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:]))