diff options
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; } |