diff options
Diffstat (limited to 'src/main/java/com')
5 files changed, 52 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java index 36ba98b96d..35c02d76f7 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java @@ -52,6 +52,9 @@ import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.Variables.Str import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.Variables.VariablesExtension; import com.google.devtools.build.lib.rules.cpp.CppCompileAction.DotdFile; import com.google.devtools.build.lib.rules.cpp.CppConfiguration.HeadersCheckingMode; +import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; +import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; +import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; import com.google.devtools.build.lib.syntax.Type; import com.google.devtools.build.lib.util.FileType; import com.google.devtools.build.lib.util.FileTypeSet; @@ -222,6 +225,13 @@ public final class CcCompilationHelper { * Contains the providers as well as the {@code CcCompilationOutputs} and the {@code * CcCompilationInfo}. */ + @SkylarkModule( + name = "compilation_info", + category = SkylarkModuleCategory.BUILTIN, + doc = "Helper class containing CC compilation providers." + ) + // TODO(plf): Rename so that it's not confused with CcCompilationInfo and also consider merging + // this class with {@code CcCompilationOutputs}. public static final class CompilationInfo { private final TransitiveInfoProviderMap providers; private final Map<String, NestedSet<Artifact>> outputGroups; @@ -247,10 +257,12 @@ public final class CcCompilationHelper { return outputGroups; } + @SkylarkCallable(name = "cc_compilation_outputs", documented = false) public CcCompilationOutputs getCcCompilationOutputs() { return compilationOutputs; } + @SkylarkCallable(name = "cc_compilation_info", documented = false) public CcCompilationInfo getCcCompilationInfo() { return ccCompilationInfo; } diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationInfo.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationInfo.java index c51a781f63..01fc2e528b 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationInfo.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationInfo.java @@ -32,6 +32,8 @@ import com.google.devtools.build.lib.packages.NativeProvider; import com.google.devtools.build.lib.rules.cpp.CppHelper.PregreppedHeader; import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization; +import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; +import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; import com.google.devtools.build.lib.vfs.PathFragment; import java.util.ArrayList; import java.util.Collection; @@ -46,6 +48,13 @@ import javax.annotation.Nullable; */ @Immutable @AutoCodec +@SkylarkModule( + name = "cc_compilation_info", + category = SkylarkModuleCategory.PROVIDER, + doc = + "Immutable store of information needed for C++ compilation that is aggregated across " + + "dependencies." +) public final class CcCompilationInfo extends NativeInfo { public static final NativeProvider<CcCompilationInfo> PROVIDER = new NativeProvider<CcCompilationInfo>(CcCompilationInfo.class, "CcCompilationInfo") {}; diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationOutputs.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationOutputs.java index 6bcbc5cee7..b524ae49c8 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationOutputs.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationOutputs.java @@ -22,14 +22,19 @@ import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; +import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; +import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; -/** - * A structured representation of the compilation outputs of a C++ rule. - */ +/** A structured representation of the compilation outputs of a C++ rule. */ +@SkylarkModule( + name = "cc_compilation_outputs", + category = SkylarkModuleCategory.BUILTIN, + doc = "Helper class containing CC compilation outputs." +) public class CcCompilationOutputs { /** * All .o files built by the target. diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsInfo.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsInfo.java index eb8b78847b..3af632b858 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsInfo.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsInfo.java @@ -23,10 +23,18 @@ import com.google.devtools.build.lib.rules.cpp.CcLinkParams.Builder; import com.google.devtools.build.lib.rules.cpp.CcLinkParamsStore.CcLinkParamsStoreImpl; import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization; +import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; +import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; /** A target that provides C linker parameters. */ @Immutable @AutoCodec +@SkylarkModule( + name = "cc_link_params_info", + title = "cc_link_params_info", + category = SkylarkModuleCategory.PROVIDER, + doc = "Link params provider" +) public final class CcLinkParamsInfo extends NativeInfo { public static final NativeProvider<CcLinkParamsInfo> PROVIDER = new NativeProvider<CcLinkParamsInfo>(CcLinkParamsInfo.class, "link_params") {}; diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java index c9356c80f8..f979800ae4 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java @@ -49,6 +49,9 @@ import com.google.devtools.build.lib.rules.cpp.Link.LinkTargetType; import com.google.devtools.build.lib.rules.cpp.Link.Picness; import com.google.devtools.build.lib.rules.cpp.Link.Staticness; import com.google.devtools.build.lib.rules.cpp.LinkerInputs.LibraryToLink; +import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; +import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; +import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; import com.google.devtools.build.lib.syntax.Type; import com.google.devtools.build.lib.vfs.FileSystemUtils; import com.google.devtools.build.lib.vfs.PathFragment; @@ -76,6 +79,11 @@ public final class CcLinkingHelper { public static final String DYNAMIC_LIBRARY_OUTPUT_GROUP_NAME = "dynamic_library"; /** Contains the providers as well as the linking outputs. */ + @SkylarkModule( + name = "linking_info", + category = SkylarkModuleCategory.BUILTIN, + doc = "Helper class containing CC linking providers." + ) public static final class LinkingInfo { private final TransitiveInfoProviderMap providers; private final Map<String, NestedSet<Artifact>> outputGroups; @@ -98,6 +106,11 @@ public final class CcLinkingHelper { return providers; } + @SkylarkCallable(name = "cc_link_params_info", documented = false) + public CcLinkParamsInfo getCcLinkParamsInfo() { + return (CcLinkParamsInfo) providers.getProvider(CcLinkParamsInfo.PROVIDER.getKey()); + } + public Map<String, NestedSet<Artifact>> getOutputGroups() { return outputGroups; } @@ -425,6 +438,8 @@ public final class CcLinkingHelper { * * @throws RuleErrorException */ + // TODO(b/73997894): Try to remove CcCompilationInfo. Right now headers are passed as non code + // inputs to the linker. public LinkingInfo link(CcCompilationOutputs ccOutputs, CcCompilationInfo ccCompilationInfo) throws RuleErrorException, InterruptedException { Preconditions.checkNotNull(ccOutputs); |