Chromium Code Reviews| Index: build/android/gradle/generate_gradle.py |
| diff --git a/build/android/gradle/generate_gradle.py b/build/android/gradle/generate_gradle.py |
| index 6a6e850d7e833ef2093d95ae22711f9e3cfeefbb..4061dfd241b40cfc5fe15198d2224c039cf818d0 100755 |
| --- a/build/android/gradle/generate_gradle.py |
| +++ b/build/android/gradle/generate_gradle.py |
| @@ -34,6 +34,8 @@ _JINJA_TEMPLATE_PATH = os.path.join( |
| _JAVA_SUBDIR = 'symlinked-java' |
| _SRCJARS_SUBDIR = 'extracted-srcjars' |
| +_JNI_LIBS_SUBDIR = 'symlinked-libs' |
| +_ARMEABI_SUBDIR = 'armeabi' |
| _DEFAULT_TARGETS = [ |
| # TODO(agrieve): Requires alternate android.jar to compile. |
| @@ -238,6 +240,27 @@ def _CreateJavaSourceDir(output_dir, entry_output_dir, java_files): |
| return java_dirs |
|
agrieve
2017/01/11 20:10:09
nit: py style is for 2 blank lines between top-lev
|
| +def _CreateJniLibsDir(output_dir, entry_output_dir, so_files): |
| + """Creates directory with symlinked .so files if necessary. |
| + |
| + Returns list of JNI libs directories.""" |
| + |
| + if so_files: |
| + symlink_dir = os.path.join(entry_output_dir, _JNI_LIBS_SUBDIR) |
| + shutil.rmtree(symlink_dir, True) |
| + abi_dir = os.path.join(symlink_dir, _ARMEABI_SUBDIR) |
| + if not os.path.exists(abi_dir): |
| + os.makedirs(abi_dir) |
| + for so_file in so_files: |
| + target_path = os.path.join(output_dir, so_file) |
| + symlinked_path = os.path.join(abi_dir, so_file) |
| + relpath = os.path.relpath(target_path, abi_dir) |
|
agrieve
2017/01/11 20:10:09
nit: Could you extract these 3 lines into helper m
|
| + logging.debug('Creating symlink %s -> %s', symlinked_path, relpath) |
| + os.symlink(relpath, symlinked_path) |
| + |
| + return [symlink_dir] |
| + |
| + return [] |
| def _GenerateLocalProperties(sdk_dir): |
| """Returns the data for project.properties as a string.""" |
| @@ -247,8 +270,9 @@ def _GenerateLocalProperties(sdk_dir): |
| '']) |
| -def _GenerateGradleFile(build_config, build_vars, java_dirs, relativize, |
| - use_gradle_process_resources, jinja_processor): |
| +def _GenerateGradleFile(build_config, build_vars, java_dirs, jni_libs, |
| + relativize, use_gradle_process_resources, |
| + jinja_processor): |
| """Returns the data for a project's build.gradle.""" |
| deps_info = build_config['deps_info'] |
| gradle = build_config['gradle'] |
| @@ -288,6 +312,7 @@ def _GenerateGradleFile(build_config, build_vars, java_dirs, relativize, |
| _DEFAULT_ANDROID_MANIFEST_PATH) |
| variables['android_manifest'] = relativize(android_manifest) |
| variables['java_dirs'] = relativize(java_dirs) |
| + variables['jni_libs'] = relativize(jni_libs) |
| # TODO(agrieve): Add an option to use interface jars and see if that speeds |
| # things up at all. |
| variables['prebuilts'] = relativize(gradle['dependent_prebuilt_jars']) |
| @@ -444,8 +469,15 @@ def main(): |
| if srcjars: |
| java_dirs.append(os.path.join(entry_output_dir, _SRCJARS_SUBDIR)) |
| - data = _GenerateGradleFile(build_config, build_vars, java_dirs, relativize, |
| - args.use_gradle_process_resources, |
| + native_part = build_config.get('native') |
| + if native_part: |
| + jni_libs = _CreateJniLibsDir( |
| + output_dir, entry_output_dir, native_part.get('libraries')) |
| + else: |
| + jni_libs = [] |
| + |
| + data = _GenerateGradleFile(build_config, build_vars, java_dirs, jni_libs, |
| + relativize, args.use_gradle_process_resources, |
| jinja_processor) |
| if data: |
| project_entries.append(entry) |