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 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
202 for path in runtime_deps_files: | 202 for path in runtime_deps_files: |
203 with open(path) as f: | 203 with open(path) as f: |
204 for line in f: | 204 for line in f: |
205 line = line.rstrip() | 205 line = line.rstrip() |
206 if not line.endswith('.so'): | 206 if not line.endswith('.so'): |
207 continue | 207 continue |
208 ret.append(os.path.normpath(line)) | 208 ret.append(os.path.normpath(line)) |
209 ret.reverse() | 209 ret.reverse() |
210 return ret | 210 return ret |
211 | 211 |
212 def _CreateJavaLibrariesList(library_paths): | |
213 """ Create a java literal array with the "base" library names: | |
214 e.g. libfoo.so -> foo | |
215 """ | |
216 return ('{%s}' % ','.join(['"%s"' % s[3:-3] for s in library_paths])) | |
217 | 212 |
218 def main(argv): | 213 def main(argv): |
219 parser = optparse.OptionParser() | 214 parser = optparse.OptionParser() |
220 build_utils.AddDepfileOption(parser) | 215 build_utils.AddDepfileOption(parser) |
221 parser.add_option('--build-config', help='Path to build_config output.') | 216 parser.add_option('--build-config', help='Path to build_config output.') |
222 parser.add_option( | 217 parser.add_option( |
223 '--type', | 218 '--type', |
224 help='Type of this target (e.g. android_library).') | 219 help='Type of this target (e.g. android_library).') |
225 parser.add_option( | 220 parser.add_option( |
226 '--deps-configs', | 221 '--deps-configs', |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
262 help='GYP-list of .jar files to include on the classpath when compiling, ' | 257 help='GYP-list of .jar files to include on the classpath when compiling, ' |
263 'but not to include in the final binary.') | 258 'but not to include in the final binary.') |
264 | 259 |
265 # android library options | 260 # android library options |
266 parser.add_option('--dex-path', help='Path to target\'s dex output.') | 261 parser.add_option('--dex-path', help='Path to target\'s dex output.') |
267 | 262 |
268 # native library options | 263 # native library options |
269 parser.add_option('--shared-libraries-runtime-deps', | 264 parser.add_option('--shared-libraries-runtime-deps', |
270 help='Path to file containing runtime deps for shared ' | 265 help='Path to file containing runtime deps for shared ' |
271 'libraries.') | 266 'libraries.') |
272 parser.add_option('--secondary-abi-shared-libraries-runtime-deps', | |
273 help='Path to file containing runtime deps for secondary ' | |
274 'abi shared libraries.') | |
275 | 267 |
276 # apk options | 268 # apk options |
277 parser.add_option('--apk-path', help='Path to the target\'s apk output.') | 269 parser.add_option('--apk-path', help='Path to the target\'s apk output.') |
278 parser.add_option('--incremental-apk-path', | 270 parser.add_option('--incremental-apk-path', |
279 help="Path to the target's incremental apk output.") | 271 help="Path to the target's incremental apk output.") |
280 parser.add_option('--incremental-install-script-path', | 272 parser.add_option('--incremental-install-script-path', |
281 help="Path to the target's generated incremental install " | 273 help="Path to the target's generated incremental install " |
282 "script.") | 274 "script.") |
283 | 275 |
284 parser.add_option('--tested-apk-config', | 276 parser.add_option('--tested-apk-config', |
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
630 if not options.tested_apk_config and manifest.GetInstrumentation(): | 622 if not options.tested_apk_config and manifest.GetInstrumentation(): |
631 # This must then have instrumentation only for itself. | 623 # This must then have instrumentation only for itself. |
632 manifest.CheckInstrumentation(manifest.GetPackageName()) | 624 manifest.CheckInstrumentation(manifest.GetPackageName()) |
633 | 625 |
634 library_paths = [] | 626 library_paths = [] |
635 java_libraries_list = None | 627 java_libraries_list = None |
636 runtime_deps_files = build_utils.ParseGnList( | 628 runtime_deps_files = build_utils.ParseGnList( |
637 options.shared_libraries_runtime_deps or '[]') | 629 options.shared_libraries_runtime_deps or '[]') |
638 if runtime_deps_files: | 630 if runtime_deps_files: |
639 library_paths = _ExtractSharedLibsFromRuntimeDeps(runtime_deps_files) | 631 library_paths = _ExtractSharedLibsFromRuntimeDeps(runtime_deps_files) |
640 java_libraries_list = _CreateJavaLibrariesList(library_paths) | 632 # Create a java literal array with the "base" library names: |
641 | 633 # e.g. libfoo.so -> foo |
642 secondary_abi_library_paths = [] | 634 java_libraries_list = ('{%s}' % ','.join( |
643 secondary_abi_java_libraries_list = None | 635 ['"%s"' % s[3:-3] for s in library_paths])) |
644 secondary_abi_runtime_deps_files = build_utils.ParseGnList( | |
645 options.secondary_abi_shared_libraries_runtime_deps or '[]') | |
646 if secondary_abi_runtime_deps_files: | |
647 secondary_abi_library_paths = _ExtractSharedLibsFromRuntimeDeps( | |
648 secondary_abi_runtime_deps_files) | |
649 secondary_abi_java_libraries_list = _CreateJavaLibrariesList( | |
650 secondary_abi_library_paths) | |
651 | 636 |
652 all_inputs.extend(runtime_deps_files) | 637 all_inputs.extend(runtime_deps_files) |
653 config['native'] = { | 638 config['native'] = { |
654 'libraries': library_paths, | 639 'libraries': library_paths, |
655 'secondary_abi_libraries': secondary_abi_library_paths, | |
656 'java_libraries_list': java_libraries_list, | 640 'java_libraries_list': java_libraries_list, |
657 'secondary_abi_java_libraries_list': secondary_abi_java_libraries_list, | |
658 } | 641 } |
659 config['assets'], config['uncompressed_assets'] = ( | 642 config['assets'], config['uncompressed_assets'] = ( |
660 _MergeAssets(deps.All('android_assets'))) | 643 _MergeAssets(deps.All('android_assets'))) |
661 | 644 |
662 build_utils.WriteJson(config, options.build_config, only_if_changed=True) | 645 build_utils.WriteJson(config, options.build_config, only_if_changed=True) |
663 | 646 |
664 if options.depfile: | 647 if options.depfile: |
665 build_utils.WriteDepfile(options.depfile, all_inputs) | 648 build_utils.WriteDepfile(options.depfile, all_inputs) |
666 | 649 |
667 | 650 |
668 if __name__ == '__main__': | 651 if __name__ == '__main__': |
669 sys.exit(main(sys.argv[1:])) | 652 sys.exit(main(sys.argv[1:])) |
OLD | NEW |