diff options
author | Lukacs Berki <lberki@google.com> | 2015-10-07 10:01:26 +0000 |
---|---|---|
committer | Han-Wen Nienhuys <hanwen@google.com> | 2015-10-08 12:11:02 +0000 |
commit | c6efe506ebac0917565e223d8def40cc222f84f6 (patch) | |
tree | 90885c314b4273f4b85bd73bbde1cdd39b476039 /src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java | |
parent | f7cc9cdb4b4cf0a092ea8fde17d419765e3c6f38 (diff) |
Add a custom converter to --crosstool_top so that select() works.
--
MOS_MIGRATED_REVID=104845397
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java | 28 |
1 files changed, 11 insertions, 17 deletions
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); } |