diff options
author | 2015-10-12 12:38:22 +0000 | |
---|---|---|
committer | 2015-10-12 13:30:02 +0000 | |
commit | fe24ff7f66f33eb84ba78b5068fe0fde685f0d6a (patch) | |
tree | 003f062b6bf61fa36016d7af740ebeffd50214de /src/main | |
parent | c74ee3784d3fd3a722f92c39805e57b4353a4509 (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')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java | 8 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java | 105 |
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"); |