diff options
author | 2016-09-29 21:55:45 +0000 | |
---|---|---|
committer | 2016-09-30 08:15:01 +0000 | |
commit | 1eac7e8195158a1b88dd6d1f11e5690ec387e077 (patch) | |
tree | dd8082c264e969c6f84ec5d10c6f89cccc29df1a /src/main/java/com/google/devtools/build/lib/rules/objc | |
parent | 29dc3f7dabc24f9e032ffc3602c0f928babdf1ad (diff) |
Use minimum OS flags for watchOS and tvOS actions.
Also:
- Move minimum os information into AppleConfiguration
- Update watchos and tvos minimum version defaulting behavior
such that, if unspecified in flags, the minimum OS is equal
to the SDK version.
- Expose Apple Platform to apple_common in skylark
--
MOS_MIGRATED_REVID=134712763
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/objc')
16 files changed, 53 insertions, 125 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java index ed5b6d8d40..5583c4ece6 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java @@ -17,6 +17,7 @@ package com.google.devtools.build.lib.rules.objc; import com.google.common.annotations.VisibleForTesting; import com.google.devtools.build.lib.packages.SkylarkClassObject; import com.google.devtools.build.lib.rules.apple.AppleToolchain; +import com.google.devtools.build.lib.rules.apple.Platform; import com.google.devtools.build.lib.rules.apple.Platform.PlatformType; import com.google.devtools.build.lib.rules.objc.ObjcProvider.Key; import com.google.devtools.build.lib.skylarkinterface.Param; @@ -26,7 +27,6 @@ import com.google.devtools.build.lib.skylarkinterface.SkylarkSignature; import com.google.devtools.build.lib.syntax.BuiltinFunction; import com.google.devtools.build.lib.syntax.SkylarkDict; import com.google.devtools.build.lib.syntax.SkylarkSignatureProcessor; - import java.util.Map.Entry; import javax.annotation.Nullable; @@ -64,6 +64,8 @@ public class AppleSkylarkCommon { @Nullable private SkylarkClassObject platformType; + @Nullable + private SkylarkClassObject platform; @SkylarkCallable( name = "apple_toolchain", @@ -89,6 +91,21 @@ public class AppleSkylarkCommon { return platformType; } + @SkylarkCallable( + name = "platform", + doc = "Returns a struct containing fields corresponding to Apple platforms. These values " + + "can be passed to methods that expect a platform, like the 'apple' configuration " + + "fragment's 'sdk_version_for_platform' method. Each platform_type except for macosx " + + "has two platform types -- one for device, and one for simulator.", + structField = true + ) + public SkylarkClassObject getPlatformStruct() { + if (platform == null) { + platform = Platform.getSkylarkStruct(); + } + return platform; + } + @SkylarkSignature( name = "new_objc_provider", objectType = AppleSkylarkCommon.class, diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/BinaryLinkingTargetFactory.java b/src/main/java/com/google/devtools/build/lib/rules/objc/BinaryLinkingTargetFactory.java index f214487e05..9e72c42549 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/BinaryLinkingTargetFactory.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/BinaryLinkingTargetFactory.java @@ -122,7 +122,6 @@ abstract class BinaryLinkingTargetFactory implements RuleConfiguredTargetFactory Optional<XcTestAppProvider> xcTestAppProvider; Optional<RunfilesSupport> maybeRunfilesSupport = Optional.absent(); - ObjcConfiguration objcConfiguration = ObjcRuleClasses.objcConfiguration(ruleContext); switch (hasReleaseBundlingSupport) { case YES: AppleConfiguration appleConfiguration = ruleContext.getFragment(AppleConfiguration.class); @@ -133,7 +132,7 @@ abstract class BinaryLinkingTargetFactory implements RuleConfiguredTargetFactory objcProvider, LinkedBinary.LOCAL_AND_DEPENDENCIES, ReleaseBundlingSupport.APP_BUNDLE_DIR_FORMAT, - objcConfiguration.getMinimumOs(), + appleConfiguration.getMinimumOsForPlatformType(PlatformType.IOS), appleConfiguration.getSingleArchPlatform()); releaseBundlingSupport .registerActions(DsymOutputType.APP) diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java index 31322dbb34..fa16aaf3f9 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java @@ -1799,11 +1799,11 @@ public final class CompilationSupport { switch (platform) { case IOS_SIMULATOR: builder.add("-mios-simulator-version-min=" - + objcConfiguration.getMinimumOsForPlatformType(platform.getType())); + + appleConfiguration.getMinimumOsForPlatformType(platform.getType())); break; case IOS_DEVICE: builder.add("-miphoneos-version-min=" - + objcConfiguration.getMinimumOsForPlatformType(platform.getType())); + + appleConfiguration.getMinimumOsForPlatformType(platform.getType())); break; case WATCHOS_SIMULATOR: // TODO(bazel-team): Use the value from --watchos-minimum-os instead of tying to the SDK @@ -1819,11 +1819,11 @@ public final class CompilationSupport { break; case TVOS_SIMULATOR: builder.add("-mtvos-simulator-version-min=" - + objcConfiguration.getMinimumOsForPlatformType(platform.getType())); + + appleConfiguration.getMinimumOsForPlatformType(platform.getType())); break; case TVOS_DEVICE: builder.add("-mtvos-version-min=" - + objcConfiguration.getMinimumOsForPlatformType(platform.getType())); + + appleConfiguration.getMinimumOsForPlatformType(platform.getType())); break; default: throw new IllegalArgumentException("Unhandled platform " + platform); diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/IosExtension.java b/src/main/java/com/google/devtools/build/lib/rules/objc/IosExtension.java index f4435d4a0f..184dcdced5 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/IosExtension.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/IosExtension.java @@ -25,10 +25,11 @@ import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.packages.Attribute.SplitTransition; import com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions; +import com.google.devtools.build.lib.rules.apple.AppleConfiguration; import com.google.devtools.build.lib.rules.apple.AppleConfiguration.ConfigurationDistinguisher; import com.google.devtools.build.lib.rules.apple.DottedVersion; +import com.google.devtools.build.lib.rules.apple.Platform.PlatformType; import com.google.devtools.build.lib.rules.objc.ReleaseBundlingSupport.SplitArchTransition; - import java.io.Serializable; /** @@ -60,7 +61,9 @@ public class IosExtension extends ReleaseBundlingTargetFactory { @Override protected DottedVersion bundleMinimumOsVersion(RuleContext ruleContext) { - return determineMinimumOsVersion(ObjcRuleClasses.objcConfiguration(ruleContext).getMinimumOs(), + return determineMinimumOsVersion( + ruleContext.getFragment(AppleConfiguration.class) + .getMinimumOsForPlatformType(PlatformType.IOS), EXTENSION_MINIMUM_OS_VERSION); } @@ -110,11 +113,11 @@ public class IosExtension extends ReleaseBundlingTargetFactory { @Override protected ImmutableList<BuildOptions> defaultOptions(BuildOptions originalOptions) { - ObjcCommandLineOptions objcOptions = originalOptions.get(ObjcCommandLineOptions.class); - DottedVersion newMinimumVersion = determineMinimumOsVersion(objcOptions.iosMinimumOs, + AppleCommandLineOptions appleOptions = originalOptions.get(AppleCommandLineOptions.class); + DottedVersion newMinimumVersion = determineMinimumOsVersion(appleOptions.iosMinimumOs, minimumOSVersion); - if (newMinimumVersion.equals(objcOptions.iosMinimumOs)) { + if (newMinimumVersion.equals(appleOptions.iosMinimumOs)) { return ImmutableList.of(); } @@ -127,7 +130,7 @@ public class IosExtension extends ReleaseBundlingTargetFactory { @Override protected void setAdditionalOptions(BuildOptions splitOptions, BuildOptions originalOptions) { - DottedVersion fromFlag = originalOptions.get(ObjcCommandLineOptions.class).iosMinimumOs; + DottedVersion fromFlag = originalOptions.get(AppleCommandLineOptions.class).iosMinimumOs; setMinimumOsVersion(splitOptions, determineMinimumOsVersion(fromFlag, minimumOSVersion)); } @@ -137,7 +140,7 @@ public class IosExtension extends ReleaseBundlingTargetFactory { } private void setMinimumOsVersion(BuildOptions splitOptions, DottedVersion newMinimumVersion) { - splitOptions.get(ObjcCommandLineOptions.class).iosMinimumOs = newMinimumVersion; + splitOptions.get(AppleCommandLineOptions.class).iosMinimumOs = newMinimumVersion; } } } diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/IosFramework.java b/src/main/java/com/google/devtools/build/lib/rules/objc/IosFramework.java index 4de6706c1f..0bd68c41b1 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/IosFramework.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/IosFramework.java @@ -31,8 +31,10 @@ import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.actions.SymlinkAction; import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.rules.apple.AppleConfiguration; import com.google.devtools.build.lib.rules.apple.AppleConfiguration.ConfigurationDistinguisher; import com.google.devtools.build.lib.rules.apple.DottedVersion; +import com.google.devtools.build.lib.rules.apple.Platform.PlatformType; import com.google.devtools.build.lib.rules.cpp.CcCommon; import com.google.devtools.build.lib.util.Pair; import com.google.devtools.build.lib.vfs.PathFragment; @@ -72,7 +74,8 @@ public class IosFramework extends ReleaseBundlingTargetFactory { // minimum iOS version of less than 8.0 may contain frameworks in their bundle, the framework // itself needs to be built with 8.0 or higher. This logic overrides (if necessary) any // flag-set minimum iOS version for framework only so that this requirement is not violated. - DottedVersion fromFlag = ObjcRuleClasses.objcConfiguration(ruleContext).getMinimumOs(); + DottedVersion fromFlag = ruleContext.getFragment(AppleConfiguration.class) + .getMinimumOsForPlatformType(PlatformType.IOS); return Ordering.natural().max(fromFlag, MINIMUM_OS_VERSION); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/IosTest.java b/src/main/java/com/google/devtools/build/lib/rules/objc/IosTest.java index be3e6639ba..b1c4389202 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/IosTest.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/IosTest.java @@ -163,14 +163,13 @@ public final class IosTest implements RuleConfiguredTargetFactory { .addXcodeSettings(xcodeProviderBuilder, common) .validateAttributes(); - ObjcConfiguration objcConfiguration = ObjcRuleClasses.objcConfiguration(ruleContext); AppleConfiguration appleConfiguration = ruleContext.getFragment(AppleConfiguration.class); new ReleaseBundlingSupport( ruleContext, common.getObjcProvider(), LinkedBinary.LOCAL_AND_DEPENDENCIES, bundleFormat, - objcConfiguration.getMinimumOs(), + appleConfiguration.getMinimumOsForPlatformType(PlatformType.IOS), appleConfiguration.getMultiArchPlatform(PlatformType.IOS)) .registerActions(DsymOutputType.TEST) .addXcodeSettings(xcodeProviderBuilder) diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundleLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundleLibrary.java index cbc74ea862..b8f691cf94 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundleLibrary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundleLibrary.java @@ -27,11 +27,11 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException; import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory; import com.google.devtools.build.lib.rules.apple.AppleConfiguration; +import com.google.devtools.build.lib.rules.apple.Platform.PlatformType; import com.google.devtools.build.lib.rules.objc.ObjcCommon.ResourceAttributes; import com.google.devtools.build.lib.rules.objc.TargetDeviceFamily.InvalidFamilyNameException; import com.google.devtools.build.lib.rules.objc.TargetDeviceFamily.RepeatedFamilyNameException; import com.google.devtools.build.lib.syntax.Type; - import java.util.List; /** @@ -84,7 +84,6 @@ public class ObjcBundleLibrary implements RuleConfiguredTargetFactory { private Bundling bundling(RuleContext ruleContext, ObjcCommon common) { IntermediateArtifacts intermediateArtifacts = ObjcRuleClasses.intermediateArtifacts(ruleContext); - ObjcConfiguration objcConfiguration = ObjcRuleClasses.objcConfiguration(ruleContext); AppleConfiguration appleConfiguration = ruleContext.getFragment(AppleConfiguration.class); ImmutableSet<TargetDeviceFamily> families = null; @@ -106,7 +105,7 @@ public class ObjcBundleLibrary implements RuleConfiguredTargetFactory { .setObjcProvider(common.getObjcProvider()) .addInfoplistInputFromRule(ruleContext) .setIntermediateArtifacts(intermediateArtifacts) - .setMinimumOsVersion(objcConfiguration.getMinimumOs()) + .setMinimumOsVersion(appleConfiguration.getMinimumOsForPlatformType(PlatformType.IOS)) .setTargetDeviceFamilies(families) .build(); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java index 3efdc8b4d4..ab1e96bd1b 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java @@ -14,7 +14,6 @@ package com.google.devtools.build.lib.rules.objc; -import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.analysis.config.BuildConfiguration.LabelConverter; import com.google.devtools.build.lib.analysis.config.BuildOptions; @@ -98,33 +97,6 @@ public class ObjcCommandLineOptions extends FragmentOptions { help = "Additional options to pass to Objective C compilation.") public List<String> copts; - @Option( - name = "ios_minimum_os", - defaultValue = DEFAULT_MINIMUM_IOS, - category = "flags", - converter = DottedVersionConverter.class, - help = "Minimum compatible iOS version for target simulators and devices." - ) - public DottedVersion iosMinimumOs; - - @Option( - name = "watchos_minimum_os", - defaultValue = DEFAULT_MINIMUM_WATCHOS, - category = "flags", - converter = DottedVersionConverter.class, - help = "Minimum compatible watchOS version for target simulators and devices." - ) - public DottedVersion watchosMinimumOs; - - @Option( - name = "tvos_minimum_os", - defaultValue = DEFAULT_MINIMUM_TVOS, - category = "flags", - converter = DottedVersionConverter.class, - help = "Minimum compatible tvOS version for target simulators and devices." - ) - public DottedVersion tvosMinimumOs; - @Option(name = "ios_memleaks", defaultValue = "false", category = "misc", @@ -248,7 +220,7 @@ public class ObjcCommandLineOptions extends FragmentOptions { category = "undocumented" ) public boolean experimentalObjcLibrary; - + @Option( name = "objc_use_dotd_pruning", defaultValue = "false", @@ -258,10 +230,6 @@ public class ObjcCommandLineOptions extends FragmentOptions { + "compiles." ) public boolean useDotdPruning; - - @VisibleForTesting static final String DEFAULT_MINIMUM_IOS = "7.0"; - @VisibleForTesting static final String DEFAULT_MINIMUM_WATCHOS = "2.0"; - @VisibleForTesting static final String DEFAULT_MINIMUM_TVOS = "9.0"; @SuppressWarnings("unchecked") @Override diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java index ebe35c5212..b773269a97 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java @@ -53,13 +53,10 @@ public class ObjcConfiguration extends BuildConfiguration.Fragment { ImmutableList.of( "-Os", "-DNDEBUG=1", "-Wno-unused-variable", "-Winit-self", "-Wno-extra"); - private final DottedVersion iosMinimumOs; private final DottedVersion iosSimulatorVersion; private final String iosSimulatorDevice; - private final DottedVersion watchosMinimumOs; private final DottedVersion watchosSimulatorVersion; private final String watchosSimulatorDevice; - private final DottedVersion tvosMinimumOs; private final DottedVersion tvosSimulatorVersion; private final String tvosSimulatorDevice; private final boolean generateDsym; @@ -83,18 +80,14 @@ public class ObjcConfiguration extends BuildConfiguration.Fragment { ObjcConfiguration(ObjcCommandLineOptions objcOptions, BuildConfiguration.Options options, @Nullable BlazeDirectories directories) { - this.iosMinimumOs = Preconditions.checkNotNull(objcOptions.iosMinimumOs, "iosMinimumOs"); this.iosSimulatorDevice = Preconditions.checkNotNull(objcOptions.iosSimulatorDevice, "iosSimulatorDevice"); this.iosSimulatorVersion = Preconditions.checkNotNull(objcOptions.iosSimulatorVersion, "iosSimulatorVersion"); - this.watchosMinimumOs = - Preconditions.checkNotNull(objcOptions.watchosMinimumOs, "watchosMinimumOs"); this.watchosSimulatorDevice = Preconditions.checkNotNull(objcOptions.watchosSimulatorDevice, "watchosSimulatorDevice"); this.watchosSimulatorVersion = Preconditions.checkNotNull(objcOptions.watchosSimulatorVersion, "watchosSimulatorVersion"); - this.tvosMinimumOs = Preconditions.checkNotNull(objcOptions.tvosMinimumOs, "tvosMinimumOs"); this.tvosSimulatorDevice = Preconditions.checkNotNull(objcOptions.tvosSimulatorDevice, "tvosSimulatorDevice"); this.tvosSimulatorVersion = @@ -123,18 +116,6 @@ public class ObjcConfiguration extends BuildConfiguration.Fragment { } /** - * Returns the minimum iOS version supported by binaries and libraries. Any dependencies on newer - * iOS version features or libraries will become weak dependencies which are only loaded if the - * runtime OS supports them. - */ - @SkylarkCallable(name = "ios_minimum_os", structField = true, - doc = "The minimum compatible iOS version for target simulators and devices.") - public DottedVersion getMinimumOs() { - // TODO(bazel-team): Deprecate in favor of getMinimumOsForPlatformType(IOS). - return iosMinimumOs; - } - - /** * Returns the type of device (e.g. 'iPhone 6') to simulate when running on the simulator. */ @SkylarkCallable(name = "ios_simulator_device", structField = true, @@ -152,23 +133,6 @@ public class ObjcConfiguration extends BuildConfiguration.Fragment { } @SkylarkCallable( - name = "minimum_os_for_platform_type", - doc = "The minimum compatible OS version for target simulator and devices for a particular " - + "platform type.") - public DottedVersion getMinimumOsForPlatformType(PlatformType platformType) { - switch (platformType) { - case IOS: - return iosMinimumOs; - case TVOS: - return tvosMinimumOs; - case WATCHOS: - return watchosMinimumOs; - default: - throw new IllegalArgumentException("Unhandled platform: " + platformType); - } - } - - @SkylarkCallable( name = "simulator_device_for_platform_type", doc = "The type of device (e.g., 'iPhone 6' to simulate when running on the simulator.") public String getSimulatorDeviceForPlatformType(PlatformType platformType) { diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcVariablesExtension.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcVariablesExtension.java index 51b47ef153..6e13ff79bd 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcVariablesExtension.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcVariablesExtension.java @@ -23,7 +23,6 @@ import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.rules.apple.AppleConfiguration; import com.google.devtools.build.lib.rules.apple.Platform; -import com.google.devtools.build.lib.rules.apple.Platform.PlatformType; import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures; import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.Variables.ValueSequence; import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.Variables.VariablesExtension; @@ -52,7 +51,6 @@ class ObjcVariablesExtension implements VariablesExtension { private final BuildConfiguration buildConfiguration; private final AppleConfiguration appleConfiguration; - private final ObjcConfiguration objcConfiguration; public ObjcVariablesExtension( RuleContext ruleContext, @@ -67,7 +65,6 @@ class ObjcVariablesExtension implements VariablesExtension { this.fullyLinkArchive = fullyLinkArchive; this.intermediateArtifacts = intermediateArtifacts; this.buildConfiguration = buildConfiguration; - this.objcConfiguration = buildConfiguration.getFragment(ObjcConfiguration.class); this.appleConfiguration = buildConfiguration.getFragment(AppleConfiguration.class); } @@ -118,27 +115,8 @@ class ObjcVariablesExtension implements VariablesExtension { private void addArchVariables(CcToolchainFeatures.Variables.Builder builder) { Platform platform = appleConfiguration.getSingleArchPlatform(); - switch (platform.getType()) { - case IOS: - builder.addVariable( - VERSION_MIN_VARIABLE_NAME, - objcConfiguration.getMinimumOsForPlatformType(PlatformType.IOS).toString()); - break; - case TVOS: - builder.addVariable( - VERSION_MIN_VARIABLE_NAME, - objcConfiguration.getMinimumOsForPlatformType(PlatformType.TVOS).toString()); - break; - case WATCHOS: - // TODO(bazel-team): Use the minimum OS version derived from the flag as is done for the - // other platform types. - builder.addVariable( - VERSION_MIN_VARIABLE_NAME, - appleConfiguration.getSdkVersionForPlatform(platform).toString()); - break; - default: - throw new IllegalArgumentException("Unhandled platform: " + platform); - } + builder.addVariable(VERSION_MIN_VARIABLE_NAME, + appleConfiguration.getMinimumOsForPlatformType(platform.getType()).toString()); } private void addArchiveVariables(CcToolchainFeatures.Variables.Builder builder) { diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingTargetFactory.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingTargetFactory.java index 54ba369ca0..5af53b3587 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingTargetFactory.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingTargetFactory.java @@ -125,7 +125,8 @@ public abstract class ReleaseBundlingTargetFactory implements RuleConfiguredTarg * configuration). */ protected DottedVersion bundleMinimumOsVersion(RuleContext ruleContext) { - return ObjcRuleClasses.objcConfiguration(ruleContext).getMinimumOs(); + return ruleContext.getFragment(AppleConfiguration.class) + .getMinimumOsForPlatformType(PlatformType.IOS); } /** diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/Watch2ExtensionSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/Watch2ExtensionSupport.java index a0aa241320..12c0819451 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/Watch2ExtensionSupport.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/Watch2ExtensionSupport.java @@ -37,11 +37,9 @@ import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.rules.apple.AppleConfiguration; -import com.google.devtools.build.lib.rules.apple.Platform; import com.google.devtools.build.lib.rules.apple.Platform.PlatformType; import com.google.devtools.build.lib.rules.objc.ReleaseBundlingSupport.LinkedBinary; import com.google.devtools.build.lib.syntax.Type; - import javax.annotation.Nullable; /** @@ -112,7 +110,6 @@ public class Watch2ExtensionSupport { } AppleConfiguration appleConfiguration = ruleContext.getFragment(AppleConfiguration.class); - Platform appPlatform = appleConfiguration.getMultiArchPlatform(PlatformType.WATCHOS); ReleaseBundlingSupport releaseBundlingSupport = new ReleaseBundlingSupport( @@ -121,7 +118,7 @@ public class Watch2ExtensionSupport { LinkedBinary.DEPENDENCIES_ONLY, ReleaseBundlingSupport.EXTENSION_BUNDLE_DIR_FORMAT, bundleName, - appleConfiguration.getSdkVersionForPlatform(appPlatform), + appleConfiguration.getMinimumOsForPlatformType(PlatformType.WATCHOS), releaseBundling.build(), appleConfiguration.getMultiArchPlatform(PlatformType.WATCHOS)); diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/WatchApplicationSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/WatchApplicationSupport.java index cff817f088..a5b5992b9e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/WatchApplicationSupport.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/WatchApplicationSupport.java @@ -191,11 +191,10 @@ final class WatchApplicationSupport { PlatformType appPlatformType = watchOSVersion == WatchOSVersion.OS1 ? PlatformType.IOS : PlatformType.WATCHOS; - Platform appPlatform = appleConfiguration.getMultiArchPlatform(appPlatformType); DottedVersion minimumOsVersion = appPlatformType == PlatformType.IOS ? WatchUtils.determineMinimumIosVersion( - ObjcRuleClasses.objcConfiguration(ruleContext).getMinimumOs()) - : appleConfiguration.getSdkVersionForPlatform(appPlatform); + appleConfiguration.getMinimumOsForPlatformType(PlatformType.IOS)) + : appleConfiguration.getMinimumOsForPlatformType(PlatformType.WATCHOS); ReleaseBundlingSupport releaseBundlingSupport = new ReleaseBundlingSupport( diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/WatchExtensionSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/WatchExtensionSupport.java index 9de8689085..d988343f44 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/WatchExtensionSupport.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/WatchExtensionSupport.java @@ -143,7 +143,7 @@ public class WatchExtensionSupport { ReleaseBundlingSupport.EXTENSION_BUNDLE_DIR_FORMAT, bundleName, WatchUtils.determineMinimumIosVersion( - ObjcRuleClasses.objcConfiguration(ruleContext).getMinimumOs()), + appleConfiguration.getMinimumOsForPlatformType(PlatformType.IOS)), releaseBundling.build(), appleConfiguration.getMultiArchPlatform(PlatformType.IOS)); diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/WatchUtils.java b/src/main/java/com/google/devtools/build/lib/rules/objc/WatchUtils.java index 228445f443..f0df7f5ab8 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/WatchUtils.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/WatchUtils.java @@ -193,7 +193,8 @@ final class WatchUtils { XcodeprojBuildSetting.newBuilder() .setName("IPHONEOS_DEPLOYMENT_TARGET") .setValue(determineMinimumIosVersion( - ObjcRuleClasses.objcConfiguration(ruleContext).getMinimumOs()).toString()) + ruleContext.getFragment(AppleConfiguration.class) + .getMinimumOsForPlatformType(PlatformType.IOS)).toString()) .build()); return xcodeSettings.build(); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/XcodeSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/XcodeSupport.java index d179d75f95..9d75d1168e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/XcodeSupport.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/XcodeSupport.java @@ -30,11 +30,11 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.packages.ImplicitOutputsFunction.SafeImplicitOutputsFunction; import com.google.devtools.build.lib.rules.apple.AppleConfiguration; import com.google.devtools.build.lib.rules.apple.AppleConfiguration.ConfigurationDistinguisher; +import com.google.devtools.build.lib.rules.apple.Platform.PlatformType; import com.google.devtools.build.lib.rules.objc.XcodeProvider.Builder; import com.google.devtools.build.lib.rules.objc.XcodeProvider.Project; import com.google.devtools.build.xcode.xcodegen.proto.XcodeGenProtos; import com.google.devtools.build.xcode.xcodegen.proto.XcodeGenProtos.XcodeprojBuildSetting; - import java.io.InputStream; import java.util.List; @@ -273,7 +273,7 @@ public final class XcodeSupport { this.workspaceRoot = objcConfiguration.getXcodeWorkspaceRoot(); this.appleCpus = appleConfiguration.getMultiArchitectures( appleConfiguration.getSingleArchPlatform().getType()); - this.minimumOs = objcConfiguration.getMinimumOs().toString(); + this.minimumOs = appleConfiguration.getMinimumOsForPlatformType(PlatformType.IOS).toString(); this.generateDebugSymbols = objcConfiguration.generateDsym(); } |