aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java33
-rw-r--r--src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoFilesProvider.java14
2 files changed, 37 insertions, 10 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java
index 8f29d09ae8..2d88b4b480 100644
--- a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java
@@ -67,9 +67,11 @@ import com.google.devtools.build.lib.packages.TargetUtils;
import com.google.devtools.build.lib.rules.android.AndroidIdeInfoProvider;
import com.google.devtools.build.lib.rules.android.AndroidIdeInfoProvider.SourceDirectory;
import com.google.devtools.build.lib.rules.android.AndroidSdkProvider;
+import com.google.devtools.build.lib.rules.cpp.CcLinkParamsProvider;
import com.google.devtools.build.lib.rules.cpp.CcToolchainProvider;
import com.google.devtools.build.lib.rules.cpp.CppCompilationContext;
import com.google.devtools.build.lib.rules.cpp.CppConfiguration;
+import com.google.devtools.build.lib.rules.cpp.LinkerInput;
import com.google.devtools.build.lib.rules.java.JavaExportsProvider;
import com.google.devtools.build.lib.rules.java.JavaGenJarsProvider;
import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider;
@@ -79,14 +81,12 @@ import com.google.devtools.build.lib.rules.java.JavaToolchainProvider;
import com.google.devtools.build.lib.syntax.Type;
import com.google.devtools.build.lib.vfs.PathFragment;
import com.google.protobuf.MessageLite;
-
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.Collection;
import java.util.List;
-
import javax.annotation.Nullable;
/**
@@ -97,9 +97,10 @@ public class AndroidStudioInfoAspect extends NativeAspectClass implements Config
// Output groups.
- public static final String IDE_INFO = "ide-info";
- public static final String IDE_INFO_TEXT = "ide-info-text";
- public static final String IDE_RESOLVE = "ide-resolve";
+ static final String IDE_INFO = "ide-info";
+ static final String IDE_INFO_TEXT = "ide-info-text";
+ static final String IDE_RESOLVE = "ide-resolve";
+ static final String IDE_COMPILE = "ide-compile";
private final String toolsRepository;
private final AndroidStudioInfoSemantics androidStudioInfoSemantics;
@@ -197,6 +198,7 @@ public class AndroidStudioInfoAspect extends NativeAspectClass implements Config
.addOutputGroup(IDE_INFO, provider.getIdeInfoFiles())
.addOutputGroup(IDE_INFO_TEXT, provider.getIdeInfoTextFiles())
.addOutputGroup(IDE_RESOLVE, provider.getIdeResolveFiles())
+ .addOutputGroup(IDE_COMPILE, provider.getIdeCompileFiles())
.addProvider(
AndroidStudioInfoFilesProvider.class,
provider);
@@ -289,6 +291,7 @@ public class AndroidStudioInfoAspect extends NativeAspectClass implements Config
providerBuilder.ideInfoFilesBuilder().addTransitive(depProvider.getIdeInfoFiles());
providerBuilder.ideInfoTextFilesBuilder().addTransitive(depProvider.getIdeInfoTextFiles());
providerBuilder.ideResolveFilesBuilder().addTransitive(depProvider.getIdeResolveFiles());
+ providerBuilder.ideCompileFilesBuilder().addTransitive(depProvider.getIdeCompileFiles());
}
@@ -310,6 +313,7 @@ public class AndroidStudioInfoAspect extends NativeAspectClass implements Config
providerBuilder.ideInfoFilesBuilder().add(ideInfoFile);
providerBuilder.ideInfoTextFilesBuilder().add(ideInfoTextFile);
NestedSetBuilder<Artifact> ideResolveArtifacts = providerBuilder.ideResolveFilesBuilder();
+ NestedSetBuilder<Artifact> ideCompileArtifacts = providerBuilder.ideCompileFilesBuilder();
RuleIdeInfo.Builder outputBuilder = RuleIdeInfo.newBuilder();
@@ -344,8 +348,8 @@ public class AndroidStudioInfoAspect extends NativeAspectClass implements Config
getJavaSourceForPackageManifest(ruleContext)));
}
- JavaRuleIdeInfo javaRuleIdeInfo = makeJavaRuleIdeInfo(
- base, ruleContext, outputJarsProvider, ideResolveArtifacts, packageManifest);
+ JavaRuleIdeInfo javaRuleIdeInfo = makeJavaRuleIdeInfo(base, ruleContext,
+ outputJarsProvider, ideResolveArtifacts, packageManifest);
outputBuilder.setJavaRuleIdeInfo(javaRuleIdeInfo);
}
@@ -353,8 +357,8 @@ public class AndroidStudioInfoAspect extends NativeAspectClass implements Config
if (isCppRule(base)) {
CppCompilationContext cppCompilationContext = base.getProvider(CppCompilationContext.class);
if (cppCompilationContext != null) {
- CRuleIdeInfo cRuleIdeInfo =
- makeCRuleIdeInfo(base, ruleContext, cppCompilationContext, ideResolveArtifacts);
+ CRuleIdeInfo cRuleIdeInfo = makeCRuleIdeInfo(base, ruleContext,
+ cppCompilationContext, ideResolveArtifacts, ideCompileArtifacts);
outputBuilder.setCRuleIdeInfo(cRuleIdeInfo);
}
}
@@ -638,7 +642,8 @@ public class AndroidStudioInfoAspect extends NativeAspectClass implements Config
ConfiguredTarget base,
RuleContext ruleContext,
CppCompilationContext cppCompilationContext,
- NestedSetBuilder<Artifact> ideResolveArtifacts) {
+ NestedSetBuilder<Artifact> ideResolveArtifacts,
+ NestedSetBuilder<Artifact> ideCompileArtifacts) {
CRuleIdeInfo.Builder builder = CRuleIdeInfo.newBuilder();
Collection<Artifact> sourceFiles = getSources(ruleContext);
@@ -673,6 +678,14 @@ public class AndroidStudioInfoAspect extends NativeAspectClass implements Config
builder.addTransitiveSystemIncludeDirectory(pathFragment.getSafePathString());
}
+ // Add libs to ide-compile
+ CcLinkParamsProvider ccLinkParams = base.getProvider(CcLinkParamsProvider.class);
+ if (ccLinkParams != null) {
+ for (LinkerInput lib : ccLinkParams.getCcLinkParams(true, false).getLibraries()) {
+ ideCompileArtifacts.add(lib.getArtifact());
+ }
+ }
+
androidStudioInfoSemantics.augmentCppRuleInfo(
builder, base, ruleContext, cppCompilationContext, ideResolveArtifacts);
diff --git a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoFilesProvider.java b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoFilesProvider.java
index 8f57d965d9..04af6749a6 100644
--- a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoFilesProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoFilesProvider.java
@@ -29,6 +29,7 @@ public final class AndroidStudioInfoFilesProvider implements TransitiveInfoProvi
private final NestedSet<Artifact> ideInfoFiles;
private final NestedSet<Artifact> ideInfoTextFiles;
private final NestedSet<Artifact> ideResolveFiles;
+ private final NestedSet<Artifact> ideCompileFiles;
private final NestedSet<Label> exportedDeps;
/**
@@ -38,12 +39,14 @@ public final class AndroidStudioInfoFilesProvider implements TransitiveInfoProvi
private final NestedSetBuilder<Artifact> ideInfoFilesBuilder;
private final NestedSetBuilder<Artifact> ideInfoTextFilesBuilder;
private final NestedSetBuilder<Artifact> ideResolveFilesBuilder;
+ private final NestedSetBuilder<Artifact> ideCompileFilesBuilder;
private NestedSetBuilder<Label> exportedDepsBuilder;
public Builder() {
ideInfoFilesBuilder = NestedSetBuilder.stableOrder();
ideInfoTextFilesBuilder = NestedSetBuilder.stableOrder();
ideResolveFilesBuilder = NestedSetBuilder.stableOrder();
+ ideCompileFilesBuilder = NestedSetBuilder.stableOrder();
exportedDepsBuilder = NestedSetBuilder.stableOrder();
}
@@ -59,6 +62,10 @@ public final class AndroidStudioInfoFilesProvider implements TransitiveInfoProvi
return ideResolveFilesBuilder;
}
+ public NestedSetBuilder<Artifact> ideCompileFilesBuilder() {
+ return ideCompileFilesBuilder;
+ }
+
public NestedSetBuilder<Label> exportedDepsBuilder() {
return exportedDepsBuilder;
}
@@ -68,6 +75,7 @@ public final class AndroidStudioInfoFilesProvider implements TransitiveInfoProvi
ideInfoFilesBuilder.build(),
ideInfoTextFilesBuilder.build(),
ideResolveFilesBuilder.build(),
+ ideCompileFilesBuilder.build(),
exportedDepsBuilder.build()
);
}
@@ -77,10 +85,12 @@ public final class AndroidStudioInfoFilesProvider implements TransitiveInfoProvi
NestedSet<Artifact> ideInfoFiles,
NestedSet<Artifact> ideInfoTextFiles,
NestedSet<Artifact> ideResolveFiles,
+ NestedSet<Artifact> ideCompileFiles,
NestedSet<Label> exportedDeps) {
this.ideInfoFiles = ideInfoFiles;
this.ideInfoTextFiles = ideInfoTextFiles;
this.ideResolveFiles = ideResolveFiles;
+ this.ideCompileFiles = ideCompileFiles;
this.exportedDeps = exportedDeps;
}
@@ -96,6 +106,10 @@ public final class AndroidStudioInfoFilesProvider implements TransitiveInfoProvi
return ideResolveFiles;
}
+ public NestedSet<Artifact> getIdeCompileFiles() {
+ return ideCompileFiles;
+ }
+
public NestedSet<Label> getExportedDeps() {
return exportedDeps;
}