aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools
diff options
context:
space:
mode:
authorGravatar plf <plf@google.com>2018-03-02 00:51:12 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-02 00:53:01 -0800
commit627c27698774c50987b2b8716fd8d46aa299c7ff (patch)
treef80b56de560c96c0ff366954823cff249db598ec /src/main/java/com/google/devtools
parente02bc5f290adda76d337c5110e53d8a5d4f41dca (diff)
C++: Exposes to Skylark basic API functionality
RELNOTES:none PiperOrigin-RevId: 187591225
Diffstat (limited to 'src/main/java/com/google/devtools')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationInfo.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationOutputs.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsInfo.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java15
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);