Index: build/android/gyp/write_build_config.py |
diff --git a/build/android/gyp/write_build_config.py b/build/android/gyp/write_build_config.py |
index 8f4580eaa6d113fd86683fbd2a8dcdda9aabacf8..6c29b8957c6fc89a79138c48acae32e04e9e0e96 100755 |
--- a/build/android/gyp/write_build_config.py |
+++ b/build/android/gyp/write_build_config.py |
@@ -120,12 +120,31 @@ class Deps(object): |
self.all_deps_config_paths.remove(path) |
self.all_deps_configs.remove(GetDepConfig(path)) |
- def PrebuiltJarPaths(self): |
+ def GradlePrebuiltJarPaths(self): |
ret = [] |
- for config in self.Direct('java_library'): |
- if config['is_prebuilt']: |
- ret.append(config['jar_path']) |
- ret.extend(Deps(config['deps_configs']).PrebuiltJarPaths()) |
+ |
+ def helper(cur): |
+ for config in cur.Direct('java_library'): |
+ if config['is_prebuilt'] or config['gradle_treat_as_prebuilt']: |
+ if config['jar_path'] not in ret: |
+ ret.append(config['jar_path']) |
+ |
+ helper(self) |
+ return ret |
+ |
+ def GradleLibraryProjectDeps(self): |
+ ret = [] |
+ |
+ def helper(cur): |
+ for config in cur.Direct('java_library'): |
+ if config['is_prebuilt']: |
+ pass |
+ elif config['gradle_treat_as_prebuilt']: |
+ helper(Deps(config['deps_configs'])) |
+ elif config not in ret: |
+ ret.append(config) |
+ |
+ helper(self) |
return ret |
@@ -268,6 +287,10 @@ def main(argv): |
parser.add_option('--extra-classpath-jars', |
help='GYP-list of .jar files to include on the classpath when compiling, ' |
'but not to include in the final binary.') |
+ parser.add_option('--gradle-treat-as-prebuilt', action='store_true', |
+ help='Whether this library should be treated as a prebuilt library by ' |
+ 'generate_gradle.py.') |
+ parser.add_option('--main-class', help='Java class for java_binary targets.') |
# android library options |
parser.add_option('--dex-path', help='Path to target\'s dex output.') |
@@ -376,6 +399,7 @@ def main(argv): |
# Required for generating gradle files. |
if options.type == 'java_library': |
deps_info['is_prebuilt'] = is_java_prebuilt |
+ deps_info['gradle_treat_as_prebuilt'] = options.gradle_treat_as_prebuilt |
if options.android_manifest: |
gradle['android_manifest'] = options.android_manifest |
@@ -386,16 +410,18 @@ def main(argv): |
gradle['bundled_srcjars'] = ( |
build_utils.ParseGnList(options.bundled_srcjars)) |
- gradle['dependent_prebuilt_jars'] = deps.PrebuiltJarPaths() |
- |
gradle['dependent_android_projects'] = [] |
gradle['dependent_java_projects'] = [] |
- for c in direct_library_deps: |
- if not c['is_prebuilt']: |
- if c['requires_android']: |
- gradle['dependent_android_projects'].append(c['path']) |
- else: |
- gradle['dependent_java_projects'].append(c['path']) |
+ gradle['dependent_prebuilt_jars'] = deps.GradlePrebuiltJarPaths() |
+ |
+ if options.main_class: |
+ gradle['main_class'] = options.main_class |
+ |
+ for c in deps.GradleLibraryProjectDeps(): |
+ if c['requires_android']: |
+ gradle['dependent_android_projects'].append(c['path']) |
+ else: |
+ gradle['dependent_java_projects'].append(c['path']) |
if (options.type in ('java_binary', 'java_library') and |