Index: build/config/android/rules.gni |
diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni |
index 8aaaba17f343b2e35317a1a263186b2df3accfb6..a56cbdd6aa6bdef86213958c900342378fb387ce 100644 |
--- a/build/config/android/rules.gni |
+++ b/build/config/android/rules.gni |
@@ -2,6 +2,7 @@ |
# Use of this source code is governed by a BSD-style license that can be |
# found in the LICENSE file. |
+import("config.gni") |
import("internal_rules.gni") |
# Declare a jni target |
@@ -62,6 +63,7 @@ template("generate_jni") { |
} |
} |
+ |
# Declare a target for c-preprocessor-generated java files |
# |
# This target generates java files using the host C pre-processor. Each file in |
@@ -82,7 +84,7 @@ template("generate_jni") { |
# package_name: this will be the subdirectory for each .java file in the .srcjar. |
# |
# Example |
-# java_cpp_template("foo_jni") { |
+# java_cpp_template("foo_generated_enum") { |
# sources = [ |
# "android/java/templates/Foo.template", |
# ] |
@@ -105,9 +107,9 @@ template("java_cpp_template") { |
base_gen_dir = "${root_gen_dir}/java_cpp_template/${target_name}/${package_name}" |
gen_dir = "${base_gen_dir}/${package_name}" |
+ gcc_template_output_pattern = "${gen_dir}/{{source_name_part}}.java" |
apply_gcc_outputs = process_file_template( |
- invoker.sources, |
- "${gen_dir}/{{source_name_part}}.java" |
+ invoker.sources, gcc_template_output_pattern |
) |
action_foreach("${target_name}__apply_gcc") { |
@@ -118,7 +120,7 @@ template("java_cpp_template") { |
sources = invoker.sources |
outputs = [ |
- "${gen_dir}/{{source_name_part}}.java" |
+ gcc_template_output_pattern |
] |
args = [ |
@@ -128,9 +130,10 @@ template("java_cpp_template") { |
] |
} |
+ srcjar_path = get_target_gen_path(":${target_name}", ".srcjar") |
_zip("${target_name}__zip_srcjar") { |
inputs = apply_gcc_outputs |
- output = get_target_gen_path(target_name, ".srcjar") |
+ output = srcjar_path |
base_dir = base_gen_dir |
} |
@@ -142,3 +145,49 @@ template("java_cpp_template") { |
} |
+# Declare an Android library target |
+# |
+# This target creates an Android library containing java code and Android |
+# resources. |
+# |
+# Variables |
+# android_library_deps: list of other Android libraries that this library |
+# depends on. |
+# java_files: List of .java files included in this library. |
+# srcjar_deps: List of srcjar dependencies. The .java files in the srcjars |
+# will be added to java_files and be included in this library. |
+# |
+# Example |
+# android_library("foo_java") { |
+# java_files = [ |
+# "android/org/chromium/foo/Foo.java", |
+# "android/org/chromium/foo/FooInterface.java", |
+# "android/org/chromium/foo/FooService.java", |
+# ] |
+# srcjar_deps = [ |
+# ":foo_generated_enum" |
+# ] |
+# } |
+template("android_library") { |
+ template_name = target_name |
+ |
+ #TODO(cjhopman): resources |
+ |
+ assert(defined(invoker.java_files)) |
+ if (defined(invoker.android_library_deps)) { |
+ android_library_deps = invoker.android_library_deps |
+ } else { |
+ android_library_deps = [] |
+ } |
+ |
+ _android_java_library(target_name) { |
+ jar_path = get_target_gen_path(":${template_name}", ".jar") |
+ java_files = invoker.java_files |
+ library_deps = android_library_deps |
+ |
+ if (defined(invoker.srcjar_deps)) { |
+ srcjar_deps = invoker.srcjar_deps |
+ } |
+ } |
+} |
+ |