diff options
Diffstat (limited to 'src')
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(); +} |