| Index: third_party/mojo/src/mojo/public/mojo_application.gni
|
| diff --git a/third_party/mojo/src/mojo/public/mojo_application.gni b/third_party/mojo/src/mojo/public/mojo_application.gni
|
| index 7ab5a3118e0a639928338f38970a68dce7046632..32bdb7a7d225c7dd457172f0379d69f9eabfaaf7 100644
|
| --- a/third_party/mojo/src/mojo/public/mojo_application.gni
|
| +++ b/third_party/mojo/src/mojo/public/mojo_application.gni
|
| @@ -20,6 +20,7 @@ template("mojo_native_application") {
|
| if (!is_nacl) {
|
| output = base_target_name + ".mojo"
|
| library_target_name = base_target_name + "_library"
|
| + copy_symbols_target = "__${final_target_name}_copy_symbols"
|
|
|
| if (is_linux || is_android) {
|
| library_name = "lib${library_target_name}.so"
|
| @@ -130,7 +131,27 @@ template("mojo_native_application") {
|
| testonly = invoker.testonly
|
| }
|
|
|
| + visibility = [
|
| + ":${final_target_name}",
|
| + ":${copy_symbols_target}",
|
| + ]
|
| + }
|
| +
|
| + copy(copy_symbols_target) {
|
| + if (defined(invoker.testonly)) {
|
| + testonly = invoker.testonly
|
| + }
|
| visibility = [ ":${final_target_name}" ]
|
| + deps = [
|
| + ":${library_target_name}",
|
| + ]
|
| +
|
| + sources = [
|
| + "${root_out_dir}/${library_name}",
|
| + ]
|
| + outputs = [
|
| + "${root_out_dir}/symbols/${library_name}",
|
| + ]
|
| }
|
|
|
| copy(final_target_name) {
|
| @@ -142,6 +163,7 @@ template("mojo_native_application") {
|
| }
|
| deps = [
|
| ":${library_target_name}",
|
| + ":${copy_symbols_target}",
|
| ]
|
|
|
| sources = [
|
| @@ -289,30 +311,111 @@ template("mojo_native_application") {
|
| }
|
|
|
| if (is_android) {
|
| + import("//build/config/android/rules.gni")
|
| +
|
| # Declares an Android Mojo application consisting of an .so file and a
|
| # corresponding .dex.jar file.
|
| #
|
| # Variables:
|
| - # input_so: the .so file to bundle
|
| - # input_dex_jar: the .dex.jar file to bundle
|
| - # deps / public_deps / data_deps (optional):
|
| - # Dependencies. The targets that generate the .so/jar inputs should be
|
| - # listed in either deps or public_deps.
|
| + # sources (optional): The c++ sources.
|
| + # deps (optional): The c++ dependencies.
|
| + # java_sources (optional): The java sources.
|
| + # java_deps (optional): The java dependencies.
|
| + # jni_package (optional): The c++ package for the generated jni headers.
|
| # output_name (optional): override for the output file name
|
| + # public_deps / data_deps (optional): Dependencies.
|
| template("mojo_android_application") {
|
| - assert(defined(invoker.input_so))
|
| - assert(defined(invoker.input_dex_jar))
|
| + shared_library_name = "__${target_name}_lib"
|
| + library_basename = "lib${shared_library_name}.so"
|
| + if (defined(invoker.jni_package)) {
|
| + assert(defined(invoker.java_sources))
|
| + generate_jni_name = "__${target_name}_jni"
|
| + }
|
| + if (defined(invoker.java_sources)) {
|
| + java_library_name = "__${target_name}_java"
|
| + }
|
| + android_standalone_library_name = "__${target_name}_java_lib"
|
| + dex_output_path = "${target_gen_dir}/${target_name}.dex.jar"
|
| + zip_action_name = "__${target_name}_zip"
|
| + zip_action_output = "${target_gen_dir}/${target_name}.zip"
|
| + copy_symbols_target = "__${target_name}_copy_symbols"
|
| + final_target_name = target_name
|
| +
|
| + if (defined(invoker.jni_package)) {
|
| + generate_jni(generate_jni_name) {
|
| + visibility = [ ":${shared_library_name}" ]
|
| +
|
| + sources = invoker.java_sources
|
| + jni_package = invoker.jni_package
|
| + }
|
| + }
|
| +
|
| + shared_library(shared_library_name) {
|
| + visibility = [
|
| + ":${copy_symbols_target}",
|
| + ":${zip_action_name}",
|
| + ]
|
| +
|
| + if (defined(invoker.sources)) {
|
| + sources = invoker.sources
|
| + }
|
| +
|
| + deps = []
|
| + if (defined(invoker.jni_package)) {
|
| + deps += [ ":${generate_jni_name}" ]
|
| + }
|
| + if (defined(invoker.deps)) {
|
| + deps += invoker.deps
|
| + }
|
| + }
|
| +
|
| + copy(copy_symbols_target) {
|
| + visibility = [ ":${final_target_name}" ]
|
| + deps = [
|
| + ":${shared_library_name}",
|
| + ]
|
| +
|
| + sources = [
|
| + "${root_out_dir}/${library_basename}",
|
| + ]
|
| + outputs = [
|
| + "${root_out_dir}/symbols/${library_basename}",
|
| + ]
|
| + }
|
| +
|
| + if (defined(invoker.java_sources)) {
|
| + android_library(java_library_name) {
|
| + visibility = [ ":*" ]
|
| +
|
| + java_files = invoker.java_sources
|
| +
|
| + if (defined(invoker.java_deps)) {
|
| + deps = invoker.java_deps
|
| + }
|
| + }
|
| + }
|
| +
|
| + android_standalone_library(android_standalone_library_name) {
|
| + deps = []
|
| +
|
| + if (defined(invoker.java_sources)) {
|
| + deps += [ ":${java_library_name}" ]
|
| + }
|
| +
|
| + if (defined(invoker.java_deps)) {
|
| + deps += invoker.java_deps
|
| + }
|
| +
|
| + dex_path = dex_output_path
|
| + }
|
|
|
| - zip_action_name = "${target_name}_zip"
|
| - zip_action_output = "$target_gen_dir/${target_name}.zip"
|
| - prepend_action_name = target_name
|
| action(zip_action_name) {
|
| - visibility = [ ":$prepend_action_name" ]
|
| + visibility = [ ":${final_target_name}" ]
|
| script = "//build/android/gn/zip.py"
|
|
|
| inputs = [
|
| - invoker.input_so,
|
| - invoker.input_dex_jar,
|
| + "${root_out_dir}/lib.stripped/${library_basename}",
|
| + dex_output_path,
|
| ]
|
|
|
| output = zip_action_output
|
| @@ -323,8 +426,8 @@ if (is_android) {
|
| rebase_inputs = rebase_path(inputs, root_build_dir)
|
| rebase_output = rebase_path(output, root_build_dir)
|
| args = [
|
| - "--inputs=$rebase_inputs",
|
| - "--output=$rebase_output",
|
| + "--inputs=${rebase_inputs}",
|
| + "--output=${rebase_output}",
|
| ]
|
|
|
| if (defined(invoker.deps)) {
|
| @@ -339,12 +442,12 @@ if (is_android) {
|
| }
|
|
|
| if (defined(invoker.output_name)) {
|
| - mojo_output = "$root_out_dir/" + invoker.output_name + ".mojo"
|
| + mojo_output = "${root_out_dir}/" + invoker.output_name + ".mojo"
|
| } else {
|
| - mojo_output = "$root_out_dir/" + target_name + ".mojo"
|
| + mojo_output = "${root_out_dir}/" + target_name + ".mojo"
|
| }
|
|
|
| - action(target_name) {
|
| + action(final_target_name) {
|
| script = rebase_path("mojo/public/tools/prepend.py", ".", mojo_root)
|
|
|
| input = zip_action_output
|
| @@ -360,13 +463,17 @@ if (is_android) {
|
| rebase_input = rebase_path(input, root_build_dir)
|
| rebase_output = rebase_path(output, root_build_dir)
|
| args = [
|
| - "--input=$rebase_input",
|
| - "--output=$rebase_output",
|
| + "--input=${rebase_input}",
|
| + "--output=${rebase_output}",
|
| "--line=#!mojo mojo:android_handler",
|
| ]
|
|
|
| + deps = [
|
| + ":${copy_symbols_target}",
|
| + ]
|
| +
|
| public_deps = [
|
| - ":$zip_action_name",
|
| + ":${zip_action_name}",
|
| ]
|
| }
|
| }
|
|
|