Index: build/config/android/internal_rules.gni |
diff --git a/build/config/android/internal_rules.gni b/build/config/android/internal_rules.gni |
index 06ef0dc2835b4d94fca82a566a342226bc36a0eb..1820ff864b72b978efe237c7f400005f416f2ffa 100644 |
--- a/build/config/android/internal_rules.gni |
+++ b/build/config/android/internal_rules.gni |
@@ -11,6 +11,44 @@ rebased_android_sdk = rebase_path(android_sdk, root_build_dir) |
rebased_android_sdk_root = rebase_path(android_sdk_root, root_build_dir) |
rebased_android_sdk_build_tools = rebase_path(android_sdk_build_tools, root_build_dir) |
+template("android_lint") { |
+ jar_path = invoker.jar_path |
+ android_manifest = invoker.android_manifest |
+ java_files = invoker.java_files |
+ base_path = "$target_gen_dir/$target_name" |
+ |
+ action(target_name) { |
+ script = "//build/android/gyp/lint.py" |
+ result_path = base_path + "/result.xml" |
+ config_path = base_path + "/config.xml" |
+ suppressions_file = "//build/android/lint/suppressions.xml" |
+ inputs = [ |
+ suppressions_file, |
+ android_manifest, |
+ jar_path, |
+ ] + java_files |
+ |
+ outputs = [ |
+ config_path, |
+ result_path |
+ ] |
+ |
+ rebased_java_files = rebase_path(java_files, root_build_dir) |
+ |
+ args = [ |
+ "--lint-path=$rebased_android_sdk_root/tools/lint", |
+ "--config-path", rebase_path(suppressions_file, root_build_dir), |
+ "--manifest-path", rebase_path(android_manifest, root_build_dir), |
+ "--product-dir=.", |
+ "--jar-path", rebase_path(jar_path, root_build_dir), |
+ "--processed-config-path", rebase_path(config_path, root_build_dir), |
+ "--result-path", rebase_path(result_path, root_build_dir), |
+ "--java-files=$rebased_java_files", |
+ "--enable", |
+ ] |
+ } |
+} |
+ |
# Write the target's .build_config file. This is a json file that contains a |
# dictionary of information about how to build this target (things that |
@@ -304,7 +342,7 @@ template("create_apk") { |
# java_files: List of .java files to compile. |
# java_deps: List of java dependencies. These should all have a .jar output |
# at "${target_gen_dir}/${target_name}.jar. |
-# chromium_code: If 1, enable extra warnings. |
+# chromium_code: If true, enable extra warnings. |
# srcjar_deps: List of srcjar dependencies. The .java files contained in the |
# dependencies srcjar outputs will be compiled and added to the output jar. |
# jar_path: Use this to explicitly set the output jar path. Defaults to |
@@ -419,6 +457,14 @@ template("android_java_library") { |
_jar_path = invoker.jar_path |
_dex_path = invoker.dex_path |
+ _android_manifest = "//build/android/AndroidManifest.xml" |
+ if (defined(invoker.android_manifest)) { |
+ _android_manifest = invoker.android_manifest |
+ } |
+ assert(_android_manifest != "") |
+ |
+ _final_deps = [] |
+ |
java_library("${target_name}__java_library") { |
jar_path = _jar_path |
if (defined(invoker.jar_excluded_patterns)) { |
@@ -432,8 +478,14 @@ template("android_java_library") { |
} |
} |
- # TODO(cjhopman): lint |
- |
+ if (defined(invoker.chromium_code) && invoker.chromium_code) { |
+ _final_deps += [ ":${target_name}__lint" ] |
+ android_lint("${target_name}__lint") { |
+ android_manifest = _android_manifest |
+ jar_path = _jar_path |
+ java_files = invoker.java_files |
+ } |
+ } |
dex("${target_name}__dex") { |
sources = [_jar_path] |
@@ -444,7 +496,7 @@ template("android_java_library") { |
deps = [ |
":${target_name}__java_library", |
":${target_name}__dex", |
- ] |
+ ] + _final_deps |
} |
} |