aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfigurationLoader.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java28
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/python/PythonConfigurationLoader.java2
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/config/ConfigSettingTest.java6
5 files changed, 21 insertions, 21 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java
index 3a1a376f02..83cde77f04 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java
@@ -181,7 +181,7 @@ public final class AndroidRuleClasses {
CppOptions cppOptions = output.get(CppOptions.class);
if (inputAndroidOptions.androidCrosstoolTop != null
- && !cppOptions.crosstoolTop().equals(inputAndroidOptions.androidCrosstoolTop)) {
+ && !cppOptions.crosstoolTop.equals(inputAndroidOptions.androidCrosstoolTop)) {
if (cppOptions.hostCrosstoolTop == null) {
cppOptions.hostCrosstoolTop = cppOptions.crosstoolTop;
}
@@ -199,7 +199,7 @@ public final class AndroidRuleClasses {
Label androidCrosstoolTop = androidOptions.androidCrosstoolTop;
if (androidOptions.realFatApkCpus().isEmpty()
&& (androidCrosstoolTop == null
- || androidCrosstoolTop.equals(cppOptions.crosstoolTop()))) {
+ || androidCrosstoolTop.equals(cppOptions.crosstoolTop))) {
return ImmutableList.of();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfigurationLoader.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfigurationLoader.java
index 3604f58115..a68b800bd4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfigurationLoader.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfigurationLoader.java
@@ -119,7 +119,7 @@ public class CppConfigurationLoader implements ConfigurationFragmentFactory {
return null;
}
Label crosstoolTopLabel = RedirectChaser.followRedirects(env,
- options.get(CppOptions.class).crosstoolTop(), "crosstool_top");
+ options.get(CppOptions.class).crosstoolTop, "crosstool_top");
if (crosstoolTopLabel == null) {
return null;
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
index e76fb265bb..4d618fe4cd 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
@@ -13,7 +13,6 @@
// limitations under the License.
package com.google.devtools.build.lib.rules.cpp;
-import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Splitter;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
@@ -21,6 +20,7 @@ import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Multimap;
import com.google.devtools.build.lib.Constants;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfiguration.DefaultLabelConverter;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration.LabelConverter;
import com.google.devtools.build.lib.analysis.config.CompilationMode;
import com.google.devtools.build.lib.analysis.config.FragmentOptions;
@@ -48,12 +48,12 @@ import java.util.Set;
* Command-line options for C++.
*/
public class CppOptions extends FragmentOptions {
- /**
- * Label of a filegroup that contains all crosstool files for all configurations.
- */
- @VisibleForTesting
- public static final String DEFAULT_CROSSTOOL_TARGET = "//tools/cpp:toolchain";
-
+ /** Custom converter for {@code --crosstool_top}. */
+ public static class CrosstoolTopConverter extends DefaultLabelConverter {
+ public CrosstoolTopConverter() {
+ super(Constants.TOOLS_REPOSITORY + "//tools/cpp:toolchain");
+ }
+ }
/**
* Converter for --cwarn flag
@@ -171,9 +171,9 @@ public class CppOptions extends FragmentOptions {
public boolean lipoCollector;
@Option(name = "crosstool_top",
- defaultValue = "null",
+ defaultValue = "",
category = "version",
- converter = LabelConverter.class,
+ converter = CrosstoolTopConverter.class,
help = "The label of the crosstool package to be used for compiling C++ code.")
public Label crosstoolTop;
@@ -503,12 +503,6 @@ public class CppOptions extends FragmentOptions {
+ "will be shared among different targets")
public boolean shareNativeDeps;
- public Label crosstoolTop() {
- return crosstoolTop == null
- ? Label.parseAbsoluteUnchecked(Constants.TOOLS_REPOSITORY + DEFAULT_CROSSTOOL_TARGET)
- : crosstoolTop;
- }
-
@Override
public FragmentOptions getHost(boolean fallback) {
CppOptions host = (CppOptions) getDefault();
@@ -551,7 +545,7 @@ public class CppOptions extends FragmentOptions {
@Override
public void addAllLabels(Multimap<String, Label> labelMap) {
- labelMap.put("crosstool", crosstoolTop());
+ labelMap.put("crosstool", crosstoolTop);
if (hostCrosstoolTop != null) {
labelMap.put("crosstool", hostCrosstoolTop);
}
@@ -580,7 +574,7 @@ public class CppOptions extends FragmentOptions {
@Override
public Map<String, Set<Label>> getDefaultsLabels(BuildConfiguration.Options commonOptions) {
Set<Label> crosstoolLabels = new LinkedHashSet<>();
- crosstoolLabels.add(crosstoolTop());
+ crosstoolLabels.add(crosstoolTop);
if (hostCrosstoolTop != null) {
crosstoolLabels.add(hostCrosstoolTop);
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/python/PythonConfigurationLoader.java b/src/main/java/com/google/devtools/build/lib/rules/python/PythonConfigurationLoader.java
index 917576d879..2599cb139d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/python/PythonConfigurationLoader.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/python/PythonConfigurationLoader.java
@@ -67,7 +67,7 @@ public class PythonConfigurationLoader implements ConfigurationFragmentFactory {
}
CrosstoolConfig.CToolchain toolchain = getToolchain(
- env, buildOptions, buildOptions.get(CppOptions.class).crosstoolTop());
+ env, buildOptions, buildOptions.get(CppOptions.class).crosstoolTop);
if (toolchain == null) {
return null;
}
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/config/ConfigSettingTest.java b/src/test/java/com/google/devtools/build/lib/analysis/config/ConfigSettingTest.java
index 6238d45336..4f2775dd1d 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/config/ConfigSettingTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/config/ConfigSettingTest.java
@@ -201,4 +201,10 @@ public class ConfigSettingTest extends BuildViewTestCase {
useConfiguration("--copt", "-Dbar", "--copt", "-Dfoo");
assertTrue(getConfigMatchingProvider("//test:match").matches());
}
+
+ public void testSelectForDefaultCrosstoolTop() throws Exception {
+ scratchConfiguredTarget("a", "a",
+ "config_setting(name='cs', values={'crosstool_top': '//tools/cpp:toolchain'})",
+ "sh_library(name='a', srcs=['a.sh'], deps=select({':cs': []}))");
+ }
}