diff options
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.java | 17 |
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 |