aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar cpeyser <cpeyser@google.com>2017-11-29 14:33:38 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2017-11-29 14:35:40 -0800
commit485c32b71bac0e049f7f5735541c27b67112a92c (patch)
treefe9f9cc32bbfb56e8aa2efb91ff1b8690f51f640 /src
parent3d1a194ff9e76f25f1a7242ff2d021523ba8e4a0 (diff)
Open source the top-level Skylark object cc_common. cc_common provides Skylark
rules with access to the CcToolchainProvider. cc_common is required to migrate open-source users of the Skylark endpoints on CppConfiguration to CcToolchainProvider. PiperOrigin-RevId: 177364710
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java37
2 files changed, 40 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
index 55f211bc4c..4c2d45d2c7 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
@@ -102,6 +102,7 @@ import com.google.devtools.build.lib.rules.config.ConfigSkylarkCommon;
import com.google.devtools.build.lib.rules.core.CoreRules;
import com.google.devtools.build.lib.rules.cpp.CcImportRule;
import com.google.devtools.build.lib.rules.cpp.CcIncLibraryRule;
+import com.google.devtools.build.lib.rules.cpp.CcModule;
import com.google.devtools.build.lib.rules.cpp.CcToolchainAlias;
import com.google.devtools.build.lib.rules.cpp.CcToolchainRule;
import com.google.devtools.build.lib.rules.cpp.CcToolchainSuiteRule;
@@ -363,6 +364,8 @@ public class BazelRuleClassProvider {
new RuleSet() {
@Override
public void init(Builder builder) {
+ builder.addSkylarkAccessibleTopLevels("cc_common", CcModule.INSTANCE);
+
builder.addConfig(
CppOptions.class, new CppConfigurationLoader(Functions.<String>identity()));
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
new file mode 100644
index 0000000000..f540cf11e6
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
@@ -0,0 +1,37 @@
+// Copyright 2017 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.rules.cpp;
+
+import com.google.devtools.build.lib.analysis.platform.ToolchainInfo;
+import com.google.devtools.build.lib.packages.Provider;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+
+/** A module that contains Skylark utilities for C++ support. */
+@SkylarkModule(name = "cc_common", doc = "Utilities related to C++ support.")
+public class CcModule {
+ public static final CcModule INSTANCE = new CcModule();
+
+ @SkylarkCallable(
+ name = CcToolchainProvider.SKYLARK_NAME,
+ doc =
+ "The key used to retrieve the provider that contains information about the C++ "
+ + "toolchain being used",
+ structField = true
+ )
+ public Provider getCcToolchainProvider() {
+ return ToolchainInfo.PROVIDER;
+ }
+}