aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java13
2 files changed, 25 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
index 1cff635270..81e89562b4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
@@ -424,6 +424,13 @@ public class AndroidCommon {
}
}
+ if (disallowDepsWithoutSrcs(ruleContext.getRule().getRuleClass())
+ && ruleContext.attributes().get("srcs", BuildType.LABEL_LIST).isEmpty()
+ && ruleContext.attributes().get("idl_srcs", BuildType.LABEL_LIST).isEmpty()
+ && !ruleContext.attributes().get("deps", BuildType.LABEL_LIST).isEmpty()) {
+ ruleContext.attributeError("deps", "deps not allowed without srcs; move to exports?");
+ }
+
JavaCompilationHelper helper = initAttributes(attributes, javaSemantics);
if (ruleContext.hasErrors()) {
return null;
@@ -449,6 +456,11 @@ public class AndroidCommon {
return helper.getAttributes();
}
+ private boolean disallowDepsWithoutSrcs(String ruleClass) {
+ return ruleClass.equals("android_library")
+ && !ruleContext.getFragment(AndroidConfiguration.class).allowSrcsLessAndroidLibraryDeps();
+ }
+
private JavaCompilationHelper initAttributes(
JavaTargetAttributes.Builder attributes, JavaSemantics semantics) {
JavaCompilationHelper helper = new JavaCompilationHelper(
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 57423dfbdb..7a52637383 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
@@ -179,6 +179,13 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment {
help = "Enables sanity checks for Jack and Jill compilation.")
public boolean jackSanityChecks;
+ @Option(name = "experimental_allow_android_library_deps_without_srcs",
+ defaultValue = "true",
+ category = "undocumented",
+ help = "Flag to help transition from allowing to disallowing srcs-less android_library"
+ + " rules with deps. The depot needs to be cleaned up to roll this out by default.")
+ public boolean allowAndroidLibraryDepsWithoutSrcs;
+
@Override
public void addAllLabels(Multimap<String, Label> labelMap) {
if (androidCrosstoolTop != null) {
@@ -240,6 +247,7 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment {
private final ConfigurationDistinguisher configurationDistinguisher;
private final boolean useJackForDexing;
private final boolean jackSanityChecks;
+ private final boolean allowAndroidLibraryDepsWithoutSrcs;
AndroidConfiguration(Options options) {
this.sdk = options.sdk;
@@ -251,6 +259,7 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment {
this.configurationDistinguisher = options.configurationDistinguisher;
this.useJackForDexing = options.useJackForDexing;
this.jackSanityChecks = options.jackSanityChecks;
+ this.allowAndroidLibraryDepsWithoutSrcs = options.allowAndroidLibraryDepsWithoutSrcs;
}
public String getCpu() {
@@ -292,6 +301,10 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment {
return incrementalNativeLibs;
}
+ public boolean allowSrcsLessAndroidLibraryDeps() {
+ return allowAndroidLibraryDepsWithoutSrcs;
+ }
+
@Override
public void addGlobalMakeVariables(ImmutableMap.Builder<String, String> globalMakeEnvBuilder) {
globalMakeEnvBuilder.put("ANDROID_CPU", cpu);