diff options
author | cjhopman@chromium.org <cjhopman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-18 02:33:37 +0000 |
---|---|---|
committer | cjhopman@chromium.org <cjhopman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-18 02:33:37 +0000 |
commit | 6593b277eafa971ae5e05a5200e6757e71684628 (patch) | |
tree | 393077d1827d94333c9b14e3563a3bd54e44f664 /build | |
parent | 977b69904d8625342ca73b3f1636ba716a565c7b (diff) | |
download | chromium_src-6593b277eafa971ae5e05a5200e6757e71684628.zip chromium_src-6593b277eafa971ae5e05a5200e6757e71684628.tar.gz chromium_src-6593b277eafa971ae5e05a5200e6757e71684628.tar.bz2 |
[Android] Fix proguard
Gyp supports only very limited ways of changing behavior based upon
CONFIGURATION_NAME. Particularly, it does not support the way that was
supposed to enable/disable use of proguard.
Instead of trying to switch behavior in gyp, instead pass
CONFIGURATION_NAME, proguard_enabled, and
proguard_enabled_dex_input_path to dex.py and switch the behavior
there.
This also extracts the dex actions into build/android/dex_action.gypi
and uses that for the actions in both build/java.gypi and
build/java_apk.gypi.
BUG=240837
Review URL: https://chromiumcodereview.appspot.com/15231006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@200958 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'build')
-rw-r--r-- | build/android/dex_action.gypi | 61 | ||||
-rwxr-xr-x | build/android/gyp/dex.py | 10 | ||||
-rw-r--r-- | build/java.gypi | 26 | ||||
-rw-r--r-- | build/java_apk.gypi | 40 |
4 files changed, 84 insertions, 53 deletions
diff --git a/build/android/dex_action.gypi b/build/android/dex_action.gypi new file mode 100644 index 0000000..c41effb --- /dev/null +++ b/build/android/dex_action.gypi @@ -0,0 +1,61 @@ +# 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 an action to provide a rule that dexes +# compiled java files. If proguard_enabled == "true" and CONFIGURATION_NAME == +# "Release", then it will dex the proguard_enabled_input_path instead of the +# normal dex_input_paths/dex_generated_input_paths. +# +# To use this, create a gyp target with the following form: +# { +# 'action_name': 'some name for the action' +# 'actions': [ +# 'variables': { +# 'dex_input_paths': [ 'files to dex (when proguard is not used) and add to input paths' ], +# 'dex_generated_input_dirs': [ 'dirs that contain generated files to dex' ], +# 'input_paths': [ 'additional files to be added to the list of inputs' ], +# +# # For targets that use proguard: +# 'proguard_enabled': 'true', +# 'proguard_enabled_input_path': 'path to dex when using proguard', +# }, +# 'includes': [ 'relative/path/to/dex_action.gypi' ], +# ], +# }, +# + +{ + 'message': 'Creating dex file: <(output_path)', + 'variables': { + 'dex_input_paths': [], + 'dex_generated_input_dirs': [], + 'input_paths': [], + 'proguard_enabled%': 'false', + 'proguard_enabled_input_path%': '', + }, + 'inputs': [ + '<(DEPTH)/build/android/gyp/util/build_utils.py', + '<(DEPTH)/build/android/gyp/util/md5_check.py', + '<(DEPTH)/build/android/gyp/dex.py', + '>@(input_paths)', + '>@(dex_input_paths)', + ], + 'outputs': [ + '<(output_path)', + ], + 'action': [ + 'python', '<(DEPTH)/build/android/gyp/dex.py', + '--dex-path=<(output_path)', + '--android-sdk-root=<(android_sdk_root)', + '--configuration-name=<(CONFIGURATION_NAME)', + '--proguard-enabled=<(proguard_enabled)', + '--proguard-enabled-input-path=<(proguard_enabled_input_path)', + + # TODO(newt): remove this once http://crbug.com/177552 is fixed in ninja. + '--ignore=>!(echo \'>(_inputs)\' | md5sum)', + + '>@(dex_input_paths)', + '>@(dex_generated_input_dirs)', + ] +} diff --git a/build/android/gyp/dex.py b/build/android/gyp/dex.py index 84a9c63..86f3878 100755 --- a/build/android/gyp/dex.py +++ b/build/android/gyp/dex.py @@ -31,6 +31,12 @@ def main(argv): parser = optparse.OptionParser() parser.add_option('--android-sdk-root', help='Android sdk root directory.') parser.add_option('--dex-path', help='Dex output path.') + parser.add_option('--configuration-name', + help='The build CONFIGURATION_NAME.') + parser.add_option('--proguard-enabled', + help='"true" if proguard is enabled.') + parser.add_option('--proguard-enabled-input-path', + help='Path to dex in Release mode when proguard is enabled.') parser.add_option('--stamp', help='Path to touch on success.') # TODO(newt): remove this once http://crbug.com/177552 is fixed in ninja. @@ -38,6 +44,10 @@ def main(argv): options, paths = parser.parse_args() + if (options.proguard_enabled == "true" + and options.configuration_name == "Release"): + paths = [options.proguard_enabled_input_path] + DoDex(options, paths) if options.stamp: diff --git a/build/java.gypi b/build/java.gypi index 8256486..3fd6429 100644 --- a/build/java.gypi +++ b/build/java.gypi @@ -282,27 +282,11 @@ }, { 'action_name': 'dex_<(_target_name)', - 'message': 'Dexing <(_target_name) jar', - 'inputs': [ - '<(DEPTH)/build/android/gyp/util/build_utils.py', - '<(DEPTH)/build/android/gyp/util/md5_check.py', - '<(DEPTH)/build/android/gyp/dex.py', - '<(jar_path)', - ], - 'outputs': [ - '<(dex_path)', - ], - 'action': [ - 'python', '<(DEPTH)/build/android/gyp/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)', - ] + 'variables': { + 'dex_input_paths': [ '<(jar_path)' ], + 'output_path': '<(dex_path)', + }, + 'includes': [ 'android/dex_action.gypi' ], }, - ], } diff --git a/build/java_apk.gypi b/build/java_apk.gypi index 19f85bc..8c794f0 100644 --- a/build/java_apk.gypi +++ b/build/java_apk.gypi @@ -480,43 +480,19 @@ }, { 'action_name': 'dex_<(_target_name)', - 'message': 'Dexing <(_target_name) jar', 'variables': { 'conditions': [ - ['proguard_enabled=="true" and CONFIGURATION_NAME=="Release"', { - 'dex_inputs': [ '<(obfuscated_jar_path)' ], - 'dex_generated_inputs': [], - }, { - 'dex_inputs': [ - '>@(library_dexed_jars_paths)', - ], - 'dex_generated_inputs': [ - '<(classes_dir)', - ], + ['proguard_enabled == "true"', { + 'input_paths': [ '<(obfuscate_stamp)' ], + 'proguard_enabled_input_path': '<(obfuscated_jar_path)', }], ], + 'input_paths': [ '<(compile_stamp)' ], + 'dex_input_paths': [ '>@(library_dexed_jars_paths)' ], + 'dex_generated_input_dirs': [ '<(classes_dir)' ], + 'output_path': '<(dex_path)', }, - 'inputs': [ - '<(DEPTH)/build/android/gyp/util/build_utils.py', - '<(DEPTH)/build/android/gyp/util/md5_check.py', - '<(DEPTH)/build/android/gyp/dex.py', - '<(compile_stamp)', - '>@(dex_inputs)', - ], - 'outputs': [ - '<(dex_path)', - ], - 'action': [ - 'python', '<(DEPTH)/build/android/gyp/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)', - - '>@(dex_inputs)', - '>@(dex_generated_inputs)', - ] + 'includes': [ 'android/dex_action.gypi' ], }, { 'action_name': 'ant package resources', |