diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java | 12 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java | 13 |
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); |