Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(53)

Unified Diff: build/config/android/rules.gni

Issue 512923002: Add support for Android aidl and support for gyp's java_in_dir (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « build/config/android/internal_rules.gni ('k') | content/public/android/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/config/android/rules.gni
diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni
index 43d79d0153a7cf7ea0e1349968108ac6d9bb38ad..a982f91b0236ff3e35113866d9bc1de6cdfa2c47 100644
--- a/build/config/android/rules.gni
+++ b/build/config/android/rules.gni
@@ -219,7 +219,7 @@ template("java_cpp_template") {
if (defined(invoker.inputs)) {
inputs = invoker.inputs + []
}
- depfile = "${target_gen_dir}/${target_name}.d"
+ depfile = "${target_gen_dir}/${target_name}_{{source_name_part}}.d"
sources = invoker.sources
@@ -405,13 +405,17 @@ template("java_strings_grd") {
# 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.
-# chromium_code: If true, extra static analysis warning/errors will be enabled.
+# chromium_code: If true, extra analysis warning/errors will be enabled.
# jar_excluded_patterns: List of patterns of .class files to exclude from the
# final jar.
# proguard_preprocess: If true, proguard preprocessing will be run. This can
# be used to remove unwanted parts of the library.
# proguard_config: Path to the proguard config for preprocessing.
#
+# DEPRECATED_java_in_dir: Directory containing java files. All .java files in
+# this directory will be included in the library. This is only supported to
+# ease the gyp->gn conversion and will be removed in the future.
+#
# Example
# android_library("foo_java") {
# java_files = [
@@ -430,11 +434,11 @@ template("java_strings_grd") {
# ]
# }
template("android_library") {
- assert(defined(invoker.java_files))
- base_path = "$target_gen_dir/$target_name"
- build_config = base_path + ".build_config"
- jar_path = base_path + ".jar"
- dex_path = base_path + ".dex.jar"
+ assert(defined(invoker.java_files) || defined(invoker.DEPRECATED_java_in_dir))
+ _base_path = "$target_gen_dir/$target_name"
+ _build_config = _base_path + ".build_config"
+ _jar_path = _base_path + ".jar"
+ _dex_path = _base_path + ".dex.jar"
write_build_config("${target_name}__build_config") {
type = "android_library"
@@ -444,7 +448,9 @@ template("android_library") {
deps += invoker.deps
}
- # base_path
+ build_config = _build_config
+ jar_path = _jar_path
+ dex_path = _dex_path
}
_chromium_code = true
@@ -454,8 +460,14 @@ template("android_library") {
android_java_library(target_name) {
chromium_code = _chromium_code
- java_files = invoker.java_files
- build_config = build_config
+ if (defined(invoker.java_files)) {
+ java_files = invoker.java_files
+ } else {
+ DEPRECATED_java_in_dir = invoker.DEPRECATED_java_in_dir
+ }
+ build_config = _build_config
+ jar_path = _jar_path
+ dex_path = _dex_path
if (defined(invoker.proguard_preprocess) && invoker.proguard_preprocess) {
proguard_preprocess = true
@@ -546,6 +558,9 @@ template("android_java_prebuilt") {
#
# Variables
# android_manifest: Path to AndroidManifest.xml.
+# datadeps: List of dependencies needed at runtime. These will be built but
+# won't change the generated .apk in any way (in fact they may be built
+# after the .apk is).
# deps: List of dependencies. All Android java resources and libraries in the
# "transitive closure" of these dependencies will be included in the apk.
# Note: this "transitive closure" actually only includes such targets if
@@ -561,6 +576,10 @@ template("android_java_prebuilt") {
# libraries depend on other shared_library targets, those dependencies will
# also be included in the apk.
#
+# DEPRECATED_java_in_dir: Directory containing java files. All .java files in
+# this directory will be included in the library. This is only supported to
+# ease the gyp->gn conversion and will be removed in the future.
+#
# Example
# android_apk("foo_apk") {
# android_manifest = "AndroidManifest.xml"
@@ -676,7 +695,11 @@ template("android_apk") {
final_deps += [":${target_name}__java"]
android_java_library("${target_name}__java") {
android_manifest = invoker.android_manifest
- java_files = invoker.java_files
+ if (defined(invoker.java_files)) {
+ java_files = invoker.java_files
+ } else {
+ DEPRECATED_java_in_dir = invoker.DEPRECATED_java_in_dir
+ }
srcjar_deps = _srcjar_deps
dex_path = base_path + ".dex.jar"
}
@@ -726,6 +749,9 @@ template("android_apk") {
group(target_name) {
deps = final_deps
+ if (defined(invoker.datadeps)) {
+ datadeps = invoker.datadeps
+ }
}
}
@@ -777,3 +803,73 @@ template("unittest_apk") {
}
}
}
+
+# Generate .java files from .aidl files.
+#
+# This target will store the .java files in a srcjar and should be included in
+# an android_library or android_apk's srcjar_deps.
+#
+# Variables
+# sources: Paths to .aidl files to compile.
+# import_include: Path to directory containing .java files imported by the
+# .aidl files.
+# interface_file: Preprocessed aidl file to import.
+#
+# Example
+# android_aidl("foo_aidl") {
+# import_include = "java/src"
+# sources = [
+# "java/src/com/foo/bar/FooBarService.aidl",
+# "java/src/com/foo/bar/FooBarServiceCallback.aidl",
+# ]
+# }
+template("android_aidl") {
+ srcjar_path = "${target_gen_dir}/${target_name}.srcjar"
+ aidl_path = "${android_sdk_build_tools}/aidl"
+ framework_aidl = "$android_sdk/framework.aidl"
+
+ action(target_name) {
+ script = "//build/android/gyp/aidl.py"
+ sources = invoker.sources
+
+ imports = [ framework_aidl ]
+ if (defined(invoker.interface_file)) {
+ assert(invoker.interface_file != "")
+ imports += [ invoker.interface_file ]
+ }
+
+ inputs = [
+ aidl_path,
+ ] + imports
+
+ depfile = "${target_gen_dir}/${target_name}.d"
+ outputs = [
+ depfile,
+ srcjar_path
+ ]
+ rebased_imports = rebase_path(imports, root_build_dir)
+ args = [
+ "--depfile", rebase_path(depfile, root_build_dir),
+ "--aidl-path", rebase_path(aidl_path, root_build_dir),
+ "--imports=$rebased_imports",
+ "--srcjar", rebase_path(srcjar_path, root_build_dir),
+ ]
+ if (defined(invoker.import_include) && invoker.import_include != "") {
+ # TODO(cjhopman): aidl supports creating a depfile. We should be able to
+ # switch to constructing a depfile for the overall action from that
+ # instead of having all the .java files in the include paths as inputs.
+ rebased_import_includes = rebase_path(
+ [invoker.import_include], root_build_dir)
+ args += [ "--includes=$rebased_import_includes" ]
+
+ _java_files_build_rel = exec_script(
+ "//build/android/gyp/find.py",
+ rebase_path([invoker.import_include], root_build_dir),
+ "list lines"
+ )
+ _java_files = rebase_path(_java_files_build_rel, ".", root_build_dir)
+ inputs += _java_files
+ }
+ args += rebase_path(sources, root_build_dir)
+ }
+}
« no previous file with comments | « build/config/android/internal_rules.gni ('k') | content/public/android/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698