| Index: build/android/gyp/javac.py
|
| diff --git a/build/android/gyp/javac.py b/build/android/gyp/javac.py
|
| index 599f5883ec9274d2745c336c8f5eb6c0eb4b8316..ec2f22aa2b7ddaa667dc45bffc3efe8708f12756 100755
|
| --- a/build/android/gyp/javac.py
|
| +++ b/build/android/gyp/javac.py
|
| @@ -52,23 +52,22 @@ def ColorJavacOutput(output):
|
|
|
| return '\n'.join(map(ApplyColor, output.split('\n')))
|
|
|
| +
|
| def DoJavac(
|
| - classpath, javac_includes, classes_dir, chromium_code, java_files):
|
| - if javac_includes:
|
| - javac_includes = build_utils.ParseGypList(javac_includes)
|
| - filtered_java_files = []
|
| - for f in java_files:
|
| - for include in javac_includes:
|
| - if fnmatch.fnmatch(f, include):
|
| - filtered_java_files.append(f)
|
| - break
|
| - java_files = filtered_java_files
|
| + classpath, classes_dir, chromium_code, java_files):
|
| + """Runs javac.
|
| +
|
| + Builds |java_files| with the provided |classpath| and puts the generated
|
| + .class files into |classes_dir|. If |chromium_code| is true, extra lint
|
| + checking will be enabled.
|
| + """
|
|
|
| # Compiling guava with certain orderings of input files causes a compiler
|
| # crash... Sorted order works, so use that.
|
| # See https://code.google.com/p/guava-libraries/issues/detail?id=950
|
| + # TODO(cjhopman): Remove this when we have update guava or the compiler to a
|
| + # version without this problem.
|
| java_files.sort()
|
| - classpath = build_utils.ParseGypList(classpath)
|
|
|
| jar_inputs = []
|
| for path in classpath:
|
| @@ -107,22 +106,32 @@ def DoJavac(
|
| input_strings=javac_cmd)
|
|
|
|
|
| -def main():
|
| +def main(argv):
|
| colorama.init()
|
|
|
| + argv = build_utils.ExpandFileArgs(argv)
|
| +
|
| parser = optparse.OptionParser()
|
| build_utils.AddDepfileOption(parser)
|
|
|
| parser.add_option(
|
| '--src-gendirs',
|
| help='Directories containing generated java files.')
|
| - parser.add_option('--classpath', help='Classpath for javac.')
|
| + parser.add_option(
|
| + '--java-srcjars',
|
| + help='List of srcjars to include in compilation.')
|
| + parser.add_option(
|
| + '--classpath',
|
| + action='append',
|
| + help='Classpath for javac. If this is specified multiple times, they '
|
| + 'will all be appended to construct the classpath.')
|
| parser.add_option(
|
| '--javac-includes',
|
| - help='A list of file patterns. If provided, only java files that match' +
|
| + help='A list of file patterns. If provided, only java files that match'
|
| 'one of the patterns will be compiled.')
|
| parser.add_option(
|
| '--jar-excluded-classes',
|
| + default='',
|
| help='List of .class file patterns to exclude from the jar.')
|
|
|
| parser.add_option(
|
| @@ -138,17 +147,39 @@ def main():
|
|
|
| parser.add_option('--stamp', help='Path to touch on success.')
|
|
|
| - options, args = parser.parse_args()
|
| + options, args = parser.parse_args(argv)
|
| +
|
| + classpath = []
|
| + for arg in options.classpath:
|
| + classpath += build_utils.ParseGypList(arg)
|
|
|
| java_files = args
|
| if options.src_gendirs:
|
| src_gendirs = build_utils.ParseGypList(options.src_gendirs)
|
| java_files += build_utils.FindInDirectories(src_gendirs, '*.java')
|
|
|
| - with build_utils.TempDir() as classes_dir:
|
| + with build_utils.TempDir() as temp_dir:
|
| + classes_dir = os.path.join(temp_dir, 'classes')
|
| + os.makedirs(classes_dir)
|
| + if options.java_srcjars:
|
| + java_dir = os.path.join(temp_dir, 'java')
|
| + os.makedirs(java_dir)
|
| + for srcjar in build_utils.ParseGypList(options.java_srcjars):
|
| + build_utils.ExtractAll(srcjar, path=java_dir)
|
| + java_files += build_utils.FindInDirectory(java_dir, '*.java')
|
| +
|
| + if options.javac_includes:
|
| + javac_includes = build_utils.ParseGypList(options.javac_includes)
|
| + filtered_java_files = []
|
| + for f in java_files:
|
| + for include in javac_includes:
|
| + if fnmatch.fnmatch(f, include):
|
| + filtered_java_files.append(f)
|
| + break
|
| + java_files = filtered_java_files
|
| +
|
| DoJavac(
|
| - options.classpath,
|
| - options.javac_includes,
|
| + classpath,
|
| classes_dir,
|
| options.chromium_code,
|
| java_files)
|
| @@ -170,13 +201,13 @@ def main():
|
| if options.depfile:
|
| build_utils.WriteDepfile(
|
| options.depfile,
|
| - build_utils.GetPythonDependencies())
|
| + classpath + build_utils.GetPythonDependencies())
|
|
|
| if options.stamp:
|
| build_utils.Touch(options.stamp)
|
|
|
|
|
| if __name__ == '__main__':
|
| - sys.exit(main())
|
| + sys.exit(main(sys.argv[1:]))
|
|
|
|
|
|
|