diff options
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': []}))"); + } } |