aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build
diff options
context:
space:
mode:
authorGravatar Austin Schuh <austin.linux@gmail.com>2015-10-12 12:38:22 +0000
committerGravatar Lukacs Berki <lberki@google.com>2015-10-12 13:30:02 +0000
commitfe24ff7f66f33eb84ba78b5068fe0fde685f0d6a (patch)
tree003f062b6bf61fa36016d7af740ebeffd50214de /src/main/java/com/google/devtools/build
parentc74ee3784d3fd3a722f92c39805e57b4353a4509 (diff)
Added android_compiler flag.
Added a flag which allows the user to specify the android compiler. This commit also disconnects the android compiler from the main --compiler flag. Changing the --compiler flag won't change the compiler used by the android rules. -- Change-Id: I788d3a353a1cc304e1c015b9dd283258e6e172d4 Reviewed-on: https://bazel-review.googlesource.com/2112 MOS_MIGRATED_REVID=105203751
Diffstat (limited to 'src/main/java/com/google/devtools/build')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java105
2 files changed, 61 insertions, 52 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java
index 1bfebdd968..05f5e2ceb5 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java
@@ -120,6 +120,14 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment {
help = "The Android target CPU.")
public String cpu;
+ @Option(
+ name = "android_compiler",
+ defaultValue = "null",
+ category = "semantics",
+ help = "The Android target compiler."
+ )
+ public String cppCompiler;
+
@Option(name = "strict_android_deps",
allowMultiple = false,
defaultValue = "default",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java
index 2a34ed02d3..6b3d79b857 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java
@@ -168,63 +168,64 @@ public final class AndroidRuleClasses {
public static final SplitTransition<BuildOptions> ANDROID_SPLIT_TRANSITION =
new SplitTransition<BuildOptions>() {
- @Override
- public boolean defaultsToSelf() {
- return true;
- }
-
- private void setCrosstoolToAndroid(BuildOptions output, BuildOptions input) {
- AndroidConfiguration.Options inputAndroidOptions =
- input.get(AndroidConfiguration.Options.class);
- AndroidConfiguration.Options outputAndroidOptions =
- output.get(AndroidConfiguration.Options.class);
-
- CppOptions cppOptions = output.get(CppOptions.class);
- if (inputAndroidOptions.androidCrosstoolTop != null
- && !cppOptions.crosstoolTop.equals(inputAndroidOptions.androidCrosstoolTop)) {
- if (cppOptions.hostCrosstoolTop == null) {
- cppOptions.hostCrosstoolTop = cppOptions.crosstoolTop;
+ @Override
+ public boolean defaultsToSelf() {
+ return true;
}
- cppOptions.crosstoolTop = inputAndroidOptions.androidCrosstoolTop;
- }
- outputAndroidOptions.configurationDistinguisher = ConfigurationDistinguisher.ANDROID;
- }
+ private void setCrosstoolToAndroid(BuildOptions output, BuildOptions input) {
+ AndroidConfiguration.Options inputAndroidOptions =
+ input.get(AndroidConfiguration.Options.class);
+ AndroidConfiguration.Options outputAndroidOptions =
+ output.get(AndroidConfiguration.Options.class);
+
+ CppOptions cppOptions = output.get(CppOptions.class);
+ if (inputAndroidOptions.androidCrosstoolTop != null
+ && !cppOptions.crosstoolTop.equals(inputAndroidOptions.androidCrosstoolTop)) {
+ if (cppOptions.hostCrosstoolTop == null) {
+ cppOptions.hostCrosstoolTop = cppOptions.crosstoolTop;
+ }
+ cppOptions.crosstoolTop = inputAndroidOptions.androidCrosstoolTop;
+ }
- @Override
- public List<BuildOptions> split(BuildOptions buildOptions) {
- AndroidConfiguration.Options androidOptions =
- buildOptions.get(AndroidConfiguration.Options.class);
- CppOptions cppOptions = buildOptions.get(CppOptions.class);
- Label androidCrosstoolTop = androidOptions.androidCrosstoolTop;
- if (androidOptions.realFatApkCpus().isEmpty()
- && (androidCrosstoolTop == null
- || androidCrosstoolTop.equals(cppOptions.crosstoolTop))) {
- return ImmutableList.of();
- }
+ outputAndroidOptions.configurationDistinguisher = ConfigurationDistinguisher.ANDROID;
+ }
- if (androidOptions.realFatApkCpus().isEmpty()) {
- BuildOptions splitOptions = buildOptions.clone();
- setCrosstoolToAndroid(splitOptions, buildOptions);
- return ImmutableList.of(splitOptions);
- }
+ @Override
+ public List<BuildOptions> split(BuildOptions buildOptions) {
+ AndroidConfiguration.Options androidOptions =
+ buildOptions.get(AndroidConfiguration.Options.class);
+ CppOptions cppOptions = buildOptions.get(CppOptions.class);
+ Label androidCrosstoolTop = androidOptions.androidCrosstoolTop;
+ if (androidOptions.realFatApkCpus().isEmpty()
+ && (androidCrosstoolTop == null
+ || androidCrosstoolTop.equals(cppOptions.crosstoolTop))) {
+ return ImmutableList.of();
+ }
- List<BuildOptions> result = new ArrayList<>();
- for (String cpu : ImmutableSortedSet.copyOf(androidOptions.realFatApkCpus())) {
- BuildOptions splitOptions = buildOptions.clone();
- // Disable fat APKs for the child configurations.
- splitOptions.get(AndroidConfiguration.Options.class).fatApkCpus = ImmutableList.of();
-
- // Set the cpu & android_cpu.
- // TODO(bazel-team): --android_cpu doesn't follow --cpu right now; it should.
- splitOptions.get(AndroidConfiguration.Options.class).cpu = cpu;
- splitOptions.get(BuildConfiguration.Options.class).cpu = cpu;
- setCrosstoolToAndroid(splitOptions, buildOptions);
- result.add(splitOptions);
- }
- return result;
- }
- };
+ if (androidOptions.realFatApkCpus().isEmpty()) {
+ BuildOptions splitOptions = buildOptions.clone();
+ setCrosstoolToAndroid(splitOptions, buildOptions);
+ return ImmutableList.of(splitOptions);
+ }
+
+ List<BuildOptions> result = new ArrayList<>();
+ for (String cpu : ImmutableSortedSet.copyOf(androidOptions.realFatApkCpus())) {
+ BuildOptions splitOptions = buildOptions.clone();
+ // Disable fat APKs for the child configurations.
+ splitOptions.get(AndroidConfiguration.Options.class).fatApkCpus = ImmutableList.of();
+
+ // Set the cpu & android_cpu.
+ // TODO(bazel-team): --android_cpu doesn't follow --cpu right now; it should.
+ splitOptions.get(AndroidConfiguration.Options.class).cpu = cpu;
+ splitOptions.get(BuildConfiguration.Options.class).cpu = cpu;
+ splitOptions.get(CppOptions.class).cppCompiler = androidOptions.cppCompiler;
+ setCrosstoolToAndroid(splitOptions, buildOptions);
+ result.add(splitOptions);
+ }
+ return result;
+ }
+ };
public static final FileType ANDROID_IDL = FileType.of(".aidl");