OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # | 2 # |
3 # Copyright 2014 The Chromium Authors. All rights reserved. | 3 # Copyright 2014 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 """Writes a build_config file. | 7 """Writes a build_config file. |
8 | 8 |
9 The build_config file for a target is a json file containing information about | 9 The build_config file for a target is a json file containing information about |
10 how to build that target based on the target's dependencies. This includes | 10 how to build that target based on the target's dependencies. This includes |
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
226 '--deps-configs', | 226 '--deps-configs', |
227 help='List of paths for dependency\'s build_config files. ') | 227 help='List of paths for dependency\'s build_config files. ') |
228 | 228 |
229 # android_resources options | 229 # android_resources options |
230 parser.add_option('--srcjar', help='Path to target\'s resources srcjar.') | 230 parser.add_option('--srcjar', help='Path to target\'s resources srcjar.') |
231 parser.add_option('--resources-zip', help='Path to target\'s resources zip.') | 231 parser.add_option('--resources-zip', help='Path to target\'s resources zip.') |
232 parser.add_option('--r-text', help='Path to target\'s R.txt file.') | 232 parser.add_option('--r-text', help='Path to target\'s R.txt file.') |
233 parser.add_option('--package-name', | 233 parser.add_option('--package-name', |
234 help='Java package name for these resources.') | 234 help='Java package name for these resources.') |
235 parser.add_option('--android-manifest', help='Path to android manifest.') | 235 parser.add_option('--android-manifest', help='Path to android manifest.') |
236 parser.add_option('--is-locale-resource', action='store_true', | |
237 help='Whether it is locale resource.') | |
238 parser.add_option('--resource-dirs', action='append', default=[], | 236 parser.add_option('--resource-dirs', action='append', default=[], |
239 help='GYP-list of resource dirs') | 237 help='GYP-list of resource dirs') |
240 | 238 |
241 # android_assets options | 239 # android_assets options |
242 parser.add_option('--asset-sources', help='List of asset sources.') | 240 parser.add_option('--asset-sources', help='List of asset sources.') |
243 parser.add_option('--asset-renaming-sources', | 241 parser.add_option('--asset-renaming-sources', |
244 help='List of asset sources with custom destinations.') | 242 help='List of asset sources with custom destinations.') |
245 parser.add_option('--asset-renaming-destinations', | 243 parser.add_option('--asset-renaming-destinations', |
246 help='List of asset custom destinations.') | 244 help='List of asset custom destinations.') |
247 parser.add_option('--disable-asset-compression', action='store_true', | 245 parser.add_option('--disable-asset-compression', action='store_true', |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
283 | 281 |
284 parser.add_option('--tested-apk-config', | 282 parser.add_option('--tested-apk-config', |
285 help='Path to the build config of the tested apk (for an instrumentation ' | 283 help='Path to the build config of the tested apk (for an instrumentation ' |
286 'test apk).') | 284 'test apk).') |
287 parser.add_option('--proguard-enabled', action='store_true', | 285 parser.add_option('--proguard-enabled', action='store_true', |
288 help='Whether proguard is enabled for this apk.') | 286 help='Whether proguard is enabled for this apk.') |
289 parser.add_option('--proguard-configs', | 287 parser.add_option('--proguard-configs', |
290 help='GYP-list of proguard flag files to use in final apk.') | 288 help='GYP-list of proguard flag files to use in final apk.') |
291 parser.add_option('--proguard-info', | 289 parser.add_option('--proguard-info', |
292 help='Path to the proguard .info output for this apk.') | 290 help='Path to the proguard .info output for this apk.') |
293 parser.add_option('--has-alternative-locale-resource', action='store_true', | |
294 help='Whether there is alternative-locale-resource in direct deps') | |
295 parser.add_option('--fail', | 291 parser.add_option('--fail', |
296 help='GYP-list of error message lines to fail with.') | 292 help='GYP-list of error message lines to fail with.') |
297 | 293 |
298 options, args = parser.parse_args(argv) | 294 options, args = parser.parse_args(argv) |
299 | 295 |
300 if args: | 296 if args: |
301 parser.error('No positional arguments should be given.') | 297 parser.error('No positional arguments should be given.') |
302 if options.fail: | 298 if options.fail: |
303 parser.error('\n'.join(build_utils.ParseGnList(options.fail))) | 299 parser.error('\n'.join(build_utils.ParseGnList(options.fail))) |
304 | 300 |
(...skipping 27 matching lines...) Expand all Loading... |
332 raise Exception( | 328 raise Exception( |
333 '--supports-android is required when using --requires-android') | 329 '--supports-android is required when using --requires-android') |
334 | 330 |
335 direct_deps_config_paths = build_utils.ParseGnList(options.deps_configs) | 331 direct_deps_config_paths = build_utils.ParseGnList(options.deps_configs) |
336 direct_deps_config_paths = _FilterDepsPaths(direct_deps_config_paths, | 332 direct_deps_config_paths = _FilterDepsPaths(direct_deps_config_paths, |
337 options.type) | 333 options.type) |
338 | 334 |
339 deps = Deps(direct_deps_config_paths) | 335 deps = Deps(direct_deps_config_paths) |
340 all_inputs = deps.AllConfigPaths() | 336 all_inputs = deps.AllConfigPaths() |
341 | 337 |
342 # Remove other locale resources if there is alternative_locale_resource in | |
343 # direct deps. | |
344 if options.has_alternative_locale_resource: | |
345 alternative = [r['path'] for r in deps.Direct('android_resources') | |
346 if r.get('is_locale_resource')] | |
347 # We can only have one locale resources in direct deps. | |
348 if len(alternative) != 1: | |
349 raise Exception('The number of locale resource in direct deps is wrong %d' | |
350 % len(alternative)) | |
351 unwanted = [r['path'] for r in deps.All('android_resources') | |
352 if r.get('is_locale_resource') and r['path'] not in alternative] | |
353 for p in unwanted: | |
354 deps.RemoveNonDirectDep(p) | |
355 | |
356 | |
357 direct_library_deps = deps.Direct('java_library') | 338 direct_library_deps = deps.Direct('java_library') |
358 all_library_deps = deps.All('java_library') | 339 all_library_deps = deps.All('java_library') |
359 | 340 |
360 all_resources_deps = deps.All('android_resources') | 341 all_resources_deps = deps.All('android_resources') |
361 # Resources should be ordered with the highest-level dependency first so that | 342 # Resources should be ordered with the highest-level dependency first so that |
362 # overrides are done correctly. | 343 # overrides are done correctly. |
363 all_resources_deps.reverse() | 344 all_resources_deps.reverse() |
364 | 345 |
365 if options.type == 'android_apk' and options.tested_apk_config: | 346 if options.type == 'android_apk' and options.tested_apk_config: |
366 tested_apk_deps = Deps([options.tested_apk_config]) | 347 tested_apk_deps = Deps([options.tested_apk_config]) |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
478 deps_info['resources_zip'] = options.resources_zip | 459 deps_info['resources_zip'] = options.resources_zip |
479 if options.srcjar: | 460 if options.srcjar: |
480 deps_info['srcjar'] = options.srcjar | 461 deps_info['srcjar'] = options.srcjar |
481 if options.android_manifest: | 462 if options.android_manifest: |
482 manifest = AndroidManifest(options.android_manifest) | 463 manifest = AndroidManifest(options.android_manifest) |
483 deps_info['package_name'] = manifest.GetPackageName() | 464 deps_info['package_name'] = manifest.GetPackageName() |
484 if options.package_name: | 465 if options.package_name: |
485 deps_info['package_name'] = options.package_name | 466 deps_info['package_name'] = options.package_name |
486 if options.r_text: | 467 if options.r_text: |
487 deps_info['r_text'] = options.r_text | 468 deps_info['r_text'] = options.r_text |
488 if options.is_locale_resource: | |
489 deps_info['is_locale_resource'] = True | |
490 | 469 |
491 deps_info['resources_dirs'] = [] | 470 deps_info['resources_dirs'] = [] |
492 if options.resource_dirs: | 471 if options.resource_dirs: |
493 for gyp_list in options.resource_dirs: | 472 for gyp_list in options.resource_dirs: |
494 deps_info['resources_dirs'].extend(build_utils.ParseGnList(gyp_list)) | 473 deps_info['resources_dirs'].extend(build_utils.ParseGnList(gyp_list)) |
495 | 474 |
496 if options.supports_android and options.type in ('android_apk', | 475 if options.supports_android and options.type in ('android_apk', |
497 'java_library'): | 476 'java_library'): |
498 # Lint all resources that are not already linted by a dependent library. | 477 # Lint all resources that are not already linted by a dependent library. |
499 owned_resource_dirs = set() | 478 owned_resource_dirs = set() |
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
660 _MergeAssets(deps.All('android_assets'))) | 639 _MergeAssets(deps.All('android_assets'))) |
661 | 640 |
662 build_utils.WriteJson(config, options.build_config, only_if_changed=True) | 641 build_utils.WriteJson(config, options.build_config, only_if_changed=True) |
663 | 642 |
664 if options.depfile: | 643 if options.depfile: |
665 build_utils.WriteDepfile(options.depfile, options.build_config, all_inputs) | 644 build_utils.WriteDepfile(options.depfile, options.build_config, all_inputs) |
666 | 645 |
667 | 646 |
668 if __name__ == '__main__': | 647 if __name__ == '__main__': |
669 sys.exit(main(sys.argv[1:])) | 648 sys.exit(main(sys.argv[1:])) |
OLD | NEW |