aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar cparsons <cparsons@google.com>2018-05-15 13:48:10 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-05-15 13:49:54 -0700
commite54859e5aad69c1b05c3460d8083e9b4736ae3ed (patch)
tree58922ca8e412ab06a48d96a7dbe7c0a6fffd5909 /src/main/java/com/google/devtools/build/lib
parent841406ba6297ba7356238b6e708c0a7090720ddf (diff)
Migrate several compilation-related cpp definitions to skylarkbuildapi
RELNOTES: None. PiperOrigin-RevId: 196722758
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationContext.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java18
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationInfo.java19
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/BUILD1
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcCompilationContextApi.java31
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcCompilationInfoApi.java38
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CompilationInfoApi.java41
7 files changed, 121 insertions, 40 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationContext.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationContext.java
index 6df4ff1a8f..15b5dc79d1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationContext.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationContext.java
@@ -30,8 +30,7 @@ import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
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.skylarkbuildapi.cpp.CcCompilationContextApi;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.util.ArrayList;
import java.util.Collection;
@@ -47,16 +46,8 @@ import javax.annotation.Nullable;
*/
@Immutable
@AutoCodec
-@SkylarkModule(
- name = "cc_compilation_context",
- documented = false,
- category = SkylarkModuleCategory.PROVIDER,
- doc =
- "Immutable store of information needed for C++ compilation that is aggregated across "
- + "dependencies."
-)
// TODO(b/77669139): Rename to CcCompilationContext.
-public final class CcCompilationContext {
+public final class CcCompilationContext implements CcCompilationContextApi {
/** An empty {@code CcCompilationContext}. */
public static final CcCompilationContext EMPTY = new Builder(null).build();
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 b64778d76d..d03dda0348 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
@@ -50,9 +50,7 @@ import com.google.devtools.build.lib.rules.cpp.CcCommon.CoptsFilter;
import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfiguration;
import com.google.devtools.build.lib.rules.cpp.CcToolchainVariables.VariablesExtension;
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.skylarkbuildapi.cpp.CompilationInfoApi;
import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
import com.google.devtools.build.lib.syntax.Type;
import com.google.devtools.build.lib.util.FileTypeSet;
@@ -139,16 +137,10 @@ public final class CcCompilationHelper {
* Contains the providers as well as the {@code CcCompilationOutputs} and the {@code
* CcCompilationContext}.
*/
- @SkylarkModule(
- name = "compilation_info",
- documented = false,
- category = SkylarkModuleCategory.BUILTIN,
- doc = "Helper class containing CC compilation providers."
- )
// TODO(plf): Rename so that it's not confused with CcCompilationContext and also consider
// merging
// this class with {@code CcCompilationOutputs}.
- public static final class CompilationInfo {
+ public static final class CompilationInfo implements CompilationInfoApi {
private final TransitiveInfoProviderMap providers;
private final Map<String, NestedSet<Artifact>> outputGroups;
private final CcCompilationOutputs compilationOutputs;
@@ -170,7 +162,7 @@ public final class CcCompilationHelper {
return outputGroups;
}
- @SkylarkCallable(name = "cc_output_groups", documented = false)
+ @Override
public Map<String, SkylarkNestedSet> getSkylarkOutputGroups() {
Map<String, SkylarkNestedSet> skylarkOutputGroups = new TreeMap<>();
for (Map.Entry<String, NestedSet<Artifact>> entry : outputGroups.entrySet()) {
@@ -180,12 +172,12 @@ public final class CcCompilationHelper {
return skylarkOutputGroups;
}
- @SkylarkCallable(name = "cc_compilation_outputs", documented = false)
+ @Override
public CcCompilationOutputs getCcCompilationOutputs() {
return compilationOutputs;
}
- @SkylarkCallable(name = "cc_compilation_info", documented = false)
+ @Override
public CcCompilationInfo getCcCompilationInfo() {
return (CcCompilationInfo) providers.getProvider(CcCompilationInfo.PROVIDER.getKey());
}
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 6879ee5341..98d596338a 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
@@ -24,20 +24,12 @@ import com.google.devtools.build.lib.packages.NativeInfo;
import com.google.devtools.build.lib.packages.NativeProvider;
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.SkylarkCallable;
-import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
-import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkbuildapi.cpp.CcCompilationInfoApi;
/** Wrapper for every C++ compilation provider. */
@Immutable
@AutoCodec
-@SkylarkModule(
- name = "cc_compilation_info",
- documented = false,
- category = SkylarkModuleCategory.PROVIDER,
- doc = "Wrapper for every C++ compilation provider"
-)
-public final class CcCompilationInfo extends NativeInfo {
+public final class CcCompilationInfo extends NativeInfo implements CcCompilationInfoApi {
public static final NativeProvider<CcCompilationInfo> PROVIDER =
new NativeProvider<CcCompilationInfo>(CcCompilationInfo.class, "CcCompilationInfo") {};
@@ -50,12 +42,7 @@ public final class CcCompilationInfo extends NativeInfo {
this.ccCompilationContext = ccCompilationContext;
}
- @SkylarkCallable(
- name = "cc_compilation_context",
- structField = true,
- allowReturnNones = true,
- doc = "Returns compilation information for this C++ target."
- )
+ @Override
public CcCompilationContext getCcCompilationContext() {
return ccCompilationContext;
}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/BUILD b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/BUILD
index 522f8d6116..177c61f6b9 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/BUILD
@@ -20,6 +20,7 @@ java_library(
srcs = glob(["*.java"]),
deps = [
"//src/main/java/com/google/devtools/build/lib:skylarkinterface",
+ "//src/main/java/com/google/devtools/build/lib:syntax",
"//third_party:guava",
"//third_party:jsr305",
],
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcCompilationContextApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcCompilationContextApi.java
new file mode 100644
index 0000000000..a5a1f08c4d
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcCompilationContextApi.java
@@ -0,0 +1,31 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.devtools.build.lib.skylarkbuildapi.cpp;
+
+import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+
+/**
+ * Interface for a store of information needed for C++ compilation aggregated across dependencies.
+ */
+@SkylarkModule(
+ name = "cc_compilation_context",
+ documented = false,
+ category = SkylarkModuleCategory.PROVIDER,
+ doc =
+ "Immutable store of information needed for C++ compilation that is aggregated across "
+ + "dependencies."
+)
+public interface CcCompilationContextApi {}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcCompilationInfoApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcCompilationInfoApi.java
new file mode 100644
index 0000000000..e0e8a9f9e6
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcCompilationInfoApi.java
@@ -0,0 +1,38 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.devtools.build.lib.skylarkbuildapi.cpp;
+
+import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+
+/**
+ * Interface for a wrapper of every C++ compilation provider.
+ */
+@SkylarkModule(
+ name = "cc_compilation_info",
+ documented = false,
+ category = SkylarkModuleCategory.PROVIDER,
+ doc = "Wrapper for every C++ compilation provider"
+)
+public interface CcCompilationInfoApi {
+ @SkylarkCallable(
+ name = "cc_compilation_context",
+ structField = true,
+ allowReturnNones = true,
+ doc = "Returns compilation information for this C++ target."
+ )
+ public CcCompilationContextApi getCcCompilationContext();
+}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CompilationInfoApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CompilationInfoApi.java
new file mode 100644
index 0000000000..c346607a20
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CompilationInfoApi.java
@@ -0,0 +1,41 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.devtools.build.lib.skylarkbuildapi.cpp;
+
+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.SkylarkNestedSet;
+import java.util.Map;
+
+/**
+ * Interface for a helper class containing CC compilation providers.
+ */
+@SkylarkModule(
+ name = "compilation_info",
+ documented = false,
+ category = SkylarkModuleCategory.BUILTIN,
+ doc = "Helper class containing CC compilation providers."
+)
+public interface CompilationInfoApi {
+ @SkylarkCallable(name = "cc_output_groups", documented = false)
+ public Map<String, SkylarkNestedSet> getSkylarkOutputGroups();
+
+ @SkylarkCallable(name = "cc_compilation_outputs", documented = false)
+ public CcCompilationOutputsApi getCcCompilationOutputs();
+
+ @SkylarkCallable(name = "cc_compilation_info", documented = false)
+ public CcCompilationInfoApi getCcCompilationInfo();
+}