diff options
author | 2016-10-03 22:12:28 +0000 | |
---|---|---|
committer | 2016-10-04 08:55:09 +0000 | |
commit | deeeb31f8ba0f196fbc9ca2a177d59d57ea50b32 (patch) | |
tree | 999abbd9c868be741495a0fc63a3ac77b7d31deb /src/main/java/com/google/devtools/build/lib/rules/apple | |
parent | 169e68f4f3fcc000cc4fedebf15a9ea9373784e4 (diff) |
Add a way to select non-default Xcode toolchain
* Adds a flag --xcode_toolchain which sets TOOLCHAINS env variable for xcrun.
* Updates swift_library to work with this flag when selecting Swift runtime location.
* By default the flag has a null value and is not set in env.
--
MOS_MIGRATED_REVID=135033093
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/apple')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java | 11 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java | 13 |
2 files changed, 24 insertions, 0 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 5d2830a049..3d71ca5ad8 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 @@ -227,6 +227,17 @@ public class AppleCommandLineOptions extends FragmentOptions { } } + @Option( + name = "xcode_toolchain", + defaultValue = "null", + category = "flags", + help = "The identifier of an Xcode toolchain to use for builds. Currently only the toolchains " + + "that ship with Xcode are supported. For example, in addition to the default toolchain" + + " Xcode 8 has 'com.apple.dt.toolchain.Swift_2_3' which can be used for building legacy" + + " Swift code." + ) + public String xcodeToolchain; + @Option(name = "apple_bitcode", converter = AppleBitcodeMode.Converter.class, // TODO(blaze-team): Default to embedded_markers when fully implemented. 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 59a6fc1403..e0d242703f 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 @@ -84,6 +84,7 @@ public class AppleConfiguration extends BuildConfiguration.Fragment { private final ImmutableList<String> tvosCpus; private final AppleBitcodeMode bitcodeMode; private final Label xcodeConfigLabel; + @Nullable private final String xcodeToolchain; @Nullable private final Label defaultProvisioningProfileLabel; private final boolean disableNativeSwiftRules; @@ -127,6 +128,7 @@ public class AppleConfiguration extends BuildConfiguration.Fragment { this.xcodeConfigLabel = Preconditions.checkNotNull(appleOptions.xcodeVersionConfig, "xcodeConfigLabel"); this.defaultProvisioningProfileLabel = appleOptions.defaultProvisioningProfile; + this.xcodeToolchain = appleOptions.xcodeToolchain; this.disableNativeSwiftRules = appleOptions.disableNativeSwiftRules; } @@ -519,6 +521,17 @@ public class AppleConfiguration extends BuildConfiguration.Fragment { return Joiner.on('-').join(components); } + /** Returns the identifier for an Xcode toolchain to use with tools. */ + @SkylarkCallable( + name = "xcode_toolchain", + doc = "Identifier for the custom Xcode toolchain to use in build or None if not specified", + allowReturnNones = true, + structField = true + ) + public String getXcodeToolchain() { + return xcodeToolchain; + } + /** * Whether the native Swift support should be disabled. Used to deprecate said functionality. */ |