aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
diff options
context:
space:
mode:
authorGravatar Lukacs Berki <lberki@google.com>2015-10-07 10:01:26 +0000
committerGravatar Han-Wen Nienhuys <hanwen@google.com>2015-10-08 12:11:02 +0000
commitc6efe506ebac0917565e223d8def40cc222f84f6 (patch)
tree90885c314b4273f4b85bd73bbde1cdd39b476039 /src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
parentf7cc9cdb4b4cf0a092ea8fde17d419765e3c6f38 (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.java28
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);
}