aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
authorGravatar cpeyser <cpeyser@google.com>2017-08-31 18:25:53 +0200
committerGravatar Vladimir Moskva <vladmos@google.com>2017-09-01 12:26:14 +0200
commit91d23bfd98025094d9549857a28d3da1e0a311b9 (patch)
tree395746cd3ce2777b3997be0cf32aaa39a00c5876 /src/main
parent5963c2f885d063cb1d7acc66467794bafd3501cc (diff)
Bazel c++ rules depend on a c++ toolchain.
PiperOrigin-RevId: 167147239
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/PlatformOptions.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppRuleClasses.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/RuleClass.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java5
4 files changed, 14 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/PlatformOptions.java b/src/main/java/com/google/devtools/build/lib/analysis/PlatformOptions.java
index 3a84352105..dd65946476 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/PlatformOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/PlatformOptions.java
@@ -60,7 +60,7 @@ public class PlatformOptions extends FragmentOptions {
@Option(
name = "extra_toolchains",
converter = LabelListConverter.class,
- defaultValue = "",
+ defaultValue = "@bazel_tools//tools/cpp:dummy_cc_toolchain",
documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
effectTags = {OptionEffectTag.UNKNOWN},
metadataTags = {OptionMetadataTag.HIDDEN},
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppRuleClasses.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppRuleClasses.java
index 12737d9d51..00ebc98c53 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppRuleClasses.java
@@ -57,6 +57,7 @@ import com.google.devtools.build.lib.packages.TriState;
import com.google.devtools.build.lib.rules.cpp.CcToolchain;
import com.google.devtools.build.lib.rules.cpp.CppConfiguration;
import com.google.devtools.build.lib.rules.cpp.CppFileTypes;
+import com.google.devtools.build.lib.rules.cpp.CppHelper;
import com.google.devtools.build.lib.rules.cpp.CppRuleClasses;
import com.google.devtools.build.lib.rules.cpp.CppRuleClasses.LipoTransition;
import com.google.devtools.build.lib.util.FileTypeSet;
@@ -139,6 +140,7 @@ public class BazelCppRuleClasses {
attr(CcToolchain.CC_TOOLCHAIN_DEFAULT_ATTRIBUTE_NAME, LABEL)
.value(CppRuleClasses.ccToolchainAttribute(env)))
.setPreferredDependencyPredicate(Predicates.<String>or(CPP_SOURCE, C_SOURCE, CPP_HEADER))
+ .addRequiredToolchains(CppHelper.getCcToolchainType(env.getToolsRepository()))
.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
index 7cbb25fd1b..565cb7a222 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
@@ -28,6 +28,7 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
import com.google.common.collect.Ordering;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.LabelSyntaxException;
@@ -996,6 +997,11 @@ public class RuleClass {
return this;
}
+ public Builder addRequiredToolchains(Label... toolchainLabels) {
+ Iterables.addAll(this.requiredToolchains, Lists.newArrayList(toolchainLabels));
+ return this;
+ }
+
/**
* Returns an Attribute.Builder object which contains a replica of the
* same attribute in the parent rule if exists.
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
index 1100576151..87f43cc057 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
@@ -87,6 +87,11 @@ public class CppHelper {
private static final ImmutableList<String> LINKOPTS_PREREQUISITE_LABEL_KINDS =
ImmutableList.of("deps", "srcs");
+ /** Returns label used to select resolved cc_toolchain instances based on platform. */
+ public static Label getCcToolchainType(String toolsRepository) {
+ return Label.parseAbsoluteUnchecked(toolsRepository + "//tools/cpp:toolchain_type");
+ }
+
private CppHelper() {
// prevents construction
}