aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2016-08-11 01:18:52 +0000
committerGravatar Yue Gan <yueg@google.com>2016-08-11 09:18:59 +0000
commit517510bebde7c44f7d906715080a9f35e98098ca (patch)
treef790f81b47b55f5d79b50179e47cd07444bbd61d /src/main
parent261c1f7b4df8cb24a546706766a26886f959686e (diff)
Add ide-compile output group to IDE aspect.
This output group will contain all artifacts that are needed to compile the project (and get compilation errors), but aren't needed during the resolve step. Initially ide-compile is the object file output from any cc_* rule, so we can get compile errors. -- MOS_MIGRATED_REVID=129937436
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;
}