Chromium Code Reviews| Index: build/config/android/rules.gni |
| diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni |
| index af493bd9ff74a76276959e95a1ddc7feb13288fe..2bb432d4dc888710365a8c4254d65fb5facd5e52 100644 |
| --- a/build/config/android/rules.gni |
| +++ b/build/config/android/rules.gni |
| @@ -626,6 +626,68 @@ template("android_library") { |
| } |
| } |
| +template("java_library") { |
| + if (defined(invoker.testonly)) { testonly = invoker.testonly } |
| + |
| + assert(defined(invoker.java_files) || defined(invoker.DEPRECATED_java_in_dir) |
| + || defined(invoker.srcjars)) |
| + |
| + _srcjar_deps = [] |
| + if (defined(invoker.srcjar_deps)) { |
| + _srcjar_deps = invoker.srcjar_deps |
| + } |
| + |
| + _srcjars = [] |
| + if (defined(invoker.srcjars)) { |
| + _srcjars = invoker.srcjars |
| + } |
| + |
| + _java_files = [] |
| + if (defined(invoker.java_files)) { |
| + _java_files = invoker.java_files |
| + } else if (defined(invoker.DEPRECATED_java_in_dir)) { |
| + _src_dir = invoker.DEPRECATED_java_in_dir + "/src" |
| + _src_dir_exists = exec_script("//build/dir_exists.py", |
| + [ rebase_path(_src_dir, root_build_dir) ], |
| + "string") |
| + assert(_src_dir_exists == "False", |
| + "In GN, java_in_dir should be the fully specified java directory " + |
| + "(i.e. including the trailing \"/src\")") |
| + |
| + _java_files_build_rel = exec_script( |
| + "//build/android/gyp/find.py", |
| + [ |
| + "--pattern", |
| + "*.java", |
| + rebase_path(invoker.DEPRECATED_java_in_dir, root_build_dir) |
| + ], |
| + "list lines" |
| + ) |
| + _java_files = rebase_path(_java_files_build_rel, ".", root_build_dir) |
| + } |
| + assert(_java_files != [] || _srcjar_deps != [] || _srcjars != []) |
| + |
| + # TODO(cjhopman): Write a proper build config so that java library |
| + # dependencies work correctly. |
| + _build_config = "$target_gen_dir/$target_name.build_config" |
| + write_file( |
| + _build_config, |
| + "{ \"javac\": { \"classpath\": [], \"srcjars\": [] } }") |
| + |
| + _jar_path = "$root_build_dir/lib.java/$target_name.jar" |
| + if (defined(invoker.jar_path)) { |
| + _jar_path = invoker.jar_path |
| + } |
| + |
| + compile_java(target_name) { |
| + build_config = _build_config |
| + jar_path = _jar_path |
| + java_files = _java_files |
| + srcjar_deps = _srcjar_deps |
| + srcjars = _srcjars |
| + } |
| +} |
| + |
| # Declare an Android library target for a prebuilt jar |
| # |
| @@ -768,27 +830,16 @@ template("android_apk") { |
| _dist_jar_path = _dist_jar_path_list[0] |
| _native_libs = [] |
| - if (defined(invoker.native_libs)) { |
| - _use_chromium_linker = false |
| - if (defined(invoker.use_chromium_linker)) { |
| - _use_chromium_linker = invoker.use_chromium_linker |
| - } |
| - # TODO(GYP) add "|| profiling_full_stack_frames |
| - # Only enable the chromium linker on regular builds, since the |
| - # component build crashes on Android 4.4. See b/11379966 |
| - if (is_component_build || cpu_arch == "arm64" || cpu_arch == "x64") { |
| - _use_chromium_linker = false |
| - } |
| - |
| - _native_libs = invoker.native_libs |
| - _native_libs_dir = base_path + "/libs" |
| + _use_chromium_linker = false |
| + if (defined(invoker.use_chromium_linker)) { |
| + _use_chromium_linker = invoker.use_chromium_linker |
| + } |
| + assert(_use_chromium_linker || true) |
|
rmcilroy
2014/10/21 10:55:45
I'm not sure what this is testing?
cjhopman
2014/10/21 17:28:52
Eh, this just marks _use_chromium_linker as "used"
|
| - if (_use_chromium_linker) { |
| - _native_libs += [ |
| - "$root_build_dir/lib.stripped/libchromium_android_linker.so" |
| - ] |
| - } |
| + _load_library_from_apk = false |
| + if (defined(invoker.load_library_from_apk)) { |
| + _load_library_from_apk = invoker.load_library_from_apk |
| } |
| _keystore_path = android_default_keystore_path |
| @@ -806,6 +857,24 @@ template("android_apk") { |
| _srcjar_deps += invoker.srcjar_deps |
| } |
| + if (defined(invoker.native_libs)) { |
| + # TODO(GYP) add "|| profiling_full_stack_frames |
| + # Only enable the chromium linker on regular builds, since the |
| + # component build crashes on Android 4.4. See b/11379966 |
| + if (is_component_build || cpu_arch == "arm64" || cpu_arch == "x64") { |
|
rmcilroy
2014/10/21 10:55:45
I realize you only moved this, but we still want _
cjhopman
2014/10/21 17:28:52
Done. It is not enabled in upstream targets for ar
rmcilroy
2014/10/21 21:21:03
You are right, I was thinking of downstream. Than
cjhopman
2014/10/22 21:44:07
In gyp we could do something similar... it would l
|
| + _use_chromium_linker = false |
| + } |
| + |
| + _native_libs = invoker.native_libs |
| + _native_libs_dir = base_path + "/libs" |
| + |
| + if (_use_chromium_linker) { |
| + _native_libs += [ |
| + "$root_build_dir/lib.stripped/libchromium_android_linker.so" |
| + ] |
| + } |
| + } |
| + |
| _rebased_build_config = rebase_path(build_config, root_build_dir) |
| write_build_config("${_template_name}__build_config") { |
| @@ -838,7 +907,6 @@ template("android_apk") { |
| _enable_chromium_linker_tests = invoker.enable_chromium_linker_tests |
| } |
| - _load_library_from_apk = false |
| _native_lib_version_name = "" |
| java_cpp_template("${_template_name}__native_libraries_java") { |
| @@ -942,6 +1010,7 @@ template("android_apk") { |
| android_manifest = invoker.android_manifest |
| resources_zip = all_resources_zip_path |
| dex_path = final_dex_path |
| + load_library_from_apk = _load_library_from_apk |
| if (defined(invoker.asset_location)) { |
| asset_location = invoker.asset_location |