diff options
author | 2017-11-29 14:33:38 -0800 | |
---|---|---|
committer | 2017-11-29 14:35:40 -0800 | |
commit | 485c32b71bac0e049f7f5735541c27b67112a92c (patch) | |
tree | fe9f9cc32bbfb56e8aa2efb91ff1b8690f51f640 /src | |
parent | 3d1a194ff9e76f25f1a7242ff2d021523ba8e4a0 (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.java | 3 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java | 37 |
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; + } +} |