OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # | 2 # |
3 # Copyright 2013 The Chromium Authors. All rights reserved. | 3 # Copyright 2013 The Chromium Authors. All rights reserved. |
4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
6 | 6 |
7 import optparse | 7 import optparse |
8 import os | 8 import os |
9 import shutil | 9 import shutil |
10 import re | 10 import re |
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
221 elif options.incremental: | 221 elif options.incremental: |
222 # Make sure output exists. | 222 # Make sure output exists. |
223 build_utils.Touch(pdb_path) | 223 build_utils.Touch(pdb_path) |
224 | 224 |
225 glob = options.jar_excluded_classes | 225 glob = options.jar_excluded_classes |
226 inclusion_predicate = lambda f: not build_utils.MatchesGlob(f, glob) | 226 inclusion_predicate = lambda f: not build_utils.MatchesGlob(f, glob) |
227 exclusion_predicate = lambda f: not inclusion_predicate(f) | 227 exclusion_predicate = lambda f: not inclusion_predicate(f) |
228 | 228 |
229 jar.JarDirectory(classes_dir, | 229 jar.JarDirectory(classes_dir, |
230 options.jar_path, | 230 options.jar_path, |
231 predicate=inclusion_predicate) | 231 predicate=inclusion_predicate, |
| 232 provider_configurations=options.provider_configurations) |
232 jar.JarDirectory(classes_dir, | 233 jar.JarDirectory(classes_dir, |
233 excluded_jar_path, | 234 excluded_jar_path, |
234 predicate=exclusion_predicate) | 235 predicate=exclusion_predicate, |
| 236 provider_configurations=options.provider_configurations) |
235 | 237 |
236 | 238 |
237 def _ParseOptions(argv): | 239 def _ParseOptions(argv): |
238 parser = optparse.OptionParser() | 240 parser = optparse.OptionParser() |
239 build_utils.AddDepfileOption(parser) | 241 build_utils.AddDepfileOption(parser) |
240 | 242 |
241 parser.add_option( | 243 parser.add_option( |
242 '--src-gendirs', | 244 '--src-gendirs', |
243 help='Directories containing generated java files.') | 245 help='Directories containing generated java files.') |
244 parser.add_option( | 246 parser.add_option( |
(...skipping 20 matching lines...) Expand all Loading... |
265 parser.add_option( | 267 parser.add_option( |
266 '--javac-includes', | 268 '--javac-includes', |
267 default='', | 269 default='', |
268 help='A list of file patterns. If provided, only java files that match' | 270 help='A list of file patterns. If provided, only java files that match' |
269 'one of the patterns will be compiled.') | 271 'one of the patterns will be compiled.') |
270 parser.add_option( | 272 parser.add_option( |
271 '--jar-excluded-classes', | 273 '--jar-excluded-classes', |
272 default='', | 274 default='', |
273 help='List of .class file patterns to exclude from the jar.') | 275 help='List of .class file patterns to exclude from the jar.') |
274 parser.add_option( | 276 parser.add_option( |
| 277 '--processor', |
| 278 dest='processors', |
| 279 action='append', |
| 280 help='Annotation processor to use.') |
| 281 parser.add_option( |
| 282 '--processor-arg', |
| 283 dest='processor_args', |
| 284 action='append', |
| 285 help='key=value arguments for the annotation processors.') |
| 286 parser.add_option( |
| 287 '--provider-configuration', |
| 288 dest='provider_configurations', |
| 289 action='append', |
| 290 help='File to specify a service provider. Will be included ' |
| 291 'in the jar under META-INF/services.') |
| 292 parser.add_option( |
275 '--chromium-code', | 293 '--chromium-code', |
276 type='int', | 294 type='int', |
277 help='Whether code being compiled should be built with stricter ' | 295 help='Whether code being compiled should be built with stricter ' |
278 'warnings for chromium code.') | 296 'warnings for chromium code.') |
279 parser.add_option( | 297 parser.add_option( |
280 '--use-errorprone-path', | 298 '--use-errorprone-path', |
281 help='Use the Errorprone compiler at this path.') | 299 help='Use the Errorprone compiler at this path.') |
282 parser.add_option('--jar-path', help='Jar output path.') | 300 parser.add_option('--jar-path', help='Jar output path.') |
283 parser.add_option('--stamp', help='Path to touch on success.') | 301 parser.add_option('--stamp', help='Path to touch on success.') |
284 | 302 |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
343 ]) | 361 ]) |
344 | 362 |
345 if options.chromium_code: | 363 if options.chromium_code: |
346 javac_cmd.extend(['-Xlint:unchecked', '-Xlint:deprecation']) | 364 javac_cmd.extend(['-Xlint:unchecked', '-Xlint:deprecation']) |
347 else: | 365 else: |
348 # XDignore.symbol.file makes javac compile against rt.jar instead of | 366 # XDignore.symbol.file makes javac compile against rt.jar instead of |
349 # ct.sym. This means that using a java internal package/class will not | 367 # ct.sym. This means that using a java internal package/class will not |
350 # trigger a compile warning or error. | 368 # trigger a compile warning or error. |
351 javac_cmd.extend(['-XDignore.symbol.file']) | 369 javac_cmd.extend(['-XDignore.symbol.file']) |
352 | 370 |
| 371 if options.processors: |
| 372 javac_cmd.extend(['-processor', ','.join(options.processors)]) |
| 373 if options.processor_args: |
| 374 for arg in options.processor_args: |
| 375 javac_cmd.extend(['-A%s' % arg]) |
| 376 |
353 classpath_inputs = options.bootclasspath | 377 classpath_inputs = options.bootclasspath |
354 if options.classpath: | 378 if options.classpath: |
355 if options.classpath[0].endswith('.interface.jar'): | 379 if options.classpath[0].endswith('.interface.jar'): |
356 classpath_inputs.extend(options.classpath) | 380 classpath_inputs.extend(options.classpath) |
357 else: | 381 else: |
358 # TODO(agrieve): Remove this .TOC heuristic once GYP is no more. | 382 # TODO(agrieve): Remove this .TOC heuristic once GYP is no more. |
359 for path in options.classpath: | 383 for path in options.classpath: |
360 if os.path.exists(path + '.TOC'): | 384 if os.path.exists(path + '.TOC'): |
361 classpath_inputs.append(path + '.TOC') | 385 classpath_inputs.append(path + '.TOC') |
362 else: | 386 else: |
(...skipping 21 matching lines...) Expand all Loading... |
384 options, | 408 options, |
385 input_paths=input_paths, | 409 input_paths=input_paths, |
386 input_strings=javac_cmd, | 410 input_strings=javac_cmd, |
387 output_paths=output_paths, | 411 output_paths=output_paths, |
388 force=force, | 412 force=force, |
389 pass_changes=True) | 413 pass_changes=True) |
390 | 414 |
391 | 415 |
392 if __name__ == '__main__': | 416 if __name__ == '__main__': |
393 sys.exit(main(sys.argv[1:])) | 417 sys.exit(main(sys.argv[1:])) |
OLD | NEW |