| #!/usr/bin/env python3 |
| # |
| # Copyright 2017 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import argparse |
| import os |
| import sys |
| |
| from util import build_utils |
| |
| |
| def main(): |
| args = build_utils.ExpandFileArgs(sys.argv[1:]) |
| parser = argparse.ArgumentParser() |
| build_utils.AddDepfileOption(parser) |
| parser.add_argument('--desugar-jar', required=True, |
| help='Path to Desugar.jar.') |
| parser.add_argument('--input-jar', required=True, |
| help='Jar input path to include .class files from.') |
| parser.add_argument('--output-jar', required=True, |
| help='Jar output path.') |
| parser.add_argument('--classpath', |
| action='append', |
| required=True, |
| help='Classpath.') |
| parser.add_argument('--bootclasspath', required=True, |
| help='Path to javac bootclasspath interface jar.') |
| parser.add_argument('--warnings-as-errors', |
| action='store_true', |
| help='Treat all warnings as errors.') |
| options = parser.parse_args(args) |
| |
| options.bootclasspath = build_utils.ParseGnList(options.bootclasspath) |
| options.classpath = build_utils.ParseGnList(options.classpath) |
| |
| cmd = build_utils.JavaCmd(options.warnings_as_errors) + [ |
| '-jar', |
| options.desugar_jar, |
| '--input', |
| options.input_jar, |
| '--output', |
| options.output_jar, |
| '--generate_base_classes_for_default_methods', |
| # Don't include try-with-resources files in every .jar. Instead, they |
| # are included via //third_party/bazel/desugar:desugar_runtime_java. |
| '--desugar_try_with_resources_omit_runtime_classes', |
| ] |
| for path in options.bootclasspath: |
| cmd += ['--bootclasspath_entry', path] |
| for path in options.classpath: |
| cmd += ['--classpath_entry', path] |
| build_utils.CheckOutput( |
| cmd, |
| print_stdout=False, |
| stderr_filter=build_utils.FilterReflectiveAccessJavaWarnings, |
| fail_on_output=options.warnings_as_errors) |
| |
| if options.depfile: |
| build_utils.WriteDepfile(options.depfile, |
| options.output_jar, |
| inputs=options.bootclasspath + options.classpath) |
| |
| |
| if __name__ == '__main__': |
| sys.exit(main()) |