diff options
author | cpeyser <cpeyser@google.com> | 2017-08-29 18:06:54 +0200 |
---|---|---|
committer | Vladimir Moskva <vladmos@google.com> | 2017-08-29 18:53:02 +0200 |
commit | 9d5bce66280094c0531ddfde2752e596d0d78c79 (patch) | |
tree | 891675c9be45cd4a0a236ee4b1f41271bb1a5542 /src/main/java/com/google/devtools/build/lib/analysis/PlatformSemantics.java | |
parent | 7876d97dbe7d4593855e62667fa7eba5774b561b (diff) |
Add a new toolchain type for c++. In order to do this, PlatformConfiguration is made a legal configuration fragment for every rule class.
Add a default "dummy" c++ toolchain to prevent resolution errors when legacy toolchain selection logic is used. Add toolchain mocks to java and shell tests.
PiperOrigin-RevId: 166854893
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/PlatformSemantics.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/analysis/PlatformSemantics.java | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/PlatformSemantics.java b/src/main/java/com/google/devtools/build/lib/analysis/PlatformSemantics.java index d93c5a6dea..45c967e551 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/PlatformSemantics.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/PlatformSemantics.java @@ -26,6 +26,7 @@ import com.google.devtools.build.lib.packages.AttributeMap; import com.google.devtools.build.lib.packages.Rule; import com.google.devtools.build.lib.packages.RuleClass; import java.util.List; +import javax.annotation.Nullable; /** Helper class to manage rules' use of platforms. */ public class PlatformSemantics { @@ -40,19 +41,22 @@ public class PlatformSemantics { @Override public List<Label> resolve( Rule rule, AttributeMap attributes, BuildConfiguration configuration) { - if (rule.getRuleClassObject().getRequiredToolchains().isEmpty()) { - return null; + // rule may be null for tests + if (rule == null || rule.getRuleClassObject().getRequiredToolchains().isEmpty()) { + return ImmutableList.of(); } return configuration.getFragment(PlatformConfiguration.class).getTargetPlatforms(); } }; /** Implementation for the :execution_platform attribute. */ + @Nullable public static final Attribute.LateBoundLabel<BuildConfiguration> EXECUTION_PLATFORM = new Attribute.LateBoundLabel<BuildConfiguration>(PlatformConfiguration.class) { @Override public Label resolve(Rule rule, AttributeMap attributes, BuildConfiguration configuration) { - if (rule.getRuleClassObject().getRequiredToolchains().isEmpty()) { + // rule may be null for tests + if (rule == null || rule.getRuleClassObject().getRequiredToolchains().isEmpty()) { return null; } return configuration.getFragment(PlatformConfiguration.class).getExecutionPlatform(); |