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  options = parser.parse_args(args)
29
30  options.bootclasspath = build_utils.ParseGnList(options.bootclasspath)
31  options.classpath = build_utils.ParseGnList(options.classpath)
32
33  cmd = [
34      build_utils.JAVA_PATH,
35      '-jar',
36      options.desugar_jar,
37      '--input',
38      options.input_jar,
39      '--output',
40      options.output_jar,
41      '--generate_base_classes_for_default_methods',
42      # Don't include try-with-resources files in every .jar. Instead, they
43      # are included via //third_party/bazel/desugar:desugar_runtime_java.
44      '--desugar_try_with_resources_omit_runtime_classes',
45  ]
46  for path in options.bootclasspath:
47    cmd += ['--bootclasspath_entry', path]
48  for path in options.classpath:
49    cmd += ['--classpath_entry', path]
50  build_utils.CheckOutput(
51      cmd,
52      print_stdout=False,
53      stderr_filter=build_utils.FilterReflectiveAccessJavaWarnings)
54
55  if options.depfile:
56    build_utils.WriteDepfile(
57        options.depfile,
58        options.output_jar,
59        inputs=options.bootclasspath + options.classpath,
60        add_pydeps=False)
61
62
63if __name__ == '__main__':
64  sys.exit(main())
65