summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcjhopman@chromium.org <cjhopman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-27 23:31:27 +0000
committercjhopman@chromium.org <cjhopman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-27 23:31:27 +0000
commitb13f73e498961e56096b42080592034b4c5a1128 (patch)
tree78d22ebce54d00a3fcbea6e13c0fd2a7576d6365
parente346aef5b64580c0a564d61522c9bfd3b74a6a58 (diff)
downloadchromium_src-b13f73e498961e56096b42080592034b4c5a1128.zip
chromium_src-b13f73e498961e56096b42080592034b4c5a1128.tar.gz
chromium_src-b13f73e498961e56096b42080592034b4c5a1128.tar.bz2
Predex java libraries
dx supports merging of already dexed jars. This means we can dex jars as part of the library target and then just merge them when we build the apk. BUG=158821 Review URL: https://chromiumcodereview.appspot.com/12913009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@191063 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--android_webview/android_webview_tests.gypi14
-rw-r--r--build/apk_fake_jar.gypi25
-rw-r--r--build/java.gypi25
-rw-r--r--build/java_apk.gypi3
-rw-r--r--chrome/chrome_android.gypi18
-rw-r--r--content/content_shell.gypi19
6 files changed, 55 insertions, 49 deletions
diff --git a/android_webview/android_webview_tests.gypi b/android_webview/android_webview_tests.gypi
index 09ebb89..b8a73af 100644
--- a/android_webview/android_webview_tests.gypi
+++ b/android_webview/android_webview_tests.gypi
@@ -44,19 +44,7 @@
'dependencies': [
'android_webview_apk',
],
- 'all_dependent_settings': {
- 'variables': {
- 'input_jars_paths': ['>(apk_output_jar_path)'],
- },
- },
- 'actions': [
- {
- 'action_name': 'fake_generate_jar',
- 'inputs': [],
- 'outputs': ['>(apk_output_jar_path)'],
- 'action': [],
- },
- ],
+ 'includes': [ '../build/apk_fake_jar.gypi' ],
},
{
'target_name': 'android_webview_test_apk',
diff --git a/build/apk_fake_jar.gypi b/build/apk_fake_jar.gypi
new file mode 100644
index 0000000..2787691
--- /dev/null
+++ b/build/apk_fake_jar.gypi
@@ -0,0 +1,25 @@
+# Copyright 2013 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# This file is meant to be included into a target to provide a rule
+# to build Java in a consistent manner.
+
+{
+ 'all_dependent_settings': {
+ 'variables': {
+ 'input_jars_paths': ['>(apk_output_jar_path)'],
+ 'library_dexed_jars_paths': ['>(apk_output_jar_path)'],
+ },
+ },
+ # Add an action with the appropriate output. This allows the generated
+ # buildfiles to determine which target the output corresponds to.
+ 'actions': [
+ {
+ 'action_name': 'fake_generate_jar',
+ 'inputs': [],
+ 'outputs': ['>(apk_output_jar_path)'],
+ 'action': [],
+ },
+ ],
+}
diff --git a/build/java.gypi b/build/java.gypi
index c1d5911..f3bc01e 100644
--- a/build/java.gypi
+++ b/build/java.gypi
@@ -58,6 +58,7 @@
'jar_path': '<(PRODUCT_DIR)/lib.java/<(jar_name)',
'jar_excluded_classes': [ '*/R.class', '*/R##*.class' ],
'additional_input_paths': [],
+ 'dex_path': '<(PRODUCT_DIR)/lib.java/<(_target_name).dex.jar',
'generated_src_dirs': ['>@(generated_R_dirs)'],
'generated_R_dirs': [],
'has_java_resources%': 0,
@@ -74,6 +75,7 @@
'all_dependent_settings': {
'variables': {
'input_jars_paths': ['<(jar_path)'],
+ 'library_dexed_jars_paths': ['<(dex_path)'],
},
},
'conditions': [
@@ -226,5 +228,28 @@
'--ignore=>!(echo \'>(_inputs)\' | md5sum)',
]
},
+ {
+ 'action_name': 'dex_<(_target_name)',
+ 'message': 'Dexing <(_target_name) jar',
+ 'inputs': [
+ '<(DEPTH)/build/android/pylib/build_utils.py',
+ '<(DEPTH)/build/android/dex.py',
+ '<(jar_path)',
+ ],
+ 'outputs': [
+ '<(dex_path)',
+ ],
+ 'action': [
+ 'python', '<(DEPTH)/build/android/dex.py',
+ '--dex-path=<(dex_path)',
+ '--android-sdk-root=<(android_sdk_root)',
+
+ # TODO(newt): remove this once http://crbug.com/177552 is fixed in ninja.
+ '--ignore=>!(echo >(_inputs) | md5sum)',
+
+ '<(jar_path)',
+ ]
+ },
+
],
}
diff --git a/build/java_apk.gypi b/build/java_apk.gypi
index c42f969..bfe8d9c 100644
--- a/build/java_apk.gypi
+++ b/build/java_apk.gypi
@@ -53,6 +53,7 @@
'variables': {
'additional_input_paths': [],
'input_jars_paths': [],
+ 'library_dexed_jars_paths': [],
'additional_src_dirs': [],
'generated_src_dirs': [],
'app_manifest_version_name%': '<(android_app_version_name)',
@@ -312,7 +313,7 @@
'dex_generated_inputs': [],
}, {
'dex_inputs': [
- '>@(input_jars_paths)',
+ '>@(library_dexed_jars_paths)',
],
'dex_generated_inputs': [
'<(classes_dir)',
diff --git a/chrome/chrome_android.gypi b/chrome/chrome_android.gypi
index 1af9aec..1118407 100644
--- a/chrome/chrome_android.gypi
+++ b/chrome/chrome_android.gypi
@@ -78,23 +78,7 @@
'dependencies': [
'chromium_testshell',
],
- # This all_dependent_settings is used for java targets only. This will add
- # the chromium_testshell jar to the classpath of dependent java targets.
- 'all_dependent_settings': {
- 'variables': {
- 'input_jars_paths': ['>(apk_output_jar_path)'],
- },
- },
- # Add an action with the appropriate output. This allows the generated
- # buildfiles to determine which target the output corresponds to.
- 'actions': [
- {
- 'action_name': 'fake_generate_jar',
- 'inputs': [],
- 'outputs': ['>(apk_output_jar_path)'],
- 'action': [],
- },
- ],
+ 'includes': [ '../build/apk_fake_jar.gypi' ],
},
{
'target_name': 'chrome_android_core',
diff --git a/content/content_shell.gypi b/content/content_shell.gypi
index 4c45e15..b41587d 100644
--- a/content/content_shell.gypi
+++ b/content/content_shell.gypi
@@ -642,24 +642,7 @@
'dependencies': [
'content_shell_apk',
],
- # This all_dependent_settings is used for java targets only. This will
- # add the content_shell jar to the classpath of dependent java
- # targets.
- 'all_dependent_settings': {
- 'variables': {
- 'input_jars_paths': ['>(apk_output_jar_path)'],
- },
- },
- # Add an action with the appropriate output. This allows the generated
- # buildfiles to determine which target the output corresponds to.
- 'actions': [
- {
- 'action_name': 'fake_generate_jar',
- 'inputs': [],
- 'outputs': ['>(apk_output_jar_path)'],
- 'action': [],
- },
- ],
+ 'includes': [ '../build/apk_fake_jar.gypi' ],
},
{
'target_name': 'content_shell_apk',