diff options
Diffstat (limited to 'src/main/java')
7 files changed, 89 insertions, 48 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java index 3f0c4c20c8..612d2b3e3a 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java +++ b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java @@ -44,8 +44,8 @@ public class AppleCommandLineOptions extends FragmentOptions { category = "build", converter = DottedVersionConverter.class, help = - "If specified, uses xcode of the given version for relevant build actions. " - + "If unspecified, uses the executor default version of xcode." + "If specified, uses Xcode of the given version for relevant build actions. " + + "If unspecified, uses the executor default version of Xcode." ) // TODO(bazel-team): This should be of String type, to allow referencing an alias based // on an xcode_config target. @@ -65,7 +65,7 @@ public class AppleCommandLineOptions extends FragmentOptions { defaultValue = "null", converter = DottedVersionConverter.class, category = "build", - help = "Specifies the version of the WatchOS SDK to use to build WatchOS applications." + help = "Specifies the version of the watchOS SDK to use to build watchOS applications." ) public DottedVersion watchOsSdkVersion; @@ -74,18 +74,18 @@ public class AppleCommandLineOptions extends FragmentOptions { defaultValue = "null", converter = DottedVersionConverter.class, category = "build", - help = "Specifies the version of the AppleTVOS SDK to use to build AppleTVOS applications." + help = "Specifies the version of the tvOS SDK to use to build tvOS applications." ) public DottedVersion tvOsSdkVersion; @Option( - name = "macosx_sdk_version", + name = "macos_sdk_version", defaultValue = "null", converter = DottedVersionConverter.class, category = "build", - help = "Specifies the version of the Mac OS X SDK to use to build Mac OS X applications." + help = "Specifies the version of the macOS SDK to use to build macOS applications." ) - public DottedVersion macOsXSdkVersion; + public DottedVersion macOsSdkVersion; @Option( name = "ios_minimum_os", @@ -114,9 +114,18 @@ public class AppleCommandLineOptions extends FragmentOptions { ) public DottedVersion tvosMinimumOs; + @Option( + name = "macos_minimum_os", + defaultValue = "null", + category = "flags", + converter = DottedVersionConverter.class, + help = "Minimum compatible macOS version for targets." + ) + public DottedVersion macosMinimumOs; + @VisibleForTesting public static final String DEFAULT_IOS_SDK_VERSION = "8.4"; @VisibleForTesting public static final String DEFAULT_WATCHOS_SDK_VERSION = "2.0"; - @VisibleForTesting public static final String DEFAULT_MACOSX_SDK_VERSION = "10.10"; + @VisibleForTesting public static final String DEFAULT_MACOS_SDK_VERSION = "10.10"; @VisibleForTesting public static final String DEFAULT_TVOS_SDK_VERSION = "9.0"; @VisibleForTesting static final String DEFAULT_IOS_CPU = "x86_64"; @@ -130,6 +139,11 @@ public class AppleCommandLineOptions extends FragmentOptions { */ public static final String DEFAULT_TVOS_CPU = "x86_64"; + /** + * The default macOS CPU value. + */ + public static final String DEFAULT_MACOS_CPU = "x86_64"; + @Option(name = "ios_cpu", defaultValue = DEFAULT_IOS_CPU, category = "build", @@ -197,6 +211,13 @@ public class AppleCommandLineOptions extends FragmentOptions { help = "Comma-separated list of architectures for which to build Apple tvOS binaries.") public List<String> tvosCpus; + @Option(name = "macos_cpus", + converter = CommaSeparatedOptionListConverter.class, + defaultValue = DEFAULT_MACOS_CPU, + category = "flags", + help = "Comma-separated list of architectures for which to build Apple macOS binaries.") + public List<String> macosCpus; + @Option(name = "default_ios_provisioning_profile", defaultValue = "", category = "undocumented", @@ -209,8 +230,8 @@ public class AppleCommandLineOptions extends FragmentOptions { category = "undocumented", converter = LabelConverter.class, help = - "The label of the xcode_config rule to be used for selecting the xcode version " - + "in the build configuration" + "The label of the xcode_config rule to be used for selecting the Xcode version " + + "in the build configuration." ) public Label xcodeVersionConfig; @@ -351,7 +372,7 @@ public class AppleCommandLineOptions extends FragmentOptions { host.iosSdkVersion = iosSdkVersion; host.watchOsSdkVersion = watchOsSdkVersion; host.tvOsSdkVersion = tvOsSdkVersion; - host.macOsXSdkVersion = macOsXSdkVersion; + host.macOsSdkVersion = macOsSdkVersion; host.appleBitcodeMode = appleBitcodeMode; return host; diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java index 86620b4f2d..e074d2096e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java +++ b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java @@ -103,7 +103,8 @@ public class AppleConfiguration extends BuildConfiguration.Fragment { private final DottedVersion watchosMinimumOs; private final DottedVersion tvosSdkVersion; private final DottedVersion tvosMinimumOs; - private final DottedVersion macosXSdkVersion; + private final DottedVersion macosSdkVersion; + private final DottedVersion macosMinimumOs; private final String iosCpu; private final String appleSplitCpu; private final PlatformType applePlatformType; @@ -111,6 +112,7 @@ public class AppleConfiguration extends BuildConfiguration.Fragment { private final ImmutableList<String> iosMultiCpus; private final ImmutableList<String> watchosCpus; private final ImmutableList<String> tvosCpus; + private final ImmutableList<String> macosCpus; private final AppleBitcodeMode bitcodeMode; private final Label xcodeConfigLabel; private final boolean enableAppleCrosstool; @@ -124,7 +126,8 @@ public class AppleConfiguration extends BuildConfiguration.Fragment { DottedVersion watchosMinimumOs, DottedVersion tvosSdkVersion, DottedVersion tvosMinimumOs, - DottedVersion macosXSdkVersion) { + DottedVersion macosSdkVersion, + DottedVersion macosMinimumOs) { this.iosSdkVersion = Preconditions.checkNotNull(iosSdkVersion, "iosSdkVersion"); this.iosMinimumOs = Preconditions.checkNotNull(appleOptions.iosMinimumOs, "iosMinimumOs"); this.watchosSdkVersion = @@ -135,9 +138,9 @@ public class AppleConfiguration extends BuildConfiguration.Fragment { Preconditions.checkNotNull(tvosSdkVersion, "tvOsSdkVersion"); this.tvosMinimumOs = Preconditions.checkNotNull(tvosMinimumOs, "tvOsMinimumOs"); - - this.macosXSdkVersion = - Preconditions.checkNotNull(macosXSdkVersion, "macOsXSdkVersion"); + this.macosSdkVersion = + Preconditions.checkNotNull(macosSdkVersion, "macOsSdkVersion"); + this.macosMinimumOs = Preconditions.checkNotNull(macosMinimumOs, "macOsMinimumOs"); this.xcodeVersion = xcodeVersion; this.iosCpu = Preconditions.checkNotNull(appleOptions.iosCpu, "iosCpu"); @@ -153,6 +156,9 @@ public class AppleConfiguration extends BuildConfiguration.Fragment { this.tvosCpus = (appleOptions.tvosCpus == null || appleOptions.tvosCpus.isEmpty()) ? ImmutableList.of(AppleCommandLineOptions.DEFAULT_TVOS_CPU) : ImmutableList.copyOf(appleOptions.tvosCpus); + this.macosCpus = (appleOptions.macosCpus == null || appleOptions.macosCpus.isEmpty()) + ? ImmutableList.of(AppleCommandLineOptions.DEFAULT_MACOS_CPU) + : ImmutableList.copyOf(appleOptions.macosCpus); this.bitcodeMode = appleOptions.appleBitcodeMode; this.xcodeConfigLabel = Preconditions.checkNotNull(appleOptions.xcodeVersionConfig, "xcodeConfigLabel"); @@ -185,6 +191,8 @@ public class AppleConfiguration extends BuildConfiguration.Fragment { return tvosMinimumOs; case WATCHOS: return watchosMinimumOs; + case MACOS: + return macosMinimumOs; default: throw new IllegalArgumentException("Unhandled platform: " + platformType); } @@ -217,8 +225,8 @@ public class AppleConfiguration extends BuildConfiguration.Fragment { case WATCHOS_DEVICE: case WATCHOS_SIMULATOR: return watchosSdkVersion; - case MACOS_X: - return macosXSdkVersion; + case MACOS: + return macosSdkVersion; } throw new AssertionError(); @@ -344,7 +352,8 @@ public class AppleConfiguration extends BuildConfiguration.Fragment { return watchosCpus.get(0); case TVOS: return tvosCpus.get(0); - // TODO(cparsons): Handle all platform types. + case MACOS: + return macosCpus.get(0); default: throw new IllegalArgumentException("Unhandled platform type " + applePlatformType); } @@ -388,6 +397,8 @@ public class AppleConfiguration extends BuildConfiguration.Fragment { return watchosCpus; case TVOS: return tvosCpus; + case MACOS: + return macosCpus; default: throw new IllegalArgumentException("Unhandled platform type " + platformType); } @@ -446,6 +457,8 @@ public class AppleConfiguration extends BuildConfiguration.Fragment { } } return Platform.TVOS_SIMULATOR; + case MACOS: + return Platform.MACOS; default: throw new IllegalArgumentException("Unsupported platform type " + platformType); } @@ -588,7 +601,7 @@ public class AppleConfiguration extends BuildConfiguration.Fragment { .put("ios_sdk_version", iosSdkVersion) .put("tvos_sdk_version", tvosSdkVersion) .put("watchos_sdk_version", watchosSdkVersion) - .put("macosx_sdk_version", macosXSdkVersion) + .put("macos_sdk_version", macosSdkVersion) .build(); } @@ -614,12 +627,14 @@ public class AppleConfiguration extends BuildConfiguration.Fragment { ? appleOptions.tvOsSdkVersion : xcodeVersionProperties.getDefaultTvosSdkVersion(); DottedVersion tvosMinimumOsVersion = (appleOptions.tvosMinimumOs != null) ? appleOptions.tvosMinimumOs : tvosSdkVersion; - DottedVersion macosxSdkVersion = (appleOptions.macOsXSdkVersion != null) - ? appleOptions.macOsXSdkVersion : xcodeVersionProperties.getDefaultMacosxSdkVersion(); + DottedVersion macosSdkVersion = (appleOptions.macOsSdkVersion != null) + ? appleOptions.macOsSdkVersion : xcodeVersionProperties.getDefaultMacosSdkVersion(); + DottedVersion macosMinimumOsVersion = (appleOptions.macosMinimumOs != null) + ? appleOptions.macosMinimumOs : macosSdkVersion; AppleConfiguration configuration = new AppleConfiguration(appleOptions, xcodeVersionProperties.getXcodeVersion().orNull(), iosSdkVersion, watchosSdkVersion, watchosMinimumOsVersion, - tvosSdkVersion, tvosMinimumOsVersion, macosxSdkVersion); + tvosSdkVersion, tvosMinimumOsVersion, macosSdkVersion, macosMinimumOsVersion); validate(configuration); return configuration; diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleToolchain.java b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleToolchain.java index 55a82c9611..ceb91debed 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleToolchain.java +++ b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleToolchain.java @@ -135,7 +135,7 @@ public class AppleToolchain { relativePath = DEVELOPER_FRAMEWORK_PATH; } break; - case MACOS_X: + case MACOS: relativePath = DEVELOPER_FRAMEWORK_PATH; break; case WATCHOS_DEVICE: diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/Platform.java b/src/main/java/com/google/devtools/build/lib/rules/apple/Platform.java index 691a1f3823..a76594c8ca 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/apple/Platform.java +++ b/src/main/java/com/google/devtools/build/lib/rules/apple/Platform.java @@ -36,7 +36,7 @@ public enum Platform { IOS_DEVICE("ios_device", "iPhoneOS", PlatformType.IOS, true), IOS_SIMULATOR("ios_simulator", "iPhoneSimulator", PlatformType.IOS, false), - MACOS_X("macos_x", "MacOSX", PlatformType.MACOSX, true), + MACOS("macos", "MacOSX", PlatformType.MACOS, true), TVOS_DEVICE("tvos_device", "AppleTVOS", PlatformType.TVOS, true), TVOS_SIMULATOR("tvos_simulator", "AppleTVSimulator", PlatformType.TVOS, false), WATCHOS_DEVICE("watchos_device", "WatchOS", PlatformType.WATCHOS, true), @@ -54,7 +54,7 @@ public enum Platform { ImmutableSet.of("tvos_x86_64"); private static final Set<String> TVOS_DEVICE_TARGET_CPUS = ImmutableSet.of("tvos_arm64"); - private static final Set<String> MACOSX_TARGET_CPUS = + private static final Set<String> MACOS_TARGET_CPUS = ImmutableSet.of("darwin_x86_64"); private final String skylarkKey; @@ -125,8 +125,8 @@ public enum Platform { return TVOS_SIMULATOR; } else if (TVOS_DEVICE_TARGET_CPUS.contains(targetCpu)) { return TVOS_DEVICE; - } else if (MACOSX_TARGET_CPUS.contains(targetCpu)) { - return MACOS_X; + } else if (MACOS_TARGET_CPUS.contains(targetCpu)) { + return MACOS; } else { return null; } @@ -140,7 +140,12 @@ public enum Platform { * @throws IllegalArgumentException if there is no valid apple platform for the given target cpu */ public static Platform forTarget(PlatformType platformType, String arch) { - return forTargetCpu(String.format("%s_%s", platformType.toString(), arch)); + switch (platformType) { + case MACOS: + return forTargetCpu(String.format("darwin_%s", arch)); + default: + return forTargetCpu(String.format("%s_%s", platformType.toString(), arch)); + } } /** @@ -191,7 +196,7 @@ public enum Platform { IOS("ios"), WATCHOS("watchos"), TVOS("tvos"), - MACOSX("macosx"); + MACOS("macos"); /** * The key used to access the enum value as a field in the Skylark apple_common.platform_type diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeVersionProperties.java b/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeVersionProperties.java index 438eb404b9..03afc08fd5 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeVersionProperties.java +++ b/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeVersionProperties.java @@ -38,14 +38,14 @@ public class XcodeVersionProperties extends SkylarkClassObject implements Transi @VisibleForTesting public static final String DEFAULT_IOS_SDK_VERSION = "8.4"; @VisibleForTesting public static final String DEFAULT_WATCHOS_SDK_VERSION = "2.0"; - @VisibleForTesting public static final String DEFAULT_MACOSX_SDK_VERSION = "10.10"; + @VisibleForTesting public static final String DEFAULT_MACOS_SDK_VERSION = "10.10"; @VisibleForTesting public static final String DEFAULT_TVOS_SDK_VERSION = "9.0"; private final Optional<DottedVersion> xcodeVersion; private final DottedVersion defaultIosSdkVersion; private final DottedVersion defaultWatchosSdkVersion; private final DottedVersion defaultTvosSdkVersion; - private final DottedVersion defaultMacosxSdkVersion; + private final DottedVersion defaultMacosSdkVersion; /** * Creates and returns a tuple representing no known xcode property information (defaults are used @@ -76,7 +76,7 @@ public class XcodeVersionProperties extends SkylarkClassObject implements Transi @Nullable String defaultIosSdkVersion, @Nullable String defaultWatchosSdkVersion, @Nullable String defaultTvosSdkVersion, - @Nullable String defaultMacosxSdkVersion) { + @Nullable String defaultMacosSdkVersion) { super( SKYLARK_CONSTRUCTOR, getSkylarkFields( @@ -84,7 +84,7 @@ public class XcodeVersionProperties extends SkylarkClassObject implements Transi defaultIosSdkVersion, defaultWatchosSdkVersion, defaultTvosSdkVersion, - defaultMacosxSdkVersion)); + defaultMacosSdkVersion)); this.xcodeVersion = Optional.fromNullable(xcodeVersion); this.defaultIosSdkVersion = (Strings.isNullOrEmpty(defaultIosSdkVersion)) @@ -98,10 +98,10 @@ public class XcodeVersionProperties extends SkylarkClassObject implements Transi (Strings.isNullOrEmpty(defaultTvosSdkVersion)) ? DottedVersion.fromString(DEFAULT_TVOS_SDK_VERSION) : DottedVersion.fromString(defaultTvosSdkVersion); - this.defaultMacosxSdkVersion = - (Strings.isNullOrEmpty(defaultMacosxSdkVersion)) - ? DottedVersion.fromString(DEFAULT_MACOSX_SDK_VERSION) - : DottedVersion.fromString(defaultMacosxSdkVersion); + this.defaultMacosSdkVersion = + (Strings.isNullOrEmpty(defaultMacosSdkVersion)) + ? DottedVersion.fromString(DEFAULT_MACOS_SDK_VERSION) + : DottedVersion.fromString(defaultMacosSdkVersion); } /** Returns the xcode version, or {@link Optional#absent} if the xcode version is unknown. */ @@ -125,8 +125,8 @@ public class XcodeVersionProperties extends SkylarkClassObject implements Transi } /** Returns the default macosx sdk version to use if this xcode version is in use. */ - public DottedVersion getDefaultMacosxSdkVersion() { - return defaultMacosxSdkVersion; + public DottedVersion getDefaultMacosSdkVersion() { + return defaultMacosSdkVersion; } private static Map<String, Object> getSkylarkFields( @@ -134,7 +134,7 @@ public class XcodeVersionProperties extends SkylarkClassObject implements Transi @Nullable String defaultIosSdkVersion, @Nullable String defaultWatchosSdkVersion, @Nullable String defaultTvosSdkVersion, - @Nullable String defaultMacosxSdkVersion) { + @Nullable String defaultMacosSdkVersion) { ImmutableMap.Builder<String, Object> skylarkFields = new ImmutableMap.Builder<>(); if (xcodeVersion != null) { skylarkFields.put("xcode_version", xcodeVersion.toString()); @@ -152,8 +152,8 @@ public class XcodeVersionProperties extends SkylarkClassObject implements Transi skylarkFields.put("default_tvos_sdk_version", defaultTvosSdkVersion); } - if (defaultMacosxSdkVersion != null) { - skylarkFields.put("default_macos_sdk_version", defaultMacosxSdkVersion); + if (defaultMacosSdkVersion != null) { + skylarkFields.put("default_macos_sdk_version", defaultMacosSdkVersion); } return skylarkFields.build(); diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/cpp/AppleCcToolchain.java b/src/main/java/com/google/devtools/build/lib/rules/apple/cpp/AppleCcToolchain.java index e7e6deb34d..4c1d991a15 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/apple/cpp/AppleCcToolchain.java +++ b/src/main/java/com/google/devtools/build/lib/rules/apple/cpp/AppleCcToolchain.java @@ -34,8 +34,8 @@ import java.util.Map; public class AppleCcToolchain extends CcToolchain { private static final String XCODE_VERSION_KEY = "xcode_version"; private static final String IOS_SDK_VERSION_KEY = "ios_sdk_version"; - private static final String MACOSX_SDK_VERSION_KEY = "macosx_sdk_version"; - private static final String TVOS_SDK_VERSION_KEY = "appletvos_sdk_version"; + private static final String MACOS_SDK_VERSION_KEY = "macos_sdk_version"; + private static final String TVOS_SDK_VERSION_KEY = "tvos_sdk_version"; private static final String WATCHOS_SDK_VERSION_KEY = "watchos_sdk_version"; public static final String SDK_DIR_KEY = "sdk_dir"; public static final String SDK_FRAMEWORK_DIR_KEY = "sdk_framework_dir"; @@ -74,8 +74,8 @@ public class AppleCcToolchain extends CcToolchain { appleConfiguration.getSdkVersionForPlatform(Platform.IOS_SIMULATOR) .toStringWithMinimumComponents(2)) .put( - MACOSX_SDK_VERSION_KEY, - appleConfiguration.getSdkVersionForPlatform(Platform.MACOS_X) + MACOS_SDK_VERSION_KEY, + appleConfiguration.getSdkVersionForPlatform(Platform.MACOS) .toStringWithMinimumComponents(2)) .put( TVOS_SDK_VERSION_KEY, 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 1f646539d4..37720cdb6a 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 @@ -81,7 +81,7 @@ public class AppleSkylarkCommon { @SkylarkCallable( name = "platform_type", doc = "Returns a struct containing fields corresponding to Apple platform types: 'ios', " - + "'watchos', 'tvos', and 'macosx'. These values can be passed to methods that expect a " + + "'watchos', 'tvos', and 'macos'. These values can be passed to methods that expect a " + "platform type, like the 'apple' configuration fragment's 'multi_arch_platform' " + "method. For example, ctx.fragments.apple.multi_arch_platform(apple_common." + "platform_type.ios).", |