aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java
diff options
context:
space:
mode:
authorGravatar Adam Michael <ajmichael@google.com>2017-01-11 23:37:14 +0000
committerGravatar Marcel Hlopko <hlopko@google.com>2017-01-12 09:12:19 +0000
commit7fc35ae6890f4130b4d99a6c5007dcee91c5a8cc (patch)
tree4385f78314ba31bd86cd5605e0d46eaaa0822410 /src/main/java
parent19dda2577ece84e99f82af41c18a7bd2c796ff99 (diff)
aar_import provides JavaCompilationArgsProvider for DexArchiveAspect.
-- PiperOrigin-RevId: 144258810 MOS_MIGRATED_REVID=144258810
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAarImport.java25
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAarImportRule.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java37
3 files changed, 63 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAarImport.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAarImport.java
new file mode 100644
index 0000000000..9761c3b2eb
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAarImport.java
@@ -0,0 +1,25 @@
+// Copyright 2017 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.devtools.build.lib.bazel.rules.android;
+
+import com.google.devtools.build.lib.bazel.rules.java.BazelJavaSemantics;
+import com.google.devtools.build.lib.rules.android.AarImport;
+
+/** Implementation of {@code aar_import} with Bazel semantics. */
+public class BazelAarImport extends AarImport {
+ public BazelAarImport() {
+ super(BazelJavaSemantics.INSTANCE);
+ }
+}
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAarImportRule.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAarImportRule.java
index d55bf7a600..9753db862a 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAarImportRule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAarImportRule.java
@@ -18,7 +18,6 @@ import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
import com.google.devtools.build.lib.bazel.rules.java.BazelJavaRuleClasses.JavaBaseRule;
import com.google.devtools.build.lib.packages.RuleClass;
import com.google.devtools.build.lib.packages.RuleClass.Builder;
-import com.google.devtools.build.lib.rules.android.AarImport;
import com.google.devtools.build.lib.rules.android.AarImportBaseRule;
/**
@@ -36,7 +35,7 @@ public final class BazelAarImportRule implements RuleDefinition {
return RuleDefinition.Metadata.builder()
.name("aar_import")
.ancestors(AarImportBaseRule.class, JavaBaseRule.class)
- .factoryClass(AarImport.class)
+ .factoryClass(BazelAarImport.class)
.build();
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java b/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java
index 8e06123816..c65c84f811 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java
@@ -28,10 +28,13 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.collect.nestedset.Order;
import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory;
import com.google.devtools.build.lib.rules.java.JavaCommon;
+import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider;
+import com.google.devtools.build.lib.rules.java.JavaCompilationArtifacts;
import com.google.devtools.build.lib.rules.java.JavaHelper;
import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider;
import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider.OutputJar;
import com.google.devtools.build.lib.rules.java.JavaRuntimeJarProvider;
+import com.google.devtools.build.lib.rules.java.JavaSemantics;
import com.google.devtools.build.lib.rules.java.JavaToolchainProvider;
import com.google.devtools.build.lib.rules.java.Jvm;
import com.google.devtools.build.lib.vfs.PathFragment;
@@ -49,6 +52,12 @@ public class AarImport implements RuleConfiguredTargetFactory {
private static final String ANDROID_MANIFEST = "AndroidManifest.xml";
private static final String MERGED_JAR = "classes_and_libs_merged.jar";
+ private final JavaSemantics javaSemantics;
+
+ protected AarImport(JavaSemantics javaSemantics) {
+ this.javaSemantics = javaSemantics;
+ }
+
@Override
public ConfiguredTarget create(RuleContext ruleContext)
throws InterruptedException, RuleErrorException {
@@ -116,6 +125,23 @@ public class AarImport implements RuleConfiguredTargetFactory {
}
}
+ ImmutableList<TransitiveInfoCollection> targets =
+ ImmutableList.<TransitiveInfoCollection>copyOf(
+ ruleContext.getPrerequisites("exports", Mode.TARGET));
+ JavaCommon common =
+ new JavaCommon(
+ ruleContext,
+ javaSemantics,
+ /* sources = */ ImmutableList.<Artifact>of(),
+ /* compileDeps = */ targets,
+ /* runtimeDeps = */ targets,
+ /* bothDeps = */ targets);
+ common.setJavaCompilationArtifacts(
+ new JavaCompilationArtifacts.Builder()
+ .addRuntimeJar(mergedJar)
+ .addCompileTimeJar(mergedJar)
+ .build());
+
return ruleBuilder
.setFilesToBuild(filesToBuildBuilder.build())
.addProvider(RunfilesProvider.class, RunfilesProvider.EMPTY)
@@ -127,6 +153,17 @@ public class AarImport implements RuleConfiguredTargetFactory {
AndroidCommon.collectTransitiveNativeLibsZips(ruleContext).add(nativeLibs).build()))
.addProvider(
JavaRuntimeJarProvider.class, new JavaRuntimeJarProvider(ImmutableList.of(mergedJar)))
+ .addProvider(
+ JavaCompilationArgsProvider.class,
+ JavaCompilationArgsProvider.create(
+ common.collectJavaCompilationArgs(
+ /* recursive = */ false,
+ JavaCommon.isNeverLink(ruleContext),
+ /* srcLessDepsExport = */ false),
+ common.collectJavaCompilationArgs(
+ /* recursive = */ true,
+ JavaCommon.isNeverLink(ruleContext),
+ /* srcLessDepsExport = */ false)))
.addProvider(JavaRuleOutputJarsProvider.class, jarProviderBuilder.build())
.build();
}