diff options
author | 2016-08-11 01:18:52 +0000 | |
---|---|---|
committer | 2016-08-11 09:18:59 +0000 | |
commit | 517510bebde7c44f7d906715080a9f35e98098ca (patch) | |
tree | f790f81b47b55f5d79b50179e47cd07444bbd61d /src/main | |
parent | 261c1f7b4df8cb24a546706766a26886f959686e (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.java | 33 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoFilesProvider.java | 14 |
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; } |