1#!/usr/bin/env python 2# 3# Copyright 2017 The Chromium Authors. All rights reserved. 4# Use of this source code is governed by a BSD-style license that can be 5# found in the LICENSE file. 6 7import argparse 8import os 9import sys 10 11from util import build_utils 12 13 14def main(): 15 args = build_utils.ExpandFileArgs(sys.argv[1:]) 16 parser = argparse.ArgumentParser() 17 build_utils.AddDepfileOption(parser) 18 parser.add_argument('--desugar-jar', required=True, 19 help='Path to Desugar.jar.') 20 parser.add_argument('--input-jar', required=True, 21 help='Jar input path to include .class files from.') 22 parser.add_argument('--output-jar', required=True, 23 help='Jar output path.') 24 parser.add_argument('--classpath', required=True, 25 help='Classpath.') 26 parser.add_argument('--bootclasspath', required=True, 27 help='Path to javac bootclasspath interface jar.') 28 parser.add_argument('--warnings-as-errors', 29 action='store_true', 30 help='Treat all warnings as errors.') 31 options = parser.parse_args(args) 32 33 options.bootclasspath = build_utils.ParseGnList(options.bootclasspath) 34 options.classpath = build_utils.ParseGnList(options.classpath) 35 36 cmd = build_utils.JavaCmd(options.warnings_as_errors) + [ 37 '-jar', 38 options.desugar_jar, 39 '--input', 40 options.input_jar, 41 '--output', 42 options.output_jar, 43 '--generate_base_classes_for_default_methods', 44 # Don't include try-with-resources files in every .jar. Instead, they 45 # are included via //third_party/bazel/desugar:desugar_runtime_java. 46 '--desugar_try_with_resources_omit_runtime_classes', 47 ] 48 for path in options.bootclasspath: 49 cmd += ['--bootclasspath_entry', path] 50 for path in options.classpath: 51 cmd += ['--classpath_entry', path] 52 build_utils.CheckOutput( 53 cmd, 54 print_stdout=False, 55 stderr_filter=build_utils.FilterReflectiveAccessJavaWarnings, 56 fail_on_output=options.warnings_as_errors) 57 58 if options.depfile: 59 build_utils.WriteDepfile(options.depfile, 60 options.output_jar, 61 inputs=options.bootclasspath + options.classpath) 62 63 64if __name__ == '__main__': 65 sys.exit(main()) 66