aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeConfig.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/apple/XcodeConfig.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/apple/XcodeConfig.java17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeConfig.java b/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeConfig.java
index 9528bdafea..eb789b3c50 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeConfig.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeConfig.java
@@ -27,6 +27,7 @@ import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.RunfilesProvider;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory;
+import com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions.AppleBitcodeMode;
import java.util.Map;
@@ -37,6 +38,8 @@ import javax.annotation.Nullable;
*/
public class XcodeConfig implements RuleConfiguredTargetFactory {
+ private static final DottedVersion MINIMUM_BITCODE_XCODE_VERSION = DottedVersion.fromString("7");
+
@Override
public ConfiguredTarget create(RuleContext ruleContext) throws InterruptedException {
AppleConfiguration configuration = ruleContext.getFragment(AppleConfiguration.class);
@@ -55,12 +58,26 @@ public class XcodeConfig implements RuleConfiguredTargetFactory {
xcodeConfigProvider = new XcodeConfigProvider(targetVersion);
}
+ validateXcodeConfig(ruleContext, configuration, xcodeConfigProvider);
+
return new RuleConfiguredTargetBuilder(ruleContext)
.addProvider(RunfilesProvider.class, RunfilesProvider.EMPTY)
.addProvider(XcodeConfigProvider.class, xcodeConfigProvider)
.build();
}
+ private void validateXcodeConfig(RuleContext ruleContext, AppleConfiguration config,
+ XcodeConfigProvider xcodeConfigProvider) {
+ Optional<DottedVersion> xcodeVersion = xcodeConfigProvider.getXcodeVersion();
+ if (config.getBitcodeMode() != AppleBitcodeMode.NONE
+ && xcodeVersion.isPresent()
+ && xcodeVersion.get().compareTo(MINIMUM_BITCODE_XCODE_VERSION) < 0) {
+ ruleContext.ruleError(
+ String.format("apple_bitcode mode '%s' is unsupported for xcode version '%s'",
+ config.getBitcodeMode(), xcodeVersion.get()));
+ }
+ }
+
/**
* Returns the xcode version number corresponding to the {@code --xcode_version} flag, if there
* is an available {@code xcode_version} target which recognizes the flag value as either